์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- ๋ค์ด๋๋ฏนํ๋ก๊ทธ๋๋ฐ
- LIS
- BFS
- ์์๊ตฌํ๊ธฐ
- ์์ํ์
- ๋๋น์ฐ์ ํ์
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- DP
- ์ค๋ธ์
- ์ํ
- ๊น์ด์ฐ์ ํ์
- DFS
- ๋์ ํฉ
- ์ฐ์ ์์ํ
- ๊ทธ๋ํํ์
- ๊ตฌํ
- ๊ทธ๋ํ
- ๊ทธ๋ฆฌ๋
- ๋ณํฉ์ ๋ ฌ
- ํ๋ก๊ทธ๋๋จธ์ค
- db
- SQL
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- ์๋ฃ๊ตฌ์กฐ
- ๋จธ์ง์ํธ
- ๋์ ๊ณํ๋ฒ
- ๋ฐฑ์ค
- ์ ๋ ฌ
- ์๊ณ ๋ฆฌ์ฆ
- ํ์ด์ฌ
๐๐ญ๐ฐ๐ธ ๐ฃ๐ถ๐ต ๐ด๐ต๐ฆ๐ข๐ฅ๐บ
[๋ฐฑ์ค] 11726๋ฒ: 2×n ํ์ผ๋ง - C++ ๋ณธ๋ฌธ
๋ฌธ์
2×n ํฌ๊ธฐ์ ์ง์ฌ๊ฐํ์ 1×2, 2×1 ํ์ผ๋ก ์ฑ์ฐ๋ ๋ฐฉ๋ฒ์ ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์๋ ๊ทธ๋ฆผ์ 2×5 ํฌ๊ธฐ์ ์ง์ฌ๊ฐํ์ ์ฑ์ด ํ ๊ฐ์ง ๋ฐฉ๋ฒ์ ์์ด๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ n์ด ์ฃผ์ด์ง๋ค. (1 ≤ n ≤ 1,000)
์ถ๋ ฅ
์ฒซ์งธ ์ค์ 2×n ํฌ๊ธฐ์ ์ง์ฌ๊ฐํ์ ์ฑ์ฐ๋ ๋ฐฉ๋ฒ์ ์๋ฅผ 10,007๋ก ๋๋ ๋๋จธ์ง๋ฅผ ์ถ๋ ฅํ๋ค.
DP๋ฅผ ์ด์ฉํ์ฌ ํ ์ ์๋ ๋ฌธ์ .
๊ท์น์ ์๊ฐํ๋ฉด ์ ์ฌ์ง๊ณผ ๊ฐ๋ค. ํ์ผ์ ๋ฐฐ์นํ ๋ ๋ง๋ค ๊ฐ๋ก ํ ์นธ์ 1x2 ํ์ผ๋ก ๋ฐฐ์นํ ์ ์๋ ๋ฐฉ๋ฒ ํ๋, ๊ฐ๋ก ๋ ์นธ์ 2x1 ํ์ผ์ ์์๋๋ก ๋๊ฐ ์์ ๋ฐฐ์นํ ์ ์๋ ๋ฐฉ๋ฒ ํ๋๊ฐ ์์ด ์ ํ์์ ์ธ์๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ ์์ด ๋์จ๋ค.
D[n] = D[n - 1] + D[n- 2]
๋ง๋ค. ๊ทธ๋ฅ ํผ๋ณด๋์น ์์ด ๋ฌธ์ ๋ค. ์ด๊ธฐ๊ฐ ์ค์ ๊ณผ ๋งค ์ฐ์ฐ๋ง๋ค 10007์ ๋๋ ์ฃผ๋ ๊ฒ์๋ง ์ ์ํ์ฌ ํ๋ฉด ๋๋ค.
๋ฌธ์ ๋ top-down ๋ฐฉ์์ ์ด์ฉํ์ฌ ํ์๋ค. ๋ค๋ง ๊ฐ๋จํ ์ฝ๋์ธ ๋งํผ, ์กฐ๊ธ๋ง ๊ณ ์น๋ฉด bottom-up ๋ฐฉ์์ผ๋ก๋ ํ ์ ์๋ค.
์ฝ๋
#include <cstdio>
#include <vector>
#define MAX 1001
using namespace std;
vector<int> memo(MAX, 0);
int DP(int num);
int main(void) {
int num;
scanf("%d", &num);
printf("%d\n", DP(num));
return 0;
}
int DP(int num) {
if(num <= 2) return num;
if(memo[num] > 0) return memo[num];
int result = (DP(num - 1) + DP(num - 2)) % 10007;
memo[num] = result;
return result;
}
'์ฝ๋ฉํ ์คํธ ์ค๋น > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 2156๋ฒ: ํฌ๋์ฃผ ์์ - C++ (0) | 2021.07.17 |
---|---|
[๋ฐฑ์ค] 9095๋ฒ: 1, 2, 3 ๋ํ๊ธฐ - C++ (0) | 2021.07.16 |
[๋ฐฑ์ค] 11727๋ฒ: 2รn ํ์ผ๋ง 2 - C++ (0) | 2021.07.13 |
[๋ฐฑ์ค] 10814๋ฒ: ๋์ด์ ์ ๋ ฌ - C++ (0) | 2021.07.11 |
[๋ฐฑ์ค] 1463๋ฒ: 1๋ก ๋ง๋ค๊ธฐ - C++ (0) | 2021.07.10 |