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='')
'문제풀이 > 백준' 카테고리의 다른 글
[python/파이썬] 백준 13900 - 순서쌍의 곱의 합 (실4) (0) | 2023.08.02 |
---|---|
[python/파이썬] 백준 1874 - 스택 수열 (실2) (0) | 2023.07.20 |
[python/파이썬] 백준 4949 - 균형잡힌 세상 (실4) (1) | 2023.07.19 |
[python/파이썬] 백준 1966 - 프린터 큐 (실3) (1) | 2023.07.17 |
[JAVA/자바] 백준 15552 - 빠른 A+B(브4) (1) | 2023.04.30 |