Koala - 5기/기초 알고리즘 스터디
[백준/c++] 2745번 진법변환
Suyun
2022. 2. 7. 01:48
문제
B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오.
10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.
A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35
입력
첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36)
B진법 수 N을 10진법으로 바꾸면, 항상 10억보다 작거나 같다.
출력
첫째 줄에 B진법 수 N을 10진법으로 출력한다.
예제 입력 1
ZZZZZ 36
예제 출력 1
60466175
[ 문제 분석 ]
진법이란 수를 셀 때 자릿수가 올라가는 단위를 기준으로 하는 셈법이다.
어떤 수를 n진법을 변환하려면 그 수를 0이 될 때까지 n으로 나누고, 그 나머지를 거꾸로 읽어 올라가면 된다.
[ 코드 ]
[ 문제 풀이 ]
변환할 수 n과, n를 b진법으로 변환할 b를 입력받는다.
변환할 수 n의 길이만큼 반복문을 실행하는데, 해당 char가 '0'~'9'인 경우와 'A'~'Z'인 경우로 나눠서 생각한다.
pow함수는 제곱을 나타내는 것으로, pow(a, b)는 a의 b제곱을 의미한다. 이 함수를 쓰기 위해서는 #include <cmath>를 호출해야 한다.