동물원

문제 링크: https://www.acmicpc.net/problem/1309

 

1309번: 동물원

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

www.acmicpc.net

 

분류를 보니 Dynamic Programming 문제이다.
규칙을 찾기 위해 1부터 4까지 노가다를 해보자.
a1 = 3
a2 = 7
a3 = 17
a4 = 41
...
여기까지 수행을 한 후 규칙을 추측해보자.
an = an-1 * 2 + an-2

이를 적용해서 코드를 정리해보자.

우연히 바로 정답이 떠서 당황했다...

 

  • 정답 코드

      #include<iostream>
      using namespace std;
      #define MOD 9901
    
      int dp[100000] = { 0, };
    
      int main() {
          int n;
          cin >> n;
          dp[0] = 1;
          dp[1] = 3;
          for (int i = 2; i <= n; i++) 
              dp[i] = (2 * dp[i - 1] + dp[i - 2]) % MOD;
    
          cout << dp[n] << endl;
          return 0;
      }

 


'ProblemSolving' 카테고리의 다른 글

[BOJ] 3085_사탕게임  (4) 2021.02.03
[BOJ] 1074_Z  (0) 2021.02.02
[BOJ] 1564_팩토리얼5  (0) 2021.01.31
[BOJ] 1927_최소 힙  (0) 2021.01.29
[BOJ] 1106_호텔  (1) 2021.01.28
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기