min cost climbing stairs

이은미·2025년 6월 29일

코테 문제

https://leetcode.com/problems/min-cost-climbing-stairs/description/

코드 구현 및 설명

```java
class Solution {
    Map<Integer, Integer> memo = new HashMap<>(); // 중복을 방지하기 위해서 맵에 넣어두고 중복되는건 불러서 사용하기 -> 이게 dp의 포인트
    int[] cost; // 전역변수로 사용하기 위해서 선언

    public int minCostClimbingStairs(int[] cost) {
        this.cost = cost; // cost에 초기화하기

        return Math.min(result(0), result(1)); // 0번째부터 시작했을때 / 1번째부터 시작했을때 비교해서 작은걸로 return 하기
    }

    int result (int i) { // i == cost[]에서 몇번째인지 나타내는 변수
		    // 예외처리 2가지
        if (i >= cost.length) return 0; // 마지막에서 끝나는게 아니기 때문에 넘어갈 수 있는데 -> 답은 + 되는 값이니까 0을 리턴해서 답에 영향이 가지 않게 처리하기
        if (memo.containsKey(i)) return memo.get(i); // map으로 해놓은 곳에 혹시 그 전에 했던게 있으면 저장해놓은 것을 꺼내서 리턴하기

        int min = cost[i] + Math.min(result(i+1), result(i+2)); // 현재있는 값에서 그 다음값 중에 적은 값을 찾아서 더하기.
        memo.put(i, min); 

        return min;
    }
}```
profile
파이팅 해야지

0개의 댓글