초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요.
prices | return |
---|---|
[1, 2, 3, 2, 3] | [4, 3, 1, 1, 0] |
def solution(prices):
answer = []
stock_idx = 0
while stock_idx < len(prices):
now_price = prices[stock_idx]
sec = 0
for i in range(stock_idx + 1, len(prices)):
sec += 1
if now_price > prices[i]:
break
answer.append(sec)
stock_idx += 1
return answer
자신의 가격은 자신 이후에 있는 모든 주식가격과 비교
자신의 주식가격이 떨어지지 않은 시간을 반환해야 하기 때문에 자신의 주식가격과 자신 이후에 있는 주식가격들을 일일이 비교해야 한다.
2중 반복문을 사용해야 한다.
자신의 주식가격을 가져오기 위해 배열의 0번째 요소부터 len(배열) - 2번째 요소까지의 주식가격을 가져와야 한다. 이후, 자신의 인덱스 이후에 등장하는 주식가격을 하나씩 가져와 비교해야 하므로 반복문을 2번 사용하면 해결할 수 있을 것이다.
from collections import deque
def solution(prices):
answer = []
prices = deque(prices)
while prices:
c = prices.popleft()
count = 0
for i in prices:
if c > i:
count += 1
break
count += 1
answer.append(count)
return answer
collections
모듈에서 deque
를 가지고 와 사용하였다.