문제 설명
초 단위로 기록된 주식가격이 담긴 배열 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은 가격이 떨어지지 않은 기간을 나타내는 변수다.
요즘 토익 공부하느라 블로그 포스팅이 뜸한데, 알고리즘 머리를 다시 일깨우기 위해 간단한 문제를 풀어보았다.
'알고리즘(Python)' 카테고리의 다른 글
[백준/Python(파이썬)] 2667_단지번호붙이기 (0) | 2020.04.30 |
---|---|
[백준/Python(파이썬)] 14891_톱니바퀴 (0) | 2020.03.20 |
[백준/Python] 2037_문자메시지 (0) | 2020.03.02 |
[프로그래머스/Python] 기능개발 (Level - 2) (0) | 2020.02.12 |
[프로그래머스/Python] 다리를 지나는 트럭 (0) | 2020.02.10 |