본문 바로가기

코딩 테스트/백준

[Python] 백준 2745 진법 변환

 

코드 설계

  • 입력 값이 0~9이면 그대로 int형으로 변환
  • A ~ Z 이면

 

정답 코드

1차 - 틀림

import sys
input = sys.stdin.readline

n, b = input().split()
b = int(b)
int_num = [str(i) for i in range(0,10)]
ans = 0

for i in range(len(n)-1, -1, -1) : # len(n)-1 ~ 0
    if n[i] in int_num :
        ans += int(n[i]) * (b**i)
    else :
        ans += (ord(n[i])-55) * (b**i)

print(ans)

 

char.isdigit( )로 문자열의 문자가 숫자인지 확인할 수 있음

for i in range(len(n)-1, -1, -1) :

b에 곱해지는 i 만 역순으로 계산되어야 하는데 위처럼 반복문을 사용하여 n[i]에 대한 인덱스도 역순으로 접근

 

실패..

gpt

import sys
input = sys.stdin.readline

n, b = input().split()
b = int(b)
ans = 0

for idx, char in enumerate(reversed(n)) : # 문자를 뒤집어서 자릿수 처리
    if char.isdigit() :
        ans += int(char) * (b ** idx)
    else :
        ans += (ord(char) - 55) * (b ** idx)
print(ans)