프로그래머스 주식가격

맹민재·2023년 4월 4일
0

알고리즘

목록 보기
26/134
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

profile
ㄱH ㅂrㄹ ㅈr

0개의 댓글