πŸ“¦ Changgo/[Solved.ac] Class2~4

[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;
}
λ°˜μ‘ν˜•