프로그래밍/Algorithm

프로그래머스 주식가격 파이썬

모지사바하 2021. 11. 26. 18:58

https://programmers.co.kr/learn/courses/30/lessons/42584

 

코딩테스트 연습 - 주식가격

초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항 prices의 각 가격은 1 이상 10,00

programmers.co.kr

 

 

쉬운 문제인데 문제 이해에 약간 헷갈리는 부분이 있어서 약간 헤맸다.

 

이 문제는 주식가격이 떨어지지 않은 기간을 구해야하는데 주식가격이 떨어진 지점도 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]))