LeetCode/DP심화

983. Minimum Cost For Tickets

hyunkookim 2025. 1. 13. 19:50

983. Minimum Cost For Tickets

 

https://youtu.be/4pY1bsBpIY4?si=PbuLW3CZC5vqdJDg

 

class Solution:
    def mincostTickets(self, days: List[int], costs: List[int]) -> int:
        dp = {}

        def dfs(i):
            if i == len(days):
                return 0
            if i in dp:
                return dp[i]

            dp[i] = float("inf")
            # d: # of days, c: cost
            for d, c in zip([1, 7, 30], costs):
                j = i
                while j < len(days) and days[j] < days[i] + d:
                    j += 1
                dp[i] = min(dp[i], c + dfs(j))
            return dp[i]

        return dfs(0) # 여기서 i=0 는 days array 의 index 임

'LeetCode > DP심화' 카테고리의 다른 글

265. Paint House II  (0) 2025.01.14
256. Paint House  (0) 2025.01.13
91. Decode Ways  (0) 2025.01.13
2466. Count Ways To Build Good Strings  (0) 2025.01.13
2140. Solving Questions With Brainpower  (0) 2025.01.12