Recent Posts
Recent Comments
Archives
- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 28 | 29 | 30 |
Tags
- 공연
- 삼성 알고리즘
- 알고리즘
- C++
- Algorithm
- ubuntu
- sw expert academy
- dp
- simulation
- Visual Studio Code
- cube sound
- 백준
- 비주얼 스튜디오 코드
- filezila server
- Graph
- 그래프
- 시뮬레이션
- 아파치
- 동적계획법
- baek joon
- 넓이 우선 탐색
- 다이나믹 프로그래밍
- dynamic programming
- BFS
- 우분투
- 춤
- 배틀
- apache
- dfs
- BOJ
Link
댄코 - 댄싱코딩
[2156] 포도주 시식 본문
이문제는 계단오르기 문제와 동일하게 생각했다가 아닌걸 깨닳았다.
계단과 달리 이문제는 두칸을 뛰어넘을 수 도 있다.
using namespace std;
int main()
{
int N = 0;
int d[10001];
int a[10001];
scanf("%d", &N);
for (int i = 1; i <= N; i++)
{
scanf("%d", &a[i]);
}
d[0] = 0;
d[1] = a[1];
d[2] = a[1] + a[2];
for (int i = 3; i <= N; i++)
{
d[i] = max(d[i-1],max(d[i-2]+a[i],d[i-3]+a[i-1]+a[i]));
}
int res = 0;
for(int i = 1;i<=N;i++){
if(d[i] > res){
res = d[i];
}
}
printf("%d\n", res);
}
우선 경우를 3가지로 나눴다.
이 와인을 안마실경우 — d[i] = d[i-1]
전 와인을 안마시고 현재와인을 마셧을 경우 — d[i] = d[i-2]+a[i]
전 와인을 마시고 현 와인을 마셨을 경우 — d[i] = d[i-3]+a[i-1]+a[i]
3번의 경우가 가장 생각하기 어려웠다.
첫번째 두번째 같은경우 i-3을 해버리면 -값이 나오므로 와인 숫자로 초기화를 해두었다.
'코딩 > 알고리즘' 카테고리의 다른 글
[9461] 파도반 수열 (0) | 2017.07.01 |
---|---|
[10844] 쉬운 계단수 (0) | 2017.07.01 |
[2293] 동전1 (0) | 2017.07.01 |
[9251] LCS (0) | 2017.07.01 |
[2965] 캥거루 세마리 (0) | 2017.06.30 |
Comments