GitHubSeob
C++ / 백준 / 1309 / 동물원 본문
문제 |
https://www.acmicpc.net/problem/1309
1309번: 동물원
첫째 줄에 우리의 크기 N(1≤N≤100,000)이 주어진다.
www.acmicpc.net
문제풀이 |
경우의 수를 나눠 DP 하는 문제인 줄 알았는데 총개수를 세고 나니까 단순히 DP 하면 되는 문제였다.
N이 1일 때
배치 X: 1
한 마리 배치: N*2 = 2
= 3
N이 2일 때
배치 X: 1
한 마리 배치: N*2 = 4
두 마리 배치: 2
= 7
N이 3일 때
배치 X: 1
한 마리 배치: N*2 = 6
두 마리 배치: 8
세 마리 배치: 2
= 17
이런 식으로 개수를 세면 규칙이 보인다.
answer[N] = answer[N-1]*2 + answer[N-2]
코드 |
#include <iostream>
#include <vector>
#define DIV 9901
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
int N(0);
cin >> N;
vector<int>answer(100001, 0);
answer[0] = 1;
answer[1] = 3;
for (int idx = 2; idx <= N; ++idx) {
answer[idx] = ((answer[idx - 1] * 2) % DIV + answer[idx - 2]) % DIV;
}
cout << answer[N];
}
'Baekjoon > Silver' 카테고리의 다른 글
C++ / 백준 / 1449 / 수리공 항승 (0) | 2024.04.04 |
---|---|
C++ / 백준 / 4948 / 베르트랑 공준 (0) | 2024.03.28 |
C++ / 백준 / 24498 / blobnom (0) | 2023.12.12 |
C++ / 백준 / 2428 / 표절 (0) | 2023.12.09 |
C++ / 백준 / 2559 / 수열 (1) | 2023.12.07 |