

๋ฌธ์ ์ถ์ฒ : https://www.acmicpc.net/problem/9095
<์ ๊ทผ ๋ฐฉ๋ฒ>
Dp ์ด์ฉ
๋ง์ง๋ง ์๊ฐ 1, 2, 3์ธ ๊ฒฝ์ฐ๋ฅผ ๋๋์ด์ ์ ์ฅ
๋ง์ง๋ง ์๊ฐ 1์ด๋ฉด ์์ 2๋ 3์ด ์์ผ ํ๊ณ 2๋ฉด 1์ด๋ 3, 3์ด๋ฉด 1, 2๊ฐ ์์ผ ํจ
์ฌ๊ธฐ๊น์ง๋ ์๊ฐ ํด๋ด๋๋ฐ ์ฑ๊ณตํ์ง๋ง, ๋์ ํ ์ ํ์์ ๋ชป ๊ตฌํ๊ฒ ์ด์ ๋ค๋ฅธ ๋ถ๋ค์ ํ์ด๋ฅผ ์ฐธ๊ณ ํ์ต๋๋ค.
<ํ์ด>
| Dp[n][1] | dp[n][2] | dp[n][3] | |
| n=1 | 1 | 0 | 0 |
| n=2 | 0 | 1 | 0 |
| n=3 | 1 | 1 | 1 |
| n=4 | 2 | 0 | 1 |
| n=5 | 1 | 2 | 1 |
| n=6 | 3 | 3 | 2 |
| n=7 | 5 | 2 | 2 |
| n=8 | 4 | 5 | 3 |
์ซ์๊ฐ ์์ผ๋ฉด ์ฐพ๊ธฐ ํ๋๋ n=8์ผ ๋๋ฅผ ํ์ธํด ๋ณด๊ฒ ์ต๋๋ค.
dp[8][1]์ ๋ฐ๋ก ์์ธ dp[7][2] + dp[7][3]์์ ๊ฐ์ ธ์ค๋ฉด ๋๊ณ
dp[8][2]๋ ๊ทธ ์์ธ dp[6][1] + dp[6][3],
dp[8][3]์ ๋ ๊ทธ ์์ธ dp[5][2] + dp[5][3]์์ ๊ฐ์ ธ์ค๋ฉด ๋ฉ๋๋ค.
<์ ํ์>
dp[n][1] = dp[n-1][2] + dp[n-1][3]
dp[n][2] = dp[n-2][1] + dp[n-2][3]
dp[n][3] = dp[n-3][1] + dp[n-3][2]
<์์ค ์ฝ๋>
|
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
|
#include <iostream>
#define MAX 100001
#define VAL 1000000009
using namespace std;
int main() {
int T, n;
long long dp[MAX][4]={0};
dp[1][1] = 1;
dp[2][2] = 1;
dp[3][1] = 1;
dp[3][2] = 1;
dp[3][3] = 1;
for(int i=4; i<MAX; i++){
dp[i][1] = (dp[i-1][2]+dp[i-1][3])%VAL;
dp[i][2] = (dp[i-2][1]+dp[i-2][3])%VAL;
dp[i][3] = (dp[i-3][1]+dp[i-3][2])%VAL;
}
cin >> T;
while(T--){
cin >> n;
cout << (dp[n][1]+dp[n][2]+dp[n][3])%VAL << "\n";
}
}
|
cs |
<ํ๊ธฐ>

'๋ง์ง๋ง ์๊ฐ 1์ด๋ฉด ์์ 2๋ 3์ด ์์ผ ํ๋ค.' ๊น์ง๋ ์ ์ ๊ทผํ๋๋ฐ n-1๋ง ์ด์ฉํด์ ๊ฐ์ ์ฐพ์ผ๋ ค ํ๋ค๊ฐ ์๊ฐ์ ๋ง์ด ๋ ๋ ธ๋ค์... ์ด ํ์ด ๋ฐฉ์์ ์ ๊ทผํ๊ธฐ๊น์ง ์ด๋ฏธ ๋ง์ ์๊ฐ์ ํฌ์ํ๊ธฐ์ ๋ค๋ฅธ ์ฌ๋๋ค์ ํ์ด๋ฅผ ๋ดค๋๋ฐ ํ๋ฃจ ์ ๋๋ง ๋ ๊ณ ๋ฏผํด ๋ณผ ๊ฑธ ์ถ๊ธฐ๋ ํ๊ณ ์กฐ๊ธ ์์ฝ๋ค์.
๋ง์ ์ฌ๋์ด ๊ทธ๋ ๋ฏ ์ ๋ dp๋ฌธ์ ๋ฅผ ์ด๋ ค์ํฉ๋๋ค. ๊ทธ๋์ ์ต๊ทผ dp๋ฌธ์ ๋ฅผ ์ข ๋ง์ด ํ์ด๋ณด๊ณ ์๋๋ฐ ๊ทธ๋๋ ๊ฑฐ์ ์ ๋ต๊น์ง ๊ทผ์ ํ๋ค๋ ๊ฒ์ ๋ง์กฑํ๋ฉฐ ๋ณต์ต ๊ฒธ ์ฝ๋์ ํ์ด๋ฅผ ์ ๋ฆฌํด์ ์ฌ๋ฆฝ๋๋ค.
'๐งโ๐ป ์ฝ๋ฉ > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ๋ฐฑ์ค 1644 - ์์์ ์ฐ์ํฉ (c++) (0) | 2022.08.19 |
|---|---|
| ๋ฐฑ์ค 2003 - ์๋ค์ ํฉ 2 (c++) (0) | 2022.08.09 |
| ๋ฐฑ์ค 4781 - ์ฌํ ๊ฐ๊ฒ (c++) (0) | 2022.08.05 |
| ๋ฐฑ์ค 12865 - ํ๋ฒํ ๋ฐฐ๋ญ (c++) (0) | 2022.08.01 |
| ๋ฐฑ์ค 2887 - ํ์ฑ ํฐ๋ (c++) (0) | 2022.07.15 |