21275 폰 호석만 문제
이번 문제는 진수 변환이 섞여 있어서, 각 문자와 숫자를 key와 value로 딕셔너리에 저장시켜 문제를 풀었다.
완성 코드 :
a,b = map(str,input().split())
dictt = dict()
cnt = 0 #count
result = [0, 0]
for i in range(0, 10): # 1부터 dictt에 넣는다
dictt[str(i)] = i
for i in range(26): # a부터 dictt에 넣는다
dictt[chr(97+i)] = i+10
maxa = max(list(a)) #a에서 가장 큰 문자
maxb = max(list(b)) #b에서 가장 큰 문자
def translatee(string, notation): # 진수 변환
tmp = 0
for i in range(len(string)):
tmp += ((int(notation)**i) * dictt[string[-1-i]])
return tmp
for i in range(dictt[maxa]+1, 37):
for j in range(dictt[maxb]+1, 37):
if i == j:
continue
if translatee(a, i) == translatee(b, j):
if translatee(a, i) >= 2**63:
continue
result[0] = i
result[1] = j
cnt += 1
if cnt == 0:
print("Impossible")
elif cnt > 1:
print("Multiple")
elif cnt == 1:
print(translatee(a, result[0]), result[0], result[1])
느낀 점 : 42서울에서 풀었던 문제(진법 변환과 테스트 케이스 통과)와 비슷한 점이 있어, 문제를 이해하는 데 시간은 좀 걸렸지만, 해결하였다.