Baekjoon 9184 (신나는 함수 실행)

Baekjoon 9184 (신나는 함수 실행)

Baekjoon 9184, 백준 9184 문제의 본인 풀이입니다!
문제는 아래의 링크에서 확인할 수 있습니다.
문제보기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <iostream>
#include <cstring>
using namespace std;

int dp[21][21][21];

int dpFunc(int a, int b, int c) {
if(a <= 0 || b <= 0 || c <= 0)
return 1;
else if(a > 20 || b > 20 || c > 20) {
return dpFunc(20, 20, 20);
}
else {
// Already calculated once
if(dp[a][b][c] != -1) {
return dp[a][b][c];
}
// Not calculated yet: calculate
else {
int temp;
if(a < b && b < c)
temp = dpFunc(a, b, c - 1) + dpFunc(a, b - 1, c - 1) - dpFunc(a, b - 1, c);
else
temp = dpFunc(a-1, b, c) + dpFunc(a-1, b-1, c) + dpFunc(a-1, b, c-1) - dpFunc(a-1, b-1, c-1);
dp[a][b][c] = temp;
return temp;
}
}
}

int main() {
// Initialization
int a, b, c, ans;
memset(dp, -1, sizeof(dp)); // if no value, dp = -1

// Solution (DP)
while(true) {
cin >> a >> b >> c;
if(a == -1 && b == -1 && c == -1) break;
else {
ans = dpFunc(a, b, c);
cout << "w(" << a << ", " << b << ", " << c << ") = " << ans << endl;
}
}
}

알고리즘을 공부해 두면 개발, 코테 등등 언젠가 도움이 된다는 말을 많이 듣기도 했고, 사실상 당장 급하게 할 것도 없다고 판단되어 2021.01.29. 일자로 알고리즘 공부를 다시 재개하게 되었다.

백준의 ‘단계별로 풀어보기’를 복습하면서 추가된 문제들을 해결할 예정이다! 현재 목표는 빠르게 백준의 “DFS와 BFS”까지 달려서 끝내고, 프로그래머스의 문제들 (대부분의 코테가 이 포멧으로 진행된다 해서,,) + CodeForces 기출문제로 넘어가는 것이다.

코테를 연습 삼아 보거나, CodeForces 티어를 따는 것도 목표 중에 있다. 좀 큰 목표로는 2021년 1학기 안에 보라색 티어를 가는 것!

Author

Yeonsang Shin

Posted on

2021-01-29

Updated on

2022-12-19

Licensed under

Comments