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 |