100세까지 코딩
[백준] 11005번 진법 변환2 (파이썬) 본문
문제
나의 생각
- 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이 될때까지 나누고, 나머지들을 역순으로 보면 해당 진법 표현법이다.
'코딩테스트 > 파이썬' 카테고리의 다른 글
[백준] 2231번 분해합 (파이썬) (0) | 2024.01.19 |
---|---|
[백준] 2869번 달팽이는 올라가고 싶다(파이썬) (0) | 2024.01.16 |
[백준] 2563번 색종이 (파이썬) (0) | 2024.01.14 |
[백준] 10798번 세로읽기 (파이썬) (0) | 2024.01.12 |
[백준] 2566번 최댓값(파이썬) (0) | 2024.01.11 |