๋ฌธ์ :
๋ถ์ :
์ ํ์์ ์ธ์ฐ๋ฉด ๊ฐ๋จํ ํด๊ฒฐํ ์ ์๋ ๋ฌธ์ ์๋ค!
ํฐ ๋ฌธ์ ๊ฐ ์์ ๋ฌธ์ ๋ก ๋๋์ด์ง๋ ์ ํ์ ์ธ dp ๋ฌธ์ ์๊ณ
1, 2, 3์ ํฉ์ผ๋ก ๋ํ๋ธ๋ค๋ ๊ฒ์
1์ผ๋
1
2์ผ๋
1 + 1
2
3์ผ๋
1 + 1 + 1
1 + 1 + 2
1 + 2 + 1
1 + 1 + 2
1 + 3
๊ณผ ๊ฐ์ด ๋ํ๋ด์ด์ง๋ ๊ฒ์ ์๋ฏธํ๋ค.
n = 4์ผ ๊ฒฝ์ฐ ๋ํ๋ด์ด์ง๋ ๊ฒฝ์ฐ์ ์๋ฅผ memo[4]๋ผ๊ณ ํ์
๊ทธ๋ด๋ ๊ฒฝ์ฐ์ ์๋
1 + memo[3]
2 + memo[2]
3 + memo[1]
์ผ ๊ฒ์ด๋ค.
๋ฐ๋ผ์ ์ ํ์์ memo[n] = memo[n-1] + memo[n-2] + memo[n-3]๊ณผ ๊ฐ์ด ๋ํ๋ด์ด์ง๋ค.
c++ ์ฝ๋ :
//
// 9095_123plus.cpp
// SOMA๐ฉ๐ป๐ป
//
// Created by JoSoJeong on 2021/05/04.
//
#include <stdio.h>
#include <iostream>
using namespace std;
int dp[11] = {0, };
int memo[11] = {0, };
int dp_plus(int n){
if(memo[n] > 0){
return memo[n];
}else{
memo[n] = dp_plus(n - 1) + dp_plus(n - 2) + dp_plus(n - 3);
return memo[n];
}
}
int main(){
int TC;
cin >> TC;
memo[1] = 1; memo[2] = 2; memo[3] = 4;
for(int i =0; i < TC; i++){
int n;
cin >> n;
int dpResult = dp_plus(n);
cout << dpResult << '\n';
}
return 0;
}
'Algorithm๐ฐ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 1149 RGB ๊ฑฐ๋ฆฌ DP (0) | 2021.05.08 |
---|---|
[๋ฐฑ์ค] 16236 ์๊ธฐ ์์ด DFS, Priority-Queue (0) | 2021.05.06 |
[๋ฐฑ์ค] 1937 ์์ฌ์์ด ํ๋ค ๐ผ DP (0) | 2021.05.02 |
[๋ฐฑ์ค] 13460 ๊ตฌ์ฌ ์ฐพ๊ธฐ2 BFS (0) | 2021.04.22 |
[๋ฐฑ์ค] 2583 ์์ญ ๊ตฌํ๊ธฐ DFS (0) | 2021.04.22 |
๋๊ธ