코딩테스트 대비/백준 알고리즘

BOJ - 11005 진법 변환 2

JellyApple 2024. 4. 4. 23:52

https://www.acmicpc.net/problem/11005

 

11005번: 진법 변환 2

10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를

www.acmicpc.net

앞서 풀었던 진법 변환 (2745번)에 이어 두 번째 진법 변환 문제다. B진법인 수를 10진법으로 출력했더라면 이번 문제는 그 반대로 10진법 수 N을 B진법으로 출력하는 문제다. 

 

이번에도 진법 변환 문제처럼 N,B를 입력받고 그 다음 0부터 Z까지 포함된 리스트를 만들어주었다.

풀이 과정은 아래와 같다.

예를 들어 372 라는 10진수 숫자를 생각해보면 10으로 나누면 몫은 37이고 나머지는 2가 된다. 또 다시 37를 10으로 나누면 몫은 3이되고 나머지는 7이 된다. 또 7을 10으로 나누면 7이 되고 그래서 결론적으론 277이 된다. 우리는 가장 맨 끝자리부터 계산했기 때문에 진법 변환 1과 마찬가지로 역으로 출력해주면 된다. 

 

1) N,B 를 첫 줄에 받아 줌 -> map(int  , input().split() ) 

2) 0부터 Z까지 들어간 배열을 선언해줌 -> tmp = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"

3) N이 0이 아닐 때 까지 계속 반복

ans += str(tmp[n%b] ) 

 

N,B = map(int,input().split())
tmp = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
ans = ''

while N != 0:
    ans += str(tmp[N%B])
    N //=B
print(ans[::-1])