
-Code
import java.io.*;
import java.util.*;
public class BOJ2156 {
public static void main(String[] args) throws Exception {
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
int cnt = Integer.parseInt(br.readLine());
// 와인 배열 초기화
int[] wineVal = new int[cnt + 1];
for (int i = 1; i <= cnt; i++) {
wineVal[i] = Integer.parseInt(br.readLine());
}
// DP
int[][] dp = new int[cnt + 1][3];
for (int i = 1; i <= cnt; i++) {
// 안고르는 경우
dp[i][0] = Math.max(dp[i - 1][0], Math.max(dp[i - 1][1], dp[i - 1][2]));
// 연속하지 않고 내거 고르는 경우
dp[i][1] = dp[i - 1][0] + wineVal[i];
// 연속해서 2개 고르는 경우
dp[i][2] = dp[i - 1][1] + wineVal[i];
}
int answer = 0;
for (int i = 0; i < 3; i++) {
answer = Math.max(answer, dp[cnt][i]);
}
System.out.println(answer);
}
}
처음에는 상태를 2개로 보고 작성해서 와인을 안고른 경우가 빠져서 문제가 생겼습니다. 그래서 안고른 상태도 고려해야 한다는 것을 알게된 후 해결하게 되었습니다.
'Beakjoon&프로그래머스 > Java' 카테고리의 다른 글
| [백준/Java] 9251번 LCS (0) | 2026.01.16 |
|---|---|
| [백준/Java] 9151번 Starship Hakodate-maru (0) | 2026.01.16 |
| [백준/Java] 2579번 계단 오르기 (0) | 2026.01.16 |
| [프로그래머스/Java] 베스트앨범 (0) | 2026.01.15 |
| [백준/Java] 32952번 비트코인 반감기 (0) | 2026.01.15 |