유형: 재귀 (X) 구현

풀이 시간 : 10분 정도? -> 재귀 깊이에 걸림 

 

1. 나의 풀이 

import sys
sys.setrecursionlimit(10000)

def givecola(a, b, remain):
    if remain < a:
        return 0
    new = (remain // a) * b
    remain = remain % a + new
    return new + givecola(a, b, remain)
    
def solution(a, b, n):
    answer = givecola(a, b, n)
    return answer

 

재귀함수가 바로 떠올라서 재귀로 풀었는데 계속 12번 테케에서 걸렸다.

재귀함수로 풀이하는 바람에 재귀 깊이가 너무 깊어져서 그런 거였다..

실전에서 이러면 빠르게 다른 풀이로 바꿔야 할 것 같다. 

 

import sys
sys.setrecursionlimit(10000)

 

sys.setrecursionlimit 함수를 이용해 재귀 스택 깊이를 더 늘릴 수 있긴 하다.

그래도 반복문으로 풀이하는 게 좋아보임. 

 

2. 반복문 풀이

비슷한 코드를 반복문으로 작성하면 된다. 완전 쉽게 풀림

def solution(a, b, n):
    remain = n
    answer = 0
    while remain >= a:
        new = (remain // a) * b
        answer += new
        remain = remain % a + new
    return answer
복사했습니다!