MinimumTimeToMakeRopeColorful
Published at 2022-08-17
class Solution:
def minCost(self, colors: str, neededTime: List[int]) -> int:
ans = 0
# greedy로, 바로 앞에꺼랑 비교해서 적은 코스트 풍선 없애기
for i in range(1, len(colors)):
if colors[i-1] == colors[i]:
if neededTime[i-1] < neededTime[i]:
ans += neededTime[i-1]
else:
ans += neededTime[i]
neededTime[i] = neededTime[i-1]
# △ 예외케이스 방어: 만약 똑같은 풍선 3개 5,4,8인 경우면
# 적은 코스트를 지우니까 4가 제일먼저 지워질텐데
# 그렇게하면 그 다음번 인덱스 검사할 때 또 4가 코스트 적기때문에
# 또 4에 해당하는 풍선 지우게됨
# 그래서 4자리에 그 다음으로 적은 코스트를 넣어주는것
return ans