초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요.
prices | return |
---|---|
[1, 2, 3, 2, 3] | [4, 3, 1, 1, 0] |
prices
의 길이만큼 반복prices(list_idx[-1])
> stock
인 경우 해당 위치의 결과 계산list_idx
의 마지막 값 : list_idx.pop()
(이하 idx
)answer[idx]
: i - idxi
를 list_idx
에 추가list_idx
에 값이 있다면 남은 위치 결과 계산answer[idx]
: p_len - idx - 1# 코드
def solution(prices):
p_len = len(prices) # prices의 길이
answer = [0 for i in range(p_len)]
list_idx = [] # 인덱스 스택
# prices 각 value의 index를 list_idx에 추가
for i, stock in enumerate(prices):
# 스택 top 인덱스의 값보다 stock가 작은 경우
# 스택 top 인덱스의 결과 계산
while list_idx and stock < prices[list_idx[-1]]:
idx = list_idx.pop()
answer[idx] = i - idx
list_idx.append(i)
# 스택에 값이 남았다면 나머지 결과 계산
while list_idx:
idx = list_idx.pop()
answer[idx] = p_len - idx - 1
return answer