https://programmers.co.kr/learn/courses/30/lessons/42584
쉬운 문제인데 문제 이해에 약간 헷갈리는 부분이 있어서 약간 헤맸다.
이 문제는 주식가격이 떨어지지 않은 기간을 구해야하는데 주식가격이 떨어진 지점도 1초후라고 판단해야한다.
예를들어 주식가격이 [1, 2, 3, 2, 3, 1] 일때, 두번째 요소인 2는 3,2,3 이후인 1을 만나면 가격이 떨어지므로 3 초 후 주식가격이 떨어진다고 생각하면 틀린다.
아래와 같이 총 4초후 값이 떨어진다고 생각해야한다.
2 -> 3 1초
3 -> 2 1초
2 -> 3 1초
3 -> 1 1초
그 외엔 어려운 점이 없다.
풀이:
1. 주식가격을 순회한다.
2. 주식의 첫번째 요소를 꺼낸다.
3. 주식목록의 나머지 요소를 순회하면서 걸리는 시간에 1초를 더한다.
4. 현재 주식가격보다 낮은 주식가격을 만나면 루프를 종료한다.
5. 구해진 시간을 정답에 추가한다.
from collections import deque
def solution(prices):
answer = []
prices = deque(prices)
while prices:
sec = 0
p = prices.popleft()
for price in prices:
sec += 1
if price < p:
break
answer.append(sec)
return answer
print(solution([1, 2, 3, 2, 3, 1]))