📢 공지합니다
이 게시글은 메인 페이지에 항상 고정되어 표시됩니다.
https://www.acmicpc.net/problem/2156
package dp;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class DP2156 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int[] podo = new int[N + 1];
int[] dp = new int[N + 1];
for (int i = 1; i < N + 1; i++) {
podo[i] = Integer.parseInt(br.readLine());
}
dp[1] = podo[1];
if (N > 1) {
dp[2] = podo[1] + podo[2];
}
for (int i = 3; i < N + 1; i++) {
dp[i] = Math.max(dp[i - 1], Math.max(dp[i - 3] + podo[i - 1] + podo[i], dp[i - 2] + podo[i]));
}
System.out.println(dp[N]);
}
}
OOX - dp[i-1]
OXO - dp[i-2] + podo[i]
XOO - dp[i-3] + podo[i] + podo[i-1]
이렇게 유추해서 구하면 되는 간단한 문제이다!!! 생각만 잘하면~~
[백준 2805번] 나무 자르기 (0) | 2025.04.01 |
---|---|
[백준 11052번] 카드 구매하기 (0) | 2025.03.25 |
[백준 15666번] 로봇 조종하기 (0) | 2025.03.24 |
[백준 15666번] N과 M(12) (0) | 2025.03.23 |
[백준 2877번] 4와 7 (0) | 2025.03.19 |