본문 바로가기

algorithm/백준알고리즘

[백준알고리즘] 11005번: 진법 변환 2 -Python

728x90

[백준알고리즘] 11005번: 진법 변환 2 -Python

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

 

11005번: 진법 변환 2

10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다. A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35

www.acmicpc.net

이전에 ord()를 사용해서 아스키코드를 숫자로 변환해준 2745번 진법 변환과 달리 10진수를 해당 진법에 맞게 변환해줘야 한다. 

 

따라서 여기서는 chr()을 사용했다. str()는 인자값을 그대로 문자열로 바꾸는 것이지만 chr()의 경우 주어진 정수 값에 맞는 아스키 값을 출력하게 된다. 즉 chr(65) = 'A' 가 된다.

import sys

before, base = map(int, sys.stdin.readline().split())
after = []

while before // base:
    after.append(before%base)
    before //= base

if before:
    after.append(before)

after =list(map((lambda x:chr(x+55) if x > 9 else str(x)), after))

sys.stdout.write(''.join(after[::-1]))

 

잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다

728x90