티스토리 뷰
처음 dp를 배우면 풀게되는 문제다
많이 틀리는 이유는 mod때문이 아닐까 싶다..!
수가 커질수있으니 매번 더하고 mod를 해줬다!
1,2,3으로 표현해야하므로
현재수 d[n]을 표현하는 방법은
1. d[n-1] 에 1더하기
2. d[n-2] 에 2더하기
3. d[n-3] 에 3더하기
이렇게 3가지 방법이 있다
결국 d[n] = d[n-1]+d[n-2]+d[n-3] 이다!
소스코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
#include <iostream>
#include <algorithm>
using namespace std;
#define ll long long
ll n;
ll d[1000002];
const ll mod = 1e9+9;
int main(){
scanf(" %lld",&n);
d[1]=1;
d[2]=2;
d[3]=4;
for(int i=4;i<=1000000;i++) {
d[i]+=d[i-1];
d[i]%=mod;
d[i]+=d[i-2];
d[i]%=mod;
d[i]+=d[i-3];
d[i]%=mod;
}
while(n--){
int k; scanf(" %d",&k);
printf("%lld\n",d[k]);
}
}
|
'알고리즘 > BOJ' 카테고리의 다른 글
[백준] 14002 가장 긴 증가하는 부분 수열 4 (0) | 2020.01.25 |
---|---|
[백준] 15990 1,2,3 더하기 5 (0) | 2020.01.24 |
[백준] 15658 연산자 끼워넣기 (2) (0) | 2020.01.24 |
[백준] 17505 링고와 순열 (0) | 2019.11.08 |
[백준] 17503 맥주 축제 (0) | 2019.11.08 |
댓글