관리 메뉴

100세까지 코딩

[백준] 11005번 진법 변환2 (파이썬) 본문

코딩테스트/파이썬

[백준] 11005번 진법 변환2 (파이썬)

100세까지 코딩 2024. 1. 15. 13:57
문제

나의 생각
  • N값에 N을 B로 나눈 몫을 저장한다.
  • 나머지는 list에 넣는다.
  • 몫이 0이 되면 멈춘다.
  • list를 reverse()시키면 진법에 해당하는 표현이 나온다.
  • 10이 넘어가면 chr(ord('A') - 10 + list[i])를 해주면 A = 10이고 알파벳 대문자로 치환된다.
나의 풀이
N, B = map(int, input().split())
total = 0
list_a = list()

while N > 0:
    list_a.append(N % B)
    N = N // B
list_a.reverse()

for i in range(len(list_a)):
    if list_a[i] >= 10:
        print(chr(ord('A') - 10 + list_a[i]), end="")
    else:
        print(list_a[i], end="")
나의 풀이 2 (join 함수)
N, B = map(int, input().split())
total = 0
list_a = list()

while N > 0:
    list_a.append(N % B)
    N = N // B
list_a.reverse()

for i in range(len(list_a)):
    if list_a[i] >= 10:
        list_a[i] = chr(ord('A') - 10 + list_a[i])
print("".join(str(e) for e in list_a))
참고
1. reverse() : list를 반대로 뒤집어준다.
2. chr() : 정수 값을 유니코드 문자로 변환해준다.  ex) chr(65) : A
3. ord() : 문자를 유니코드 정수로 변환해준다. ex) ord('A') : 65
4. "".join() : list의 요소들을 string형태로 붙여 반환한다. 단, 요소에 int 형태가 있으면 오류 발생.
5. str(): 정수나 실수를 문자열 형태로 바꿔준다.
참고2

- 몫이 0이 될때까지 나누고, 나머지들을 역순으로 보면 해당 진법 표현법이다.