문제풀이/백준

[python/파이썬] 백준 11005 - 진법 변환 2 (브1)

bbugi 2023. 7. 21. 12:10

https://www.acmicpc.net/problem/11005

 

11005번: 진법 변환 2

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

www.acmicpc.net


수학 개념 구현

---

음.. 기본적인 수학 개념으로 푸는 문제였지만, N진수에 대한 개념이 부족한 나를 위해 정리함

10진수를 N진수로 변환하는 과정은 

10진수의 수를 N으로 나누어 나오는 나머지를 연산의 역순(가장 마지막의 수가 가장 앞에 온다)으로 나열하면 됨

(이 간단한 개념을 헷갈려 했다는게 너무 부끄럽...)

---

[ 사용한 함수 ]

- list.insert(값을 넣을 위치_인덱스, 값)

 

 

■ 참조 ■

list 에서 사용할 수 있는 함수

1. append(value) : 리스트에 원소를 추가

ex) list = [1,2,3] 일 떄

      list.append(4) → list : [1,2,3,4] 출력

      list.append([4,5]) → list : [1,2,3,[4,5]] 출력 :: append는 기존 리스트의 가장 마지막에 1개의 원소를 추가하는 개념으로 list 값이 주어지면 list 자체를 원소로 넣어버림

 

2. extend(value) : 리스트를 확장

ex) list = [1,2,3] 일 떄

      list.extend(4) → list : [1,2,3,4] 출력

      list.extend([4,5]) → list : [1,2,3,4,5] 출력 :: extend는 기존 리스트의 가장 마지막에 모든 항목을 넣어주는 개념으로 리스트를 확장시킨다고 생각

 

3. insert(idx, value) : 리스트 idx 위치에 value 값을 추가, 기본적으로 append 의 기능을 수행한다고 생각할 것

ex) list = [1,2,3] 일 떄

      list.insert(0,4) → list : [4,1,2,3] 출력

      list.insert(0, [4,5]) → list : [[4,5],1,2,3] 출력


[정답 코드]

def n2ten (num, n) :
    result = []

    while num > 0 :
        m = num % n # 나머지 -> n진법의 값이 나옴
        num = num // n 
        # result.append(m)
        result.insert(0, m) # result 리스트에 0인덱스 위치에 m을 추가하는 함수
    return result

ans = [i for i in range(10)]

alp = [chr(s).upper() for s in range(97,123)]
# print(alp)

ans.extend(alp)
# print(ans[35])

num, n = map(int, input().split())
result = n2ten(num, n)

for i in result :
    print(ans[i], end='')