코딩테스트 연습

[파이썬] n진수 변환 / 재귀

콩콩(๓° ˘ °๓)♡ 2023. 3. 22. 15:47
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