코테 연습>스텍/큐>주식가격

Doyeon Kim·2022년 1월 21일

코딩테스트 공부

목록 보기
15/171

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

제한사항
prices의 각 가격은 1 이상 10,000 이하인 자연수입니다.
prices의 길이는 2 이상 100,000 이하입니다.
입출력 예
prices return
[1, 2, 3, 2, 3][4, 3, 1, 1, 0]
입출력 예 설명
1초 시점의 ₩1은 끝까지 가격이 떨어지지 않았습니다.
2초 시점의 ₩2은 끝까지 가격이 떨어지지 않았습니다.
3초 시점의 ₩3은 1초뒤에 가격이 떨어집니다. 따라서 1초간 가격이 떨어지지 않은 것으로 봅니다.
4초 시점의 ₩2은 1초간 가격이 떨어지지 않았습니다.
5초 시점의 ₩3은 0초간 가격이 떨어지지 않았습니다.


간단하게 생각해서 주식이 떨어지기 전까지를 구하면 되는 문제이다.
그리고 코드로 구현하던 중에 각 값들을 한바퀴 돈다는(?) 것을 코드로 구현하는게 조금 막혔다..

from collections import deque

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

prices로 queue를 초기화 시킨 후에 반복문을 돌면서 앞에서부터 하나씩 popleft해서 popleft한 뒤의, 남은 queue를 순회하며 값이 작아지기 전까지 초를 증가시키는 것을 queue가 빌때까지 반복하면 된다.

popleft() 메소드는 왼쪽에서(index=0)에서 꺼낸다라고 직관적으로 이해하면 더 쉽다

+)https://velog.io/@soo5717/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%A3%BC%EC%8B%9D%EA%B0%80%EA%B2%A9-Python

profile
성장하고 도전하는 개발자. 프로그래밍 좋아하세요?

0개의 댓글