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>를 호출해야 한다.