백준 수학 알고리즘 : 11005번 10진수를 n진수로

코린이서현이·2024년 1월 22일
0

🛎️ 11005번

10진수로 입력을 받아 n진수로 출력하는 문제였다.

코드를 짜는 건 간단하지만 10진수 -> n진수변환과정이 이해가 잘 안돼서 어려웠다.

10진수 -> n진수 표현방법

  1. 10진수의 입력을 n으로 나눈다 : 나머지 / 몫
    나머지는 1의 자릿수가 되고 몫은 새로운 입력으로 바뀐다.
  2. 몫을 n으로 나누고 1번의 과정을 반복한다.

10진수/n진수
나머지 : 1의자리수 (가장 최근의 것이 가장 앞에 저장된다.)
몫 : 이후 계산할 10진수가 된다.

정답코드

from string import ascii_uppercase

x1,x2 = input().split(" ")
x2 = int(x2)
x1 = int(x1)
list_36 = list(str(r) for r in range(10)) + list(ascii_uppercase)
list_x = list_36[:x2]
y_list =[]

while (x1 > 0) :
    y_list.append(list_x[x1 % x2])
    x1 = x1 // x2

y_list = y_list[::-1]
str = ''.join(y_list)
print(str)

나는 앞에서 나머지를 단순히 뒤에 저장했다.
따라서 출력전에 문자열을 뒤집었다.

그러나 애초에 앞에 넣어줄 수도 있다.

y_list.insert(0,list_x[x1 % x2])

다른 코드

from string import ascii_uppercase

x1,x2 = input().split(" ")
x2 = int(x2)
x1 = int(x1)
list_36 = list(str(r) for r in range(10)) + list(ascii_uppercase)
list_x = list_36[:x2]
y_list =[]

while (x1 > 0) :
    y_list.insert(0,list_x[x1 % x2])
    x1 = x1 // x2

str = ''.join(y_list)
print(str)

기억하고 싶은 것!!

리스트를 문자열로 출력하기

str = ''.join(y_list)
profile
24년도까지 프로젝트 두개를 마치고 25년에는 개발 팀장을 할 수 있는 실력이 되자!

0개의 댓글