์ƒ์„ธ ์ปจํ…์ธ 

๋ณธ๋ฌธ ์ œ๋ชฉ

[๋ฐฑ์ค€(BOJ)] 11727๋ฒˆ: 2×n ํƒ€์ผ๋ง 2 (Dynamic Programming, C++)

PROGRAMMING/Algorithm

by koharin 2021. 2. 11. 12:51

๋ณธ๋ฌธ

728x90
๋ฐ˜์‘ํ˜•

๐Ÿ“ ๋ฌธ์ œํ’€์ด ๊ณผ์ •


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์ด๋‹ค.

 

๐Ÿ’ป C++ ์ œ์ถœ์ฝ”๋“œ


#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]);

}

 

๐Ÿ‘ ๊ฒฐ๊ณผ


728x90
๋ฐ˜์‘ํ˜•

๊ด€๋ จ๊ธ€ ๋”๋ณด๊ธฐ