https://www.acmicpc.net/problem/9461
๋ฌธ์
์ค๋ฅธ์ชฝ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ผ๊ฐํ์ด ๋์ ๋ชจ์์ผ๋ก ๋์ฌ์ ธ ์๋ค. ์ฒซ ์ผ๊ฐํ์ ์ ์ผ๊ฐํ์ผ๋ก ๋ณ์ ๊ธธ์ด๋ 1์ด๋ค. ๊ทธ ๋ค์์๋ ๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ผ๋ก ์ ์ผ๊ฐํ์ ๊ณ์ ์ถ๊ฐํ๋ค. ๋์ ์์ ๊ฐ์ฅ ๊ธด ๋ณ์ ๊ธธ์ด๋ฅผ k๋ผ ํ์ ๋, ๊ทธ ๋ณ์ ๊ธธ์ด๊ฐ k์ธ ์ ์ผ๊ฐํ์ ์ถ๊ฐํ๋ค.
ํ๋๋ฐ ์์ด P(N)์ ๋์ ์ ์๋ ์ ์ผ๊ฐํ์ ๋ณ์ ๊ธธ์ด์ด๋ค. P(1)๋ถํฐ P(10)๊น์ง ์ฒซ 10๊ฐ ์ซ์๋ 1, 1, 1, 2, 2, 3, 4, 5, 7, 9์ด๋ค.
N์ด ์ฃผ์ด์ก์ ๋, P(N)์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ํ ์คํธ ์ผ์ด์ค์ ๊ฐ์ T๊ฐ ์ฃผ์ด์ง๋ค. ๊ฐ ํ ์คํธ ์ผ์ด์ค๋ ํ ์ค๋ก ์ด๋ฃจ์ด์ ธ ์๊ณ , N์ด ์ฃผ์ด์ง๋ค. (1 ≤ N ≤ 100)
์ถ๋ ฅ
๊ฐ ํ ์คํธ ์ผ์ด์ค๋ง๋ค P(N)์ ์ถ๋ ฅํ๋ค.
ํ์ด
์ ํ์์ด ์ง๊ด์ ์ผ๋ก ๋ ์ค๋ฅด์ง ์์ ๊ณ ๋ฑํ๊ต ๋ฑ๋น์์ด ๋ฌธ์ ํ๋ฏ์ด ์ผ๋จ ๋ ๋ค ๊ท์น์ ์จ๋ดค๋ค
1๋ฒ = 1๋ฒ = 1
2๋ฒ = 1๋ฒ = 1
3๋ฒ = 2๋ฒ = 1
4๋ฒ = 1๋ฒ + 3๋ฒ = 1 + 1 = 2
5๋ฒ = 4๋ฒ = 2
-
6๋ฒ = 3๋ฒ + 5๋ฒ = 1 + 2 = 3
7๋ฒ = 1๋ฒ + 6๋ฒ = 1 + 3 = 4
8๋ฒ = 1๋ฒ + 7๋ฒ = 1 + 4 = 5
9๋ฒ = 4๋ฒ + 8๋ฒ = 2 + 5 = 7
10๋ฒ = 5๋ฒ + 9๋ฒ = 2 + 7 = 9
11๋ฒ = 6๋ฒ + 10๋ฒ = 3 + 9 = 12
-
n๋ฒ = (n-5)๋ฒ + (n-1)๋ฒ
+++) ํ์ ํ.. ์์ง ๋ง์! dp๋ฌธ์ ์ ๊ฒฝ์ฐ ํ๋ฐ๋ถ๋ก ๊ฐ๋ฉด ์๊ฐ ์ปค์ง๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
ํน์ ์๋ก ๋๋ ๋๋จธ์ง๋ฅผ ๊ตฌํ๋ผ ๊ฐ์ ์ฒ๋ฆฌ๊ฐ ์๋ค๋ฉด ์์ ์ฑ์ ์ํด int ๋์ long long์ ์ฌ์ฉํ๋ ๋ฐฉํฅ์ผ๋ก ์ฒดํํ์
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<long long> dp(101);
dp[1] = 1;
dp[2] = 1;
dp[3] = 1;
dp[4] = 2;
dp[5] = 2;
for(int i=6; i<=100; i++) {
dp[i] = dp[i-5] + dp[i-1];
}
int t, n;
cin >> t;
while(t--) {
cin >> n;
cout << dp[n] << "\n";
}
return 0;
}
'๐ BOJ > Class 3' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ][C++] ๋ฐฑ์ค 1541๋ฒ: ์์ด๋ฒ๋ฆฐ ๊ดํธ (0) | 2023.03.28 |
---|---|
[BOJ][C++] ๋ฐฑ์ค 11727๋ฒ: 2xn ํ์ผ๋ง 2 (0) | 2023.03.27 |
[BOJ][C++] ๋ฐฑ์ค 1260๋ฒ: DFS์ BFS (0) | 2023.03.24 |
[BOJ][C++] ๋ฐฑ์ค 1764๋ฒ: ๋ฃ๋ณด์ก (0) | 2023.03.24 |
[BOJ][C++] ๋ฐฑ์ค 11724๋ฒ: ์ฐ๊ฒฐ ์์์ ๊ฐ์ (0) | 2023.03.01 |