์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- ๊ทธ๋ฆฌ๋
- LIS
- ๋ณํฉ์ ๋ ฌ
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- ๋จธ์ง์ํธ
- ์์ํ์
- db
- skala1๊ธฐ
- ๋์ ๊ณํ๋ฒ
- ๊น์ด์ฐ์ ํ์
- ๊ตฌํ
- ๊ทธ๋ํํ์
- ํ๋ก๊ทธ๋๋จธ์ค
- ํ์ด์ฌ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ๋ค์ด๋๋ฏนํ๋ก๊ทธ๋๋ฐ
- ๋๋น์ฐ์ ํ์
- ์ค๋ธ์
- SQL
- ์ํ
- BFS
- DFS
- DP
- ์๊ณ ๋ฆฌ์ฆ
- ๋ฐฑ์ค
- SK
- skala
- ๊ทธ๋ํ
- ์ ๋ ฌ
- ๋์ ํฉ
- Today
- Total
๐๐ญ๐ฐ๐ธ ๐ฃ๐ถ๐ต ๐ด๐ต๐ฆ๐ข๐ฅ๐บ
[๋ฐฑ์ค] 11727๋ฒ: 2รn ํ์ผ๋ง 2 - C++ ๋ณธ๋ฌธ
๋ฌธ์
2รn ์ง์ฌ๊ฐํ์ 1ร2, 2ร1๊ณผ 2ร2 ํ์ผ๋ก ์ฑ์ฐ๋ ๋ฐฉ๋ฒ์ ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์๋ ๊ทธ๋ฆผ์ 2ร17 ์ง์ฌ๊ฐํ์ ์ฑ์ด ํ๊ฐ์ง ์์ด๋ค.

์ ๋ ฅ
์ฒซ์งธ ์ค์ n์ด ์ฃผ์ด์ง๋ค. (1 โค n โค 1,000)
์ถ๋ ฅ
์ฒซ์งธ ์ค์ 2รn ํฌ๊ธฐ์ ์ง์ฌ๊ฐํ์ ์ฑ์ฐ๋ ๋ฐฉ๋ฒ์ ์๋ฅผ 10,007๋ก ๋๋ ๋๋จธ์ง๋ฅผ ์ถ๋ ฅํ๋ค.
DP๋ฅผ ์ด์ฉํ์ฌ ํธ๋ ๋ฌธ์ .
์์ ํ์๋ 11726๋ฒ์ธ 2xn ํ์ผ๋ง์ ์กฐ๊ธ๋ง ์์ฉํ๋ฉด ๋ฐ๋ก ํ ์ ์๋ค.

๊ฐ๋ก ํ ์นธ์ 1x2 ํ์ผ๋ก ์ฑ์ฐ๋ ๋ฐฉ๋ฒ ํ ๊ฐ์ง, ๊ฐ๋ก ๋ ์นธ์ 2x1 ํ์ผ์ ์์๋๋ก ์์ ์ฑ์ฐ๋ ๋ฐฉ๋ฒ ํ๋, 2x2 ํ์ผ๋ก ์ฑ์ฐ๋ ๋ฐฉ๋ฒ ํ๋์ธ ์ ์ ๊ณ ๋ คํ์ฌ ์ ํ์์ ์ธ์ฐ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
D[n] = D[n - 1] + 2 * D[n - 2]
์ด ๋ฌธ์ ์ญ์ ์ด๊ธฐ๊ฐ ์ค์ ๊ณผ ๋งค ์ฐ์ฐ๋ง๋ค 10007์ ๋๋จธ์ง ์ฐ์ฐ์ ํด์ฃผ๋ ๊ฒ์๋ง ์ ์ํ์ฌ ํ๋ฉด ์ฝ๊ฒ ํ ์ ์๋ค.
๋ฌธ์ ๋ top-down ๋ฐฉ์์ผ๋ก ํ์๋ค.
์ฝ๋
#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 1;
if(memo[num] > 0) return memo[num];
int result = (DP(num - 1) + 2 * DP(num - 2)) % 10007;
memo[num] = result;
return result;
}
'์ฝ๋ฉํ ์คํธ ์ค๋น > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 2156๋ฒ: ํฌ๋์ฃผ ์์ - C++ (0) | 2021.07.17 |
---|---|
[๋ฐฑ์ค] 9095๋ฒ: 1, 2, 3 ๋ํ๊ธฐ - C++ (0) | 2021.07.16 |
[๋ฐฑ์ค] 11726๋ฒ: 2รn ํ์ผ๋ง - C++ (0) | 2021.07.12 |
[๋ฐฑ์ค] 10814๋ฒ: ๋์ด์ ์ ๋ ฌ - C++ (0) | 2021.07.11 |
[๋ฐฑ์ค] 1463๋ฒ: 1๋ก ๋ง๋ค๊ธฐ - C++ (0) | 2021.07.10 |