728x90
[백준] 포도주 시식 (2156번 JAVA) (!) / 401 - 다이나믹 프로그래밍 1 (연습)
[접근 방법]
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.*;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
int[] arr = new int[N+1];
for(int i=1; i<=N; i++){
arr[i] = Integer.parseInt(br.readLine());
}
int[] DP = new int[N+1];
DP[1] = arr[1];
if (N > 1) {
DP[2] = arr[1] + arr[2];
}
for(int i=3; i<=N; i++) {
DP[i] = Math.max( DP[i-1], Math.max( DP[i-2] + arr[i] , DP[i-3] + arr[i-1] + arr[i]));
}
/*
0 1 2 3
X X O X // DP[i-1]
X O X O // DP[i-2] + arr[i]
O X O O // DP[i-3] + arr[i-1] + arr[i]
*/
bw.write(DP[N] + "\n");
bw.flush();
bw.close();
}
}
0 1 2 3 (번째)
X X O X // DP[i-1]
X O X O // DP[i-2] + arr[i]
O X O O // DP[i-3] + arr[i-1] + arr[i]
728x90
'백준 > DP' 카테고리의 다른 글
[백준] 가장 큰 증가 부분 수열 (!) (11055번 JAVA) / 401 - 다이나믹 프로그래밍 1 (연습) (0) | 2023.01.20 |
---|---|
[백준] 정수 삼각형 (1932번 JAVA) / 401 - 다이나믹 프로그래밍 1 (연습) (1) | 2023.01.20 |
[백준] 스티커 (9465번 JAVA) (!) / 401 - 다이나믹 프로그래밍 1 (연습) (0) | 2023.01.19 |
[백준] 오르막 수 (11057번 JAVA) (!) / 401 - 다이나믹 프로그래밍 1 (연습) (1) | 2023.01.19 |
[백준] 동물원 (1309번 JAVA) / 401 - 다이나믹 프로그래밍 1 (연습) (0) | 2023.01.17 |