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