백준 파이썬 코딩테스트 (진법 변환)

2025. 8. 12. 23:25·코딩테스트/BaekJoon

백준 2745번 문제

진법 변환


문제

 


풀이

1.

우선 이 문제를 풀기위해서는 n진법에 대한 이해가 있어야 할 것 같다.

이는 추가로 글을 써보겠다.

 

아무튼 10진법을 결국은 n진법으로 변경을 하는 방식을 사용한다.

 

여기서 문제는 알파벳 인풋을 n진법으로의 변환인데 이는 생각을 해 봄직 하다.

 

왜냐면 진법은 최대 36진법 즉 0-9와 A-Z까지 를 이야기 한다.

즉 36진법이 아니면 Z를 표현할 수 없다는 의미다.

 

예시의 ZZZZZ는 3535353535이며 이를 변환하려면 각각 35를 변환한다.

즉 제일 우측 부터 35는 36진법의 1이니 35*1

2번째는 1의 자리 즉 36^1 의자리또한 1이다. 이는 35*36

이렇게 5번째 35까지 더하는 것이다.

 

이는 35 x (36^0) + ... 35 x (36^4) 를 하여 60,466,175가 나온 것이다.

 

우선은 최대치가 정해져 있다보니, 인풋을 주어진 진법으로 변환만 하면 된다.

 

우선 인풋을 2개로 받는다. 우선은 N과 B로 저장한다.

그 후, 진법 변환을 위하여 0-Z까지를 매개변수에 저장을 한다. 이러면 36진법의 Z는 35 즉 area 를 0-Z로 한다면 

Z를 find할때 35가 나오게 될 것이다. 이를 이용해서 숫자를 찾을 수 있다.

 

그리고 result와 N의 길이를 초기화한다.

반복문을 사용하여 N의 길이만큼 반복을 시키고,

맨 우측부터 계산을 해야하기 때문에, N에서 시작할때 N[length-1-i]로 반복해야한다.

 

그 후, result에 N의 area변환 숫자 와 (B의 i 제곱)을 += 시킨다.

 

 

>> 

area에서 서칭 방법은 index와 find가 존재했다.

find는 area에 원하는게 없으면 -1을 반환하지만, index는 없으면 에러가 뜬다.

 

사실 최대값이 지정되어있으니 문제가 될건 없지만, 오류를 방지하기위해 find보다는 index인 것 같다.

 

 


결과

import sys
N, B = sys.stdin.readline().strip().split()
B = int(B)

result = 0
length = len(N)
area = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"

for i in range(length):
    NN = N[length - 1 - i]
    convert = area.index(NN)
    result += convert * (B ** i)

print(result)

 

 

 

 

나중에 문제를 푸는것을 확인해보니, 그냥 파이썬 내장을 써도 되는 문제였다.

 

import sys
N, B = sys.stdin.readliner().strip().split()
print(int(N, int(B))

 

int(A,B)를 넣게 되면, A의 값을 B진법으로 변환해준다는 것이다.

 

 

역시... 내장 기능을 잘 알아야겠다 ㅎㅎ...

 

 

Coding_Test/백준/Bronze/2745. 진법 변환 at main · K-MarkLee/Coding_Test · GitHub

 

Coding_Test/백준/Bronze/2745. 진법 변환 at main · K-MarkLee/Coding_Test

This is an auto push repository for Baekjoon Online Judge created with [BaekjoonHub](https://github.com/BaekjoonHub/BaekjoonHub). - K-MarkLee/Coding_Test

github.com

 

저작자표시 비영리 변경금지 (새창열림)

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

백준 파이썬 코딩테스트 (세탁소 사장 동혁)  (1) 2025.08.18
백준 파이썬 코딩테스트 (진법 변환 2)  (1) 2025.08.15
백준 파이썬 코딩테스트 (색종이)  (8) 2025.08.11
백준 파이썬 코딩테스트 (세로읽기)  (4) 2025.08.09
백준 파이썬 코딩테스트 (최댓값)  (1) 2025.08.08
'코딩테스트/BaekJoon' 카테고리의 다른 글
  • 백준 파이썬 코딩테스트 (세탁소 사장 동혁)
  • 백준 파이썬 코딩테스트 (진법 변환 2)
  • 백준 파이썬 코딩테스트 (색종이)
  • 백준 파이썬 코딩테스트 (세로읽기)
코드 유랑자 승열
코드 유랑자 승열
코드 유랑자 승열의 프로그래밍 일지를 남기는 공간입니다.
  • 코드 유랑자 승열
    승열의 프로그래밍 시네마
    코드 유랑자 승열
  • 전체
    오늘
    어제
  • 링크

    • 깃허브 보러가기
    • 링크드인 보러가기
    • 카테고리
      • 코딩테스트
        • LeetCode
        • BaekJoon
      • TIL and WIL
        • TIL
        • WIL
      • 주말스터디
      • 내일배움캠프
        • 사전캠프 강의 (SQL)
      • 용어정리
        • Python
        • Python-Library
        • Machine-Learning
        • Deep-Learning
        • AI 활용
        • LLM & RAG
        • Docker
        • Django
        • SQL
        • Java Script
        • etc
      • Daily 코드카타
        • SQL
        • Python 알고리즘
      • 임시저장
      • 보류
  • 태그

    vector db
    template
    llm
    오블완
    langchain
    티스토리챌린지
    word2vec
    RAG
    View
    django
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
코드 유랑자 승열
백준 파이썬 코딩테스트 (진법 변환)
상단으로

티스토리툴바