[백준/Java] 2579 - 계단 오르기

2025. 9. 1. 22:35·코딩테스트/백준

https://www.acmicpc.net/problem/2579

문제


풀이

계단을 오를 때 합을 계속 기억하고 있어야 하기 때문에 다이내믹 프로그래밍으로 풀어야 한다

Top-Down 재귀 형식으로 해결하려 하는데 핵심은 N-1 일 때는 재귀 호출을 하지 않는다는 점이다

왜냐하면 연속된 세 개의 계단은 밟을 수 없기 때문에 N-2의 dp값과 N-3 dp값에 arr[N-1]을 더한 값 중 큰 것을 선택하고 자기 자신의 값을 더한 것을 dp[N]으로 한다

코드

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;


public class Main {

    static Integer[] dp;
    static int[] arr;

    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;
        StringBuilder sb = new StringBuilder();

        int N = Integer.parseInt(br.readLine());
        dp = new Integer[N + 1];
        arr = new int[N + 1];
        for (int i = 1; i <= N; i++) {
            arr[i] = Integer.parseInt(br.readLine());
        }

        dp[0] = arr[0];
        dp[1] = arr[1];

        // N이 1이 나올 수 있으니 N이 2 이상일 때만 dp[2] 초기 설정
        if (N >= 2) {
            dp[2] = arr[1] + arr[2];
        }

        System.out.println(stair(N));
    }


    static int stair(int N) {
        if (dp[N] == null) {
            dp[N] = Math.max(stair(N - 2), stair(N - 3) + arr[N - 1]) + arr[N];
        }
        return dp[N];
    }

}

결과

'코딩테스트/백준' 카테고리의 다른 글
  • [백준/Java] 9416 - 파도반 수열
  • [백준/Java] 2606 - 바이러스
  • [백준/Java] 1003 - 피보나치 함수
  • [백준/Java] 17219 - 비밀번호 찾기
KDH.dev
KDH.dev
  • KDH.dev
    CodingHard
    KDH.dev
  • 전체
    오늘
    어제
    • 전체글 (82)
      • 코딩테스트 (74)
        • 프로그래머스 (13)
        • 백준 (61)
      • CS (4)
        • 네트워크 (4)
      • Spring (1)
      • Java (3)
        • 자료구조 (3)
        • 알고리즘 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    30804
    멀티캠퍼스it부트캠프
    11660
    프로그래머스
    5525
    14940
    [LG유플러스] 유레카 백엔드 개발자
    13913
    부트캠프후기
    자바
    자료구조
    백준
    17626
    코딩테스트
    18111
    프로그래머스 Lv.0
    CS
    16935
    네트워크
    21736
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
KDH.dev
[백준/Java] 2579 - 계단 오르기
상단으로

티스토리툴바