🧫 문제 분석
✔️ 출처
📖 문제


dp 문제로
나올 수 있는 경우는
1. 2칸을 점프해서 도달
2. 2칸 점프 + 한칸 앞으로
인 경우 뿐이다.
따라서
// 2칸 점프 도달 2칸 점프 후 한칸 앞으로
dp[i] = Math.max(dp[i-2] + stairs[i], dp[i-3] + stairs[i-1] + stairs[i])
🔅 문제 풀이
import java.io.*;
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[] stairs = new int[n + 1];
int[] dp = new int[n + 1];
for (int i = 1; i <= n; i++) {
stairs[i] = Integer.parseInt(br.readLine());
}
dp[1] = stairs[1];
if (n > 1) dp[2] = stairs[2] + dp[1];
for (int i = 3; i <= n; i++) {
dp[i] = Math.max(stairs[i - 1] + stairs[i] + dp[i - 3], dp[i-2] + stairs[i]);
}
bw.write(dp[n] + "\n");
bw.flush();
bw.close();
}
}
❗ 오답노트 / 필요한 지식
- 문제를 잘 읽자.. 최솟값이 아니라 최댓값이다.
'baekjoon > DP' 카테고리의 다른 글
백준 2839번 : 설탕 배달 자바 (0) | 2024.08.25 |
---|---|
백준 9461번 : 파도반 수열 자바 (0) | 2024.08.24 |
백준 1436번 : 1로 만들기 자바 (0) | 2024.08.15 |
백준 2156번 : 포도주 시식 자바 (0) | 2024.08.07 |
백준 2193번 : 이진수 자바 (0) | 2024.07.10 |