change={0:'0',1:'1',2:'2',3:'3',4:'4',5:'5',6:'6',7:'7',8:'8',9:'9',10:'A',11:'B',12:'C',13:'D',14:'E',15:'F'}
def solution(num,n):
if num//n == 0:
return change[num%n]
return solution(num//n,n)+change[num%n]
n<=16 범위에서 재귀로 구현해보았다.
n진법으로의 변환은 num을 n으로 나누며 몫이 0이 될 때까지 나눈 뒤 나머지를 거꾸로 읽어내는 것이다.
따라서 재귀로 num에 몫을 넣어서 계속 호출하고, 그 몫이 0이 될 때 연산을 종료하도록 조건문을 넣는다.
point. change 딕셔너리가 함수 안에 있을 경우 재귀 호출 할 때마다 새롭게 메모리에 올라가 낭비가 발생하므로
함수 위로 빼주어 처음에 정의되고, 메모리에 한 번만 올라가도록 한다.
재귀에 대해 더 알아보려면 미로찾기 문제 참고
[파이썬] 1226. 미로1
※ SW Expert 아카데미의 문제를 무단 복제하는 것을 금지합니다. 아래 그림과 같은 미로가 있다. 16*16 행렬의 형태로 만들어진 미로에서 흰색 바탕은 길, 노란색 바탕은 벽을 나타낸다. 가장 좌상
pika-chu.tistory.com
'코딩테스트 연습' 카테고리의 다른 글
[파이썬] 숫자에 1000단위 콤마 넣기(라이브러리 사용X) (0) | 2023.03.23 |
---|---|
[파이썬] 프로그래머스: 최빈값 구하기 / defaultdict (0) | 2023.03.22 |
[파이썬] 프로그래머스: 가장 큰 수 / 아스키코드 (0) | 2023.03.21 |
[파이썬] 프로그래머스: 셔틀버스 (0) | 2023.03.21 |
[파이썬] 프로그래머스: 파일명 정렬 / 정규식, split, 구분자유지 (0) | 2023.03.21 |