문제
요약
- 초 단위의 가격이 주어진다. 떨어지지 않은 기간은 몇 초인지 배열에 담아 반환.
- 입력 : [1, 2, 3, 4 ,5] => [4, 3, 1, 1, 0]
분류
- 자료구조
- 스택
풀이
1. 내 풀이
- 가격이 떨어지지 않으면 스택에 쌓는다.
- 가격이 떨어지는 순간, 현재 위치와 가격의 인덱스를 생각해 answer 비열을 작성한다.
def solution(prices):
stack = [(0, prices[0])]
answer = [0] * len(prices)
for i in range(1, len(prices)):
while stack and prices[i] < stack[-1][1]:
index, price = stack.pop()
answer[index] = i - index
stack.append((i, prices[i]))
while stack:
i, price = stack.pop()
answer[i] = len(prices) - i - 1
return answer