[Algorithm] 백준_김밥천국의 계단_28069번 (JAVA)

2025. 4. 24. 15:45·Algorithm

📝문제


💡풀이

문제 유형

다이나믹 프로그래밍

 

걸린 시간

1시간 30분

 

시간 복잡도

O(N)

 

풀이 방법 도출

  1. 처음엔 bfs로 접근했다가 메모리 초과 문제로 dp로 돌렸다.
  2. 문제가 좀 애매했던 거 같다.
  3. 계단 오르는 횟수를 정확히 K번 가려면 dp[N]==K여야 하는 줄 알았지만
  4. 생각을해보니 dp[0]은 순간이동으로 몇번째 행동에도 계속 0에 있을 수 있다.
  5. 이는 곧 최소 횟수만 구하면 그 이후의 횟수는 맘대로 늘리기가 가능하다는 것이다.
  6. 그래서 dp[N] <= K이기만 하면 답이 성립되는 것이다.
  7. 아래 두 식을 사용하여 점화식으로 답을 구했다.
  8. dp[i+1] = Math.min(dp[i+1], dp[i]+1)
  9. dp[i+i/2] = Math.min(dp[i+i/2], dp[i]+1)
import java.util.*;
import java.io.*;

class Main {
    static final int INF = Integer.MAX_VALUE;

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

        int N = Integer.parseInt(st.nextToken());
        int K = Integer.parseInt(st.nextToken());

        int[] dp = new int[N + 1];
        Arrays.fill(dp, INF);

        dp[0] = 0;

        for (int i = 0; i < N; i++) {
            if (i + 1 <= N) {
                dp[i + 1] = Math.min(dp[i + 1], dp[i] + 1);
            }
            if (i + i / 2 <= N) {
                dp[i + i / 2] = Math.min(dp[i + i / 2], dp[i] + 1);
            }
        }

        System.out.println(dp[N] <= K ? "minigimbob" : "water");

    }
}

🤔Review

꽤 새로운 시각으로의 접근이 필요했던 문제였다.

'Algorithm' 카테고리의 다른 글

[Algorithm] 백준_줄 세우기_2252번 (JAVA) 위상정렬 알고리즘  (1) 2025.04.30
[Algorithm] 백준_나의 인생에는 수학과 함께_17265번 (JAVA)  (2) 2025.04.25
[Algorithm] 백준_강아지는 많을수록 좋다_27971번 (JAVA) BFS, DP  (0) 2025.04.23
[Algorithm] 백준_테트로미노_14500번 (JAVA)  (0) 2025.04.22
[Algorithm] 프로그래머스_신규 아이디 추천 (JAVA) 정규표현  (1) 2025.04.21
'Algorithm' 카테고리의 다른 글
  • [Algorithm] 백준_줄 세우기_2252번 (JAVA) 위상정렬 알고리즘
  • [Algorithm] 백준_나의 인생에는 수학과 함께_17265번 (JAVA)
  • [Algorithm] 백준_강아지는 많을수록 좋다_27971번 (JAVA) BFS, DP
  • [Algorithm] 백준_테트로미노_14500번 (JAVA)
dev_ajrqkq
dev_ajrqkq
알고리즘 천재가 될 거야
  • dev_ajrqkq
    기록이 자산이다
    dev_ajrqkq
  • 전체
    오늘
    어제
    • 분류 전체보기 (156)
      • Front-end (0)
      • Back-end (4)
        • Spring (1)
        • Java (8)
      • CS (9)
        • 데이터베이스 (5)
        • 네트워크 (4)
      • Algorithm (85)
      • 이것저것 (0)
      • 버그잡기 (1)
      • TIL (37)
      • 후기 (3)
      • 취준 (0)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      패스트캠퍼스후기
      직장인자기계발
      오공완
      TypeScript
      습관형성
      코딩테스트준비
      티스토리챌린지
      항해99
      오블완
      개발자취업
      패스트캠퍼스
      99클럽
      Til
      환급챌린지
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.2
    dev_ajrqkq
    [Algorithm] 백준_김밥천국의 계단_28069번 (JAVA)
    상단으로

    티스토리툴바