def solution(prices):
l = len(prices)
answer = [0] * l
stack = []
for i in range(l):
while stack and prices[stack[-1]] > prices[i]:
t = stack.pop()
answer[t] = i - t
if i != l -1:
stack.append(i)
else:
while stack:
t = stack.pop()
answer[t] = i - t
return answer
stack을 통해 해결했다.
큰 값이 들어올 경우 stack에 index값을 저장하고 그렇지 않으면 stack에 pop 하면서 현재 i 값과 stack에 저장된 index 값을 뺌으로써 떨어지지 않는 시간을 구할 수 있다.
i 가 마지막인 경우 stack에 넣을 필요 없으며 stack을 비워주면서 마지막까지 가격이 떨어지지 않은 것들에 대해서 시간을 구해준다.
백준 문제에서 비슷한 문제가 있어서 쉽게 해결할 수 있었다.
https://www.acmicpc.net/problem/17298