1578. Minimum Time to Make Rope Colorful
Colorful한 풍선 배열을 만들라고 한다.
풍선의 색상이 담긴 배열 colors
와 풍선을 터트리는 데 걸리는 시간 배열인 neededTime
이 주어진다.
배열을 순서대로 돌며 스택에 담는다. 이때 스택의 마지막 원소의 색상과 현재 스택에 담으려는 풍선의 색상이 같다면, neededTime을 비교한다.
당연히 minimum time을 구하는 것이므로 두 원소를 비교 후, 시간이 더 짧은 풍선을 터트려주면 된다.
class Solution:
def minCost(self, colors: str, neededTime: List[int]) -> int:
answer = 0
stk = []
for color, time in zip(colors, neededTime):
if stk and stk[-1][0] == color:
if time >= stk[-1][1]:
answer += stk.pop()[1]
else:
answer += time
continue
stk.append([color, time])
return answer