MincostTickets
Published at 2021-12-21
class Solution:
def mincostTickets(self, days: List[int], costs: List[int]) -> int:
costOfDays = {0:0} # 날짜:가격
lastDay = days[len(days)-1] # 여행할 제일 마지막 날짜
for day in range(1, lastDay+1):
if day in days: # 여행하려는 날짜에 있는지?
dayAgo = day - 1
weeksAgo = day - 7 if day - 7 >= 0 else 0
monthAgo = day - 30 if day - 30 >= 0 else 0
costOfDays[day] = costOfDays[dayAgo] + costs[0] # 전날 가격에 1일권 가격 더함
costOfDays[day] = min(costOfDays[day], costOfDays[weeksAgo] + costs[1]) # 7일전에 7일권을 샀을때와 가격비교
costOfDays[day] = min(costOfDays[day], costOfDays[monthAgo] + costs[2]) # 30일전에 30일권 샀을때와 가격비교
else:
costOfDays[day] = costOfDays[day-1]
return costOfDays[lastDay]