티스토리 뷰
간단한 다이나믹 프로그래밍 문제이다.
예제에 나온걸 예로 들면
6 10 13 9 까지만 있다고 쳤을때
x
x o
x o o
연속해서 세잔을 마실 수가 없으므로 세가지 경우가 나타날 수 있다.
1.마지막 잔을 마시지 않고 그전 잔만 있다고 생각했을때 최대 마실수 있는양
2.마지막 잔을 + 그전전 잔까지만 있다고 생각했을때 최대 마실수 있는양
3. 마지막 잔과 그 전 잔 + 그전전 까지의 포도주의 최대 시식량
이 세가지 경우중에 최대가 되는것을 택하면 6 10 13 9 의 양을 가진 포도주잔들이 있을때 마실수 있는 포도주의 최대 양을 구할 수 있게 된다.
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 | #include<iostream> #include<algorithm> using namespace std; int input[10001]; int dp[10001]; int n; int main() { cin>>n; for(int i=1; i<=n; i++) cin>>input[i]; dp[0]=0; dp[1] = input[1]; dp[2] = input[1]+input[2]; for(int i=3; i<=n; i++) { dp[i] = max(dp[i-1],dp[i-2]+input[i]); dp[i] = max(dp[i],dp[i-3]+input[i]+input[i-1]); } cout<<dp[n]<<endl; return 0; } | cs |
'알고리즘' 카테고리의 다른 글
[문자열처리/중하] 2941번 크로아티아 알파벳 (0) | 2017.10.08 |
---|---|
[DP/난이도 중하] 동전 2(다시한번 풀어보기) (0) | 2017.10.06 |
[dfs/bfs/체감난이도 하] 2667번 단지번호붙이기 (0) | 2017.10.06 |
백준 10757번 큰 수 A+B (0) | 2017.09.20 |
[백준/중하] 11053번 가장 긴 증가하는 부분 수열 (LIS,DP,다이나믹 프로그래밍) (1) | 2017.08.31 |
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- type alias
- hydrate
- useEffect
- reflow
- mobx
- useRef
- await
- javascript
- react hooks
- async
- react
- Action
- props
- server side rendering
- Polyfill
- storybook
- reducer
- atomic design
- promise
- design system
- rendering scope
- es6
- state
- Babel
- return type
- Next.js
- webpack
- reactdom
- typescript
- computed
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함