백준 문제 정리 21275번 - Python

1273 단어 2127521275

21275 폰 호석만 문제

문제 링크 : https://www.acmicpc.net/problem/21275

  1. 이번 문제는 진수 변환이 섞여 있어서, 각 문자와 숫자를 key와 value로 딕셔너리에 저장시켜 문제를 풀었다.

  2. 완성 코드 :

    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서울에서 풀었던 문제(진법 변환과 테스트 케이스 통과)와 비슷한 점이 있어, 문제를 이해하는 데 시간은 좀 걸렸지만, 해결하였다.

좋은 웹페이지 즐겨찾기