개념
진법은 한 자리에 부터 까지의 값을 사용합니다. 오른쪽부터 자릿값이 순서로 커집니다. 이상의 자릿값에는 A, B 등의 문자를 사용합니다.
예를 들어 진수 1011은 각 자릿값을 더한 을 뜻합니다. 진법 변환은 같은 수의 자릿값 표현을 바꾸는 과정입니다.
다른 진법에서 10진법으로
왼쪽부터 현재 값에 밑을 곱하고 다음 자릿값을 더합니다. 진수 1011은 순서로 누적되어 진수 이 됩니다.
왼쪽부터 읽으며 진법을 곱하는 이유는 기존 숫자들의 자리가 한 칸씩 올라가기 때문입니다. 진수 10까지 읽은 값은 이고, 다음 자리 1을 붙이면 가 됩니다. 한 자리 더 1을 붙이면 입니다.
10진법에서 다른 진법으로
수를 밑으로 나누고 나머지를 기록합니다. 나머지는 가장 낮은 자리부터 얻어지므로 역순으로 읽습니다. 을 로 반복해서 나눈 나머지는 이며 결과는 1011입니다. 값이 이면 표현도 0입니다.
진수 은 진수 11010, 진수 32, 진수 1A입니다. 서로 다른 두 진법 사이의 변환은 값을 누적한 뒤 새 진법으로 표현합니다.
에서 나머지 은 부터 까지이므로 진법의 마지막 자리입니다. 몫 는 그 마지막 자리를 제거한 값입니다. 이 나눗셈을 반복하면 낮은 자리부터 하나씩 구할 수 있습니다.
| 나누기 전 값 | 로 나눈 몫 | 나머지 |
|---|---|---|
나머지는 마지막 자리부터 나왔으므로 표의 아래에서 위로 읽은 1011이 결과입니다.
복잡도
입력 자릿수를 , 출력 자릿수를 라고 합니다.
| 연산 | 시간복잡도 | 공간복잡도 |
|---|---|---|
| 진법 변환 | 출력 저장 |
예제
문제
소문자로 표현된 진수를 진수로 변환하고, 주어진 진수를 소문자로 표현된 진수로 변환하여라. a는 , b는 , , z는 를 나타낸다.
입력
첫째 줄에 소문자로 이루어진 진수 가 주어진다. 길이는 이상 이하이며, 나타내는 값은 이상 이하이다.
둘째 줄에 진수 이 주어진다. 이다.
출력
첫째 줄에 를 진수로 변환한 값을 출력한다. 둘째 줄에 을 소문자로 표현된 진수로 변환한 결과를 출력한다. 값이 이면 a를 출력하고, 그 외에는 맨 앞에 a를 붙이지 않는다.