뭔가 느낌이 좋다...!
import sys
N, B = map(int, sys.stdin.readline().strip().split())
answer = ''
toAlpha = {'10': 'A', '11': 'B', '12':'C', '13':'D', '14':'E', '15':'F', '16':'G', '17':'H', '18':'I', '19':'J', '20':'K', '21':'L', '22':'M', '23':'N', '24':'O', '25':'P', '26':'Q', '27':'R', '28':'S', '29':'T', '30':'U', '31':'V', '32':'W', '33':'X', '34':'Y', '35':'Z'}
while N != 0:
answer += str(N%B) + '/'
N = N//B
answer = answer.split('/')
for i in range(len(answer)):
for j in toAlpha:
if answer[i] == j:
answer[i] = toAlpha[j]
print(''.join(answer).replace(' ', ''))
바보 같은 풀이 ... ^^
나누기를 해줬으면 반대로 나머지가 저장되니까 reverse를 해줘야 하는데 해주지 않았다 ㅎㅎ
import sys
N, B = map(int, sys.stdin.readline().strip().split())
answer = ''
toAlpha = {'10': 'A', '11': 'B', '12':'C', '13':'D', '14':'E', '15':'F', '16':'G', '17':'H', '18':'I', '19':'J', '20':'K', '21':'L', '22':'M', '23':'N', '24':'O', '25':'P', '26':'Q', '27':'R', '28':'S', '29':'T', '30':'U', '31':'V', '32':'W', '33':'X', '34':'Y', '35':'Z'}
while N != 0:
answer += str(N%B) + '/'
N = N//B
answer = answer.split('/')
for i in range(len(answer)):
for j in toAlpha:
if answer[i] == j:
answer[i] = toAlpha[j]
answer.reverse()
print(''.join(answer).replace(' ', ''))
그래서 reverse 한 줄을 추가했다. 결과는,
성공 ~!
일단 메인 아이디어는
10진법에서 n진법으로 바꾸는 방법
: (10진법 수) / n
➡️ 이때 나머지는 진법을 표현하는데 사용되고, 몫은 계속해서 n으로 나눠지게 됨
while N != 0:
answer += str(N%B) + '/'
N = N//B
answer = answer.split('/')
이 부분이 바로 그 부분이다. 여기서 포인트는 나머지를 먼저 추가하고 나눠야 한다는 것! 그런데 이때 나머지가 9보다 클 수 있기 때문에, 이를 A~Z의 알파벳으로 나타내주게 되는 것이다. 그래서 초반에 dictionary를 이용해 나타내주었다.
for i in range(len(answer)):
for j in toAlpha:
if answer[i] == j:
answer[i] = toAlpha[j]
answer.reverse()
print(''.join(answer).replace(' ', ''))
그리고 for문을 이용해 비교하면서 해당 숫자(정확히는 문자열)를 알파벳으로 바꿔주는 것이다.
전체적인 로직은 비슷하긴 한데, dictionary를 사용하지 않은 부분이 달라 한 번 들고 와봤다. 출처는 아래의 링크.
https://duwjdtn11.tistory.com/486
import sys
temp = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
N, B = map(int, sys.stdin.readline().strip().split())
answer = ''
while N != 0:
answer += str(temp[N%B])
N = N//B
print(answer[::-1])
해당 인덱스로 알파벳 찾기... 똑똑하다 똑똑해... 그리고 문자열 뒤집는 건 reverse 말고 [::-1]가 있다는 걸 기억해두자!!!