초 단위로 기록된 주식 가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 반환하도록 solution( ) 함수를 완성하세요.
제약조건
prices의 각 가격은 1 이상 10,000 이하인 자연수입니다.
prices의 길이는 2 이상 100,000 이하입니다.
입출력의 예
1초 시점의 ₩1은 끝까지 가격이 떨어지지 않았습니다.
2초 시점의 ₩2은 끝까지 가격이 떨어지지 않았습니다.
3초 시점의 ₩3은 1초 뒤에 가격이 떨어집니다. 따라서 1초간 가격이 떨어지지 않은 것으로 봅니다.
4초 시점의 ₩2은 1초간 가격이 떨어지지 않았습니다.
5초 시점의 ₩3은 0초간 가격이 떨어지지 않았습니다.
def solution(prices):
n = len(prices)
answer = [0]*n # 가격이 떨어지지 않은 기간을 저장할 배열
stack = [0] # 스택을 사용해 이전 가격과 현재 가격 비교
for i in range(1,n):
while stack and prices[i] < prices[stack[-1]]: # 가격이 떨어졌으므로 이전 가격의 기간 계산
j = stack.pop()
answer[j] = i-j
stack.append(i)
# 스택에 남아있는 가격들은 가격이 떨어지지 않은 경우
while stack:
j = stack.pop()
answer[j] = n-1-j
return answer