๐Ÿ’  BOJ/Class 3

[BOJ][C++] ๋ฐฑ์ค€ 11726๋ฒˆ: 2xn ํƒ€์ผ๋ง

์„ ๋‹ฌ 2023. 2. 23. 23:27
๋ฐ˜์‘ํ˜•

https://www.acmicpc.net/problem/11726

 

11726๋ฒˆ: 2×n ํƒ€์ผ๋ง

2×n ํฌ๊ธฐ์˜ ์ง์‚ฌ๊ฐํ˜•์„ 1×2, 2×1 ํƒ€์ผ๋กœ ์ฑ„์šฐ๋Š” ๋ฐฉ๋ฒ•์˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ์•„๋ž˜ ๊ทธ๋ฆผ์€ 2×5 ํฌ๊ธฐ์˜ ์ง์‚ฌ๊ฐํ˜•์„ ์ฑ„์šด ํ•œ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์˜ ์˜ˆ์ด๋‹ค.

www.acmicpc.net

 

๋ฌธ์ œ

2×n ํฌ๊ธฐ์˜ ์ง์‚ฌ๊ฐํ˜•์„ 1×2, 2×1 ํƒ€์ผ๋กœ ์ฑ„์šฐ๋Š” ๋ฐฉ๋ฒ•์˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์•„๋ž˜ ๊ทธ๋ฆผ์€ 2×5 ํฌ๊ธฐ์˜ ์ง์‚ฌ๊ฐํ˜•์„ ์ฑ„์šด ํ•œ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์˜ ์˜ˆ์ด๋‹ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— n์ด ์ฃผ์–ด์ง„๋‹ค. (1 ≤ n ≤ 1,000)

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— 2×n ํฌ๊ธฐ์˜ ์ง์‚ฌ๊ฐํ˜•์„ ์ฑ„์šฐ๋Š” ๋ฐฉ๋ฒ•์˜ ์ˆ˜๋ฅผ 10,007๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

ํ’€์ด

2*n ์— ์ฑ„์šฐ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋Š”

 

1. 2*(n-1)์„ ์ฑ„์šฐ๊ณ  ์„ธ๋กœ ์ง์‚ฌ๊ฐํ˜•(2*1) ๋ผ์šฐ๊ธฐ

2. 2*(n-2)๋ฅผ ์ฑ„์šฐ๊ณ  ๊ฐ€๋กœ ์ง์‚ฌ๊ฐํ˜•(1*2) ๋‘๊ฐœ ๋ผ์šฐ๊ธฐ

 

๋™์ ๊ณ„ํš๋ฒ•์œผ๋กœ ํ’€์ด ๊ฐ€๋Šฅํ•˜๋‹ค

 

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

const int MAX_N = 1000 + 1;
const int MOD = 10007;

int main() {
    ios_base::sync_with_stdio(false); cin.tie(NULL);
    
    vector<int> dp(MAX_N);
    dp[1] = 1;
    dp[2] = 2;
    for(int i=3; i<MAX_N; i++)
        dp[i] = (dp[i-2] + dp[i-1])%MOD;
    
    int n;
    cin >> n;
    
    cout << dp[n];
    
    return 0;
}
๋ฐ˜์‘ํ˜•