[๋ฐฑ์ค(BOJ)] 11727๋ฒ: 2×n ํ์ผ๋ง 2 (Dynamic Programming, C++)
2 x n์, n-1๋ฒ์งธ์์ 2 x 1์ด ์ถ๊ฐ๋ ๊ฒฝ์ฐ, n-2๋ฒ์งธ์์ 1 x 2 2๊ฐ๊ฐ ์ถ๊ฐ๋๊ฑฐ๋ 2 x 2 1๊ฐ๊ฐ ์ถ๊ฐ๋ ๊ฒฝ์ฐ๋ก ์๊ฐํด๋ณผ ์ ์๋ค.
n-2์์์ ๋ ๊ฐ์ง ๊ฒฝ์ฐ๋ฅผ ์ด๋ป๊ฒ ์ ํ์์ผ๋ก ํํํ ๊น ์๊ฐํ๋๋ฐ, ๊ทธ๋ฅ DP[n-2]๋ฅผ 2๊ฐ ์จ๋ณด์ ๋ผ๊ณ ์๊ฐํ๋ค.
๋ฐ๋ผ์, ์ ํ์์
DP[n] = DP[n-1] + DP[n-2] + DP[n-2]
์ด๋ ๊ฒ ๋๋ค.
์ฌ๊ธฐ์ ์ด๊ธฐ๊ฐ์ผ๋ก DP[0]๊ณผ DP[1], ์ฆ n = 1์ธ ๊ฒฝ์ฐ์, n = 2์ธ ๊ฒฝ์ฐ์ ๊ฐ์ด ํ์ํ๋ค.
DP[0] = 1, DP[1] = 2์ด๋ค.
#include <bits/stdc++.h>
using namespace std;
int main(){
int n;
scanf("%d", &n);
vector<int> DP(n);
DP[0] = 1; DP[1] = 3;
for(int i=2; i<n; i++){
DP[i] = (DP[i-1] + DP[i-2] + DP[i-2]) % 10007;
}
printf("%d", DP[n-1]);
}
[๋ฐฑ์ค(BOJ)] 2739๋ฒ: ๊ตฌ๊ตฌ๋จ (์ ์ถ๋ ฅ, C++) (0) | 2021.02.11 |
---|---|
[๋ฐฑ์ค(BOJ)] 9095๋ฒ: 1, 2, 3 ๋ํ๊ธฐ (Dynamic Programming, C++) (0) | 2021.02.11 |
[๋ฐฑ์ค(BOJ)] 11726๋ฒ: 2รn ํ์ผ๋ง (Dynamic Programming, C++) (0) | 2021.02.11 |
[๋ฐฑ์ค(BOJ)] 1463๋ฒ: 1๋ก ๋ง๋ค๊ธฐ (Dynamic Programming, C++) (0) | 2021.02.11 |
[๋ฐฑ์ค(BOJ)] 2742๋ฒ: ๊ธฐ์ฐ N (์ ์ถ๋ ฅ, C++) (0) | 2021.02.10 |