본문 바로가기

동적계획법

(2)
[c++] 9461 파도반 수열 백준 단계별로 풀어보기 [동적계획법 1] 파도반 수열 https://www.acmicpc.net/problem/9461 9461번: 파도반 수열 오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의 www.acmicpc.net [풀이] 파도반 수열. 1 1 1 2 2 3 4 5 7 9 12 16 ... 이 수열만 보더라도 dp[n] = dp[n-2] + dp[n-3] 이라는 점화식을 구할 수 있다. 다만, 수가 커지면 int 범위를 넘어서기 때문에 int가 아니라 long long으로 선언 해야한다. 6번째 삼각형 = 3번째(1) + 5번째(2) 7번째 삼각형 = 6번째 ..
[c++] 백준 2156 포도주 시식 백준 단계별로 풀어보기 [동적계획법 1] 포도주 시식 https://www.acmicpc.net/problem/2156 2156번: 포도주 시식 효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규 www.acmicpc.net [풀이] 이전에 했던 계단오르기와 매우 유사한 동적프로그래밍 문제이다. 따라서 3번 연속 포도주를 마시면 안되기 때문에 다음과 같은 점화식이 도출된다. 1. max[n] = max[n-2] + juice[n] 2. max[n] = max[n-3] + juice[n-1] + juice[n] 다만 계단 오르기 문제와 다르게 유의해야 할 점은 마지막 ..