문제

10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오.

10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.

A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35

 

 

조건 및 입출력

- 첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36) N은 10억보다 작거나 같은 자연수이다.

- 첫째 줄에 10진법 수 N을 B진법으로 출력한다.

- 시간 제한: 0.5초 이내 / 메모리 제한: 256MB

 

 

코드 (Python 3)
trans_list=[];
num,trans=map(int,input().split());

while(num>0):
    trans_list.append(num%trans);
    num//=trans;

trans_list=trans_list[::-1];
for i in trans_list:
    if(i<10): #10보다 작은 경우, 그 수를 출력
        print(i,end='');
    else: #10보다 큰 경우, ASCII CODE에 따라 출력
        print(chr(65+i-10),end='');​

 

 


여담

오랜만에 Python으로 문제를 풀었다.

Python으로 문제를 푸니, 코드가 정말 짧게 끝이 난다.

 

 

코드가 이상하거나 이해되지 않는 부분이 있다면 댓글 남겨주세요!

+ 더 좋은 풀이 방법이 있다면 알려주세요 :)

+ Recent posts