백준 문제 풀이 - 진법 변환 2745번

📜 문제 이해하기

B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오.
10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.
A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35

💡 문제 재정의

B진법 수 N을 10진법으로 출력해라

✏️ 계획 수립

각 자리수에 B의 자리수 인덱스의 승수를 곱하면 된다.
예시)
2진법: 011 -> 1 x 2^0 + 1 x 2^1 + 0 x 2^2
5진법: 324 -> 4 x 5^0 + 2 x 5^1 + 3 x 5^2

💻 계획 수행

if __name__ == '__main__':
    N, B = input().split()
    result = 0
    B = int(B)
    L = len(N)
    for i, n in enumerate(N):
        result += B ** (L - i - 1) * (ord(n) - 55) if n.isalpha() else B ** (L - i - 1) * int(n)

    print(result)

🤔 회고

시험이 끝나고 다시 1일 1백준 시작으로 처음에는 간단한 문제를 골랐다.
진법에 대한 개념을 제대로 이해하면 풀 수 있는 문제이다.

좋은 웹페이지 즐겨찾기