유형: 재귀 (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
'프로그래머스 > Lv. 1' 카테고리의 다른 글
34. 폰켓몬 (set에 대하여) (0) | 2024.07.14 |
---|---|
33. 카드 뭉치 (0) | 2024.07.14 |
31. 두 개 뽑아서 더하기 (itertools - combinations) (0) | 2024.07.14 |
30. 가장 가까운 같은 글자 (dict의 활용, 관련 함수들) (1) | 2024.07.14 |
29. 시저 암호 ★ (ord, chr, 간단히 알파벳 순회하기) (1) | 2024.07.14 |