문제

[프로그래머스] 주식 가격 (LV. 2)

요약

  • 초 단위의 가격이 주어진다. 떨어지지 않은 기간은 몇 초인지 배열에 담아 반환.
  • 입력 : [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