leecom116

제이의 기술 블로그
  • Print (216)
    • Frontend (29)
      • React (3)
      • HTML, CSS (8)
      • JavaScript (11)
      • JQuery (4)
      • JSP (2)
    • Backend (59)
      • Java (31)
      • Spring (11)
      • Spring Boot (0)
      • Python (1)
      • Node.js (1)
      • C, C++ (12)
      • Linux (2)
    • Database (3)
      • MariaDB (0)
      • Oracle (0)
      • MySQL (0)
    • Project (1)
    • Algorithm (67)
      • 백준 (43)
      • 프로그래머스 (0)
      • 이코테 (6)
      • 코드업 (17)
    • Tool (2)
      • Git (1)
      • Log (1)
    • CS (4)
    • Tech Interview (18)
      • Java (9)
      • Web (9)
    • Study (31)
      • 인프런 (3)
      • 정보처리기사 (8)
      • util (4)
      • 쌍용 (14)

깃허브

    https://github.com/leecom116

«   2025/07   »
일 월 화 수 목 금 토
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

최근 글

인기 글

블로그 메뉴

  • 홈
  • 태그
  • 방명록

태그

  • 자바의 정석
  • 코드업
  • HTML
  • 객체 배열
  • Associate
  • CSS
  • 나도코딩
  • 산술 변환
  • 자바 예외 처리
  • 참조형 변수
  • 코드업 2차원 배열
  • 나선형 모델
  • JSP
  • char
  • Web Developer
  • 논리 연산자
  • 웹 개발
  • 자바 인터페이스
  • 코드업 기초100제
  • C언어 프로젝트
  • 웹 개발 부트캠프
  • man month
  • 델파이 기법
  • 정보공학 방법론
  • 웹개발
  • static메서드
  • 메타포어
  • c언어
  • 코드업 기초
  • 의존성 주입

최근 댓글

hELLO · Designed By 정상우.
leecom116
Algorithm/백준

[백준 2579] 계단 오르기(JAVA)

2025. 1. 4. 17:00
import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {

    // 배열 인덱스에 해당하는 계단 점수 최대값
    static Integer[] dp;

    // 입력한 계단 점수 저장
    static int[] arr;

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        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());
        }

        // 0으로 초기화
        dp[0] = arr[0];
        dp[1] = arr[1];

        if(N >= 2)
            dp[2] = arr[1] + arr[2];

        // 재귀 함수 호출
        System.out.println(getMaxScore(N));
    }

    // 작은 계단층들의 최댓값들을 구해나가면서, 최종 계단 층에 해당하는 최대값 반환
    static int getMaxScore(int N) {

        if(dp[N] == null) {
            // 연속해서 3계단을 밟는 경우 제외
            // ex) N이 10일 경우, 8층에서 10층으로 가는 케이스와
            //     7층에서 9층, 10층 가는 케이스 두 가지의 경우가 존재함
            dp[N] = Math.max(getMaxScore(N-2), getMaxScore(N-3) + arr[N-1]) + arr[N];
        }
        return dp[N];
    }
}
저작자표시 (새창열림)

'Algorithm > 백준' 카테고리의 다른 글

[백준 9461] 파도반 수열  (0) 2025.01.09
[백준 17626] Four Squares(Java)  (0) 2025.01.07
[2606] 바이러스(Java)  (0) 2024.12.12
백준 15649 (N과 M (1))  (0) 2024.03.24
백준 2667 (단지번호붙이기)  (0) 2024.03.21
    'Algorithm/백준' 카테고리의 다른 글
    • [백준 9461] 파도반 수열
    • [백준 17626] Four Squares(Java)
    • [2606] 바이러스(Java)
    • 백준 15649 (N과 M (1))
    leecom116
    leecom116

    티스토리툴바