From 6ee3874b3ce4118b3783531d28549f3de2885cde Mon Sep 17 00:00:00 2001 From: IAM <83930018+syslians@users.noreply.github.com> Date: Sun, 17 Aug 2025 22:00:28 +0900 Subject: [PATCH] Create BackJoon2579.java MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 점화식 유도 dp[i] = i번째 계단까지 올라섰을 때 얻을 수 있는 최대 점수 1. 마지막 계단(i)은 반드시 밟아야 한다. 2. 두 가지 경우가 있음: i-2 → i (한 칸 건너뛰고 오름) dp[i-2] + score[i] i-3 → i-1 → i (중간에 한 계단을 밟음, 3연속 방지) dp[i-3] + score[i-1] + score[i] --- .../BackJoon2579.java" | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 "KHJ_Root/\353\260\261\354\244\200\353\254\270\354\240\234/BackJoon2579.java" diff --git "a/KHJ_Root/\353\260\261\354\244\200\353\254\270\354\240\234/BackJoon2579.java" "b/KHJ_Root/\353\260\261\354\244\200\353\254\270\354\240\234/BackJoon2579.java" new file mode 100644 index 0000000..27ab838 --- /dev/null +++ "b/KHJ_Root/\353\260\261\354\244\200\353\254\270\354\240\234/BackJoon2579.java" @@ -0,0 +1,27 @@ +import java.util.Scanner; + +public class Main { + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + + int n = sc.nextInt(); // 계단 개수 + int[] score = new int[n + 1]; + int[] dp = new int[n + 1]; + + for (int i = 1; i <= n; i++) { + score[i] = sc.nextInt(); + } + + // 초기값 설정 + dp[1] = score[1]; + if (n >= 2) dp[2] = score[1] + score[2]; + if (n >= 3) dp[3] = Math.max(score[1] + score[3], score[2] + score[3]); + + // 점화식 적용 + for (int i = 4; i <= n; i++) { + dp[i] = Math.max(dp[i-2], dp[i-3] + score[i-1]) + score[i]; + } + + System.out.println(dp[n]); + } +}