알고리즘(Python)

[Programmers/Python(파이썬)] Level_2 주식가격

mingmaeng 2020. 3. 13. 20:35

문제 설명

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

 

제한사항

- prices의 각 가격은 1 이상 10,000 이하인 자연수입니다.

- prices의 길이는 2 이상 100,000 이하입니다.

 

입출력 예

prices return
[1,2,3,2,3] [4,3,1,1,0]

 


각 시간대별 주식가격이 떨어지지 않은 기간이 몇 초인지를 구하는 문제다. 간단한 스택/큐 문제로 큐를 이용하면 쉽게 문제를 풀 수 있다.

prices 리스트를 큐로 바꿔  pop해주고, 큐 리스트에 남아있는 요소들과 하나씩 비교 한다.

이 때 가격이 떨어지지 않은 기간을 answer 리스트에 넣어줘야 하기 때문에 몇 초인지를 나타내는 변수에 값을 1씩 늘려준다. 가격이 떨어졌을 경우 반복문을 종료하고 최종적인 기간을 answer 리스트에 추가해주면 끝난다.

아래는 코드 전문이다.

 

from collections import deque

def solution(prices):
    answer = []
    
    que_prices = deque(prices)
    
    while que_prices :
        price = que_prices.popleft()
        up_time = 0
        for n in que_prices :
            up_time += 1
            if price > n :
                break
        answer.append(up_time)
        
    return answer

 

que_prices라는 큐를 만들어주고 popleft()를 이용하여 좌측요소를 빼주고 up_time은 가격이 떨어지지 않은 기간을 나타내는 변수다.

 


요즘 토익 공부하느라 블로그 포스팅이 뜸한데, 알고리즘 머리를 다시 일깨우기 위해 간단한 문제를 풀어보았다.