문제 풀이

[c++] 백준 1309 동물원

미분당한 적분상수 2023. 3. 20. 02:34

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

 

1309번: 동물원

첫째 줄에 우리의 크기 N(1≤N≤100,000)이 주어진다.

www.acmicpc.net

간단한 dp문제이다

#include<bits/stdc++.h>
using namespace std;
#define K 9901
int dp[100100][3];
/*
dp[n][0] n번째 줄에 배치하지 않음
dp[n][1] n번째 줄의 왼쪽에만 배치함
dp[n][2] n번째 줄의 오른쪽에만 배치함
*/
int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    int n; cin >> n;
    dp[1][0] = dp[1][1] = dp[1][2] = 1;
    for(int i=2; i<=n; i++){
        // 아무것도 배치하지 않을 때
        dp[i][0] = (dp[i-1][0] + dp[i-1][1] + dp[i-1][2])%K;
        // 왼쪽에 배치할 때
        dp[i][1] = (dp[i-1][0] + dp[i-1][2])%K;
        // 오른쪽에 배치할때
        dp[i][2] = (dp[i-1][0] + dp[i-1][1])%K;
    }
    cout << (dp[n][0] + dp[n][1] + dp[n][2])%K;
    return 0;
}

'문제 풀이' 카테고리의 다른 글

[c++] 백준 13398 연속합 2  (0) 2023.03.22
[c++] 백준 15988 1, 2, 3 더하기 3  (0) 2023.03.20
[c++] 백준 1339 단어 수학  (0) 2023.03.15
[c++] 백준 2138 전구와 스위치  (0) 2023.03.13
[c++] 백준 9251 LCS  (0) 2023.03.08