◎ 자료구조와 알고리즘/백준(BOJ) 문제풀이

[백준 / BOJ] 9184번 신나는 함수 실행 (C++, Python)

reo91004 2022. 8. 12. 20:37
반응형

링크 : https://www.acmicpc.net/problem/9184

 

9184번: 신나는 함수 실행

입력은 세 정수 a, b, c로 이루어져 있으며, 한 줄에 하나씩 주어진다. 입력의 마지막은 -1 -1 -1로 나타내며, 세 정수가 모두 -1인 경우는 입력의 마지막을 제외하면 없다.

www.acmicpc.net


문제


문제 풀이

문제에 적혀있는 재귀함수 w(a, b, c)를 동적 계획법으로 옮기면 된다.

 

핵심 부분만 언급하자면 기저 사례인 1, w(20, 20, 20)을 리턴하는 코드 밑에 

 

// C++의 경우

else if (dp[a][b][c] != 0)
    return dp[a][b][c];
# Python의 경우

elif dp[a][b][c] != 0:
    return dp[a][b][c]

해당 코드를 넣어주어야 한다. 그렇지 않으면 동적 계획법의 의미가 없기 때문이다. 어차피  재귀로 들어가면 기저사례 말고는 해당 코드에 걸리게 되므로 이전에 저장해놨던 값을 쓰게 된다. 그래서 동적 계획법의 의미가 생긴다.

 

 

C++ 코드 전문

 

Python 코드 전문

 

소감

중간에 코드 두 줄을 넣는 것이 중요했던 문제다.

 

 

반응형