[Baekjoon] 2745. 진법 변환

2024. 3. 1. 12:18·코딩테스트/Python
728x90
반응형

🔗 Problem Link

 

2745번: 진법 변환

B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 

www.acmicpc.net


❔Thinking

  • 문자열로 주어지는 숫자 N을 앞에서 부터 차례대로 B진법에 맞게 변환한다.
  • B진법은 각 자리 숫자에 B를 곱하여 계산한다.

💻Solution

import sys
input = sys.stdin.readline

N, B = map(str, input().split())
B = int(B)
N = list(N)[::-1]
number = 0
for idx in range(len(N)):
    if N[idx].isalpha():
        number += (B ** idx) * (ord(N[idx])-55)
    else:
        number += (B ** idx) * int(N[idx])
print(number)

🗝️keypoint

  1. 진법은 (X진법 ** 숫자의 인덱스 번호)에 각 자리 숫자를 곱해서 계산한다.
  2. ord()를 통해 유니코드에 해당하는 숫자로 변환하고, 55를 빼서 'A'가 10이 될 수 있도록 한다.
    1. '0123456789AB....'로 해당 문자열을 인덱스로 표현하는 방법도 있다.
  3. list(N)[::-1]을 통해 진법 계산이 편하도록 순서를 뒤집는다. (sort는 리스트 순서를 정렬하므로 사용할 수 없다)
저작자표시 (새창열림)

'코딩테스트 > Python' 카테고리의 다른 글

[Baekjoon] 24267. 알고리즘 수업 - 알고리즘의 수행 시간 6  (0) 2024.03.04
[Baekjoon] 2720. 세탁소 사장 동혁  (0) 2024.03.01
[LeetCode] 55. Jump Game  (1) 2023.12.04
[LeetCode] 189. Rotate Array  (1) 2023.11.28
[Baekjoon] 1167. 트리의 지름  (1) 2023.10.27
'코딩테스트/Python' 카테고리의 다른 글
  • [Baekjoon] 24267. 알고리즘 수업 - 알고리즘의 수행 시간 6
  • [Baekjoon] 2720. 세탁소 사장 동혁
  • [LeetCode] 55. Jump Game
  • [LeetCode] 189. Rotate Array
swwho
swwho
일상을 데이터화하다
  • swwho
    하루한장
    swwho
  • 전체
    오늘
    어제
    • 분류 전체보기 (188)
      • ML_DL (39)
        • MUJAKJUNG (무작정 시리즈) (18)
        • 딥러닝 공부하기 (21)
      • 데이터사이언스 (1)
        • EDA (1)
        • 데이터과학을 위한 통계 (0)
      • 데이터엔지니어링 (2)
      • 논문리뷰 (2)
        • Computer Vision (2)
      • Python 활용하기 (12)
      • 코딩테스트 (127)
        • Python (109)
        • MySQL (14)
      • Git (3)
      • MySQL 활용하기 (0)
      • 일상 이야기 (1)
  • 블로그 메뉴

    • 홈
    • 태그
  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
swwho
[Baekjoon] 2745. 진법 변환
상단으로

티스토리툴바