초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요.
prices return
[1, 2, 3, 2, 3] [4, 3, 1, 1, 0]
스택을 사용하였다. 스택에 prices의 원소들의 인덱스를 하나씩 넣고 스택의 가장 뒤에 있는 원소와 현재의 원소를 비교하여 현재 원소가 더 작을 경우 가격이 떨어진 것이므로 answer[스택의 가장 뒤에 있는 원소]를 현재 인덱스 - 스택의 가장 뒤에 있는 원소로 저장하고 스택을 pop시킨다. 이렇게 prices를 한번 순회하고 나면 stack에 원소들이 남는다. answer에 0으로 남아있는 원소들은 가격이 한번도 떨어지지 않은 경우이므로 스택의 가장 마지막에 존재하는 원소 - 현재 인덱스를 answer[현재 인덱스]로 저장한다.
def solution(prices):
answer = [0]*len(prices)
stack=[]
for i, cur in enumerate(prices):
while stack and cur<prices[stack[-1]]:
last=stack.pop()
answer[last]=i-last
stack.append(i)
for i in range(len(answer)):
if answer[i]==0:
answer[i]=stack[-1]-i
return answer