동캄의 코딩도장

프로그래머스 level2 [주식가격] 파이썬 본문

코테/프로그래머스

프로그래머스 level2 [주식가격] 파이썬

동 캄 2021. 12. 7. 00:30

https://programmers.co.kr/learn/courses/30/lessons/42584

 

코딩테스트 연습 - 주식가격

초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항 prices의 각 가격은 1 이상 10,00

programmers.co.kr

#프로그래머스 주식가격
def solution(prices):
    answer = [0]*(len(prices))
    lst=[]
    for i in range (len(prices)):
        lst.append([i,prices[i]])
    stack=[]
    for i in range(len(prices)):
        if stack:
            k=prices[i]
            while stack and stack[-1][1]>k:
                x=stack.pop()
                answer[x[0]]=(i-x[0])
        stack.append(lst[i])
    for ind in range (len(stack)):
        answer[stack[ind][0]]=(i-stack[ind][0])
    return answer

처음에는 dp문제인줄 알고 dp로 접근했는데, 스택과 큐를 이용하는 문제였다.

 

lst라는 변수에 각 변수의 index와 값을 저장한다. 그 후, lst에서 값을 하나씩 가져와서 stack에 넣고, 가져온값이 stack에 있는 값보다 크면 stack의 마지막부터 pop 한다.