[백준(python)] 21275번 : 폰 호석만

hodu·2022년 3월 4일
0

algorithm

목록 보기
6/27

파이썬 int()를 이용하면 매우 쉽게 풀 수 있었던 문제.
int(i,j)는 i라는 값을 j진수로 변환해준다.

문제를 잘 읽어보면 자리수가 0부터 z이하, 즉 0부터 35까지를 표현할 수 있다고 하는데 결국 36진수까지 표현하고 있다는 것을 알 수 있다.
ex) 0~9 -> 10진수, 0~1 -> 2진수, 0~35-> 36진수

그러면 A를 2부터 36까지 돌면서 진수로 표현할 수 있는 값을 가지고 B를 비교한다.
끝!


# 0. 입력받기
import sys
input = sys.stdin.readline
A, B = input().split()
x, a, b = 0, 0, 0 # 출력할 값
count = 0 # 조건에 맞는 값이 몇개인지 카운팅해주는 변수


# 1. A를 가지고 2부터 36진수 중 표현이 가능한 값을 찾음
for i in range(2, 37):
    try:
        a_temp = int(A, i)
    except:
        continue
    # 2. B를 가지고 2부터 36진수 중 표현이 가능한 값을 찾음
    for j in range(2, 37):
        try:
            b_temp = int(B, j)
            # 3. 진수 변환한 값들이 같을 떄
            if a_temp == b_temp:
                count += 1
                x = a_temp
                a = i
                b = j
        except:
            continue

# 4. 출력하기
if count == 1:
    print(x,a,b)
elif count == 0:
    print("Impossible")
else:
    print("Multiple")
profile
안녕 세계!

0개의 댓글