알고리즘

[프로그래머스 lv 2] 주식가격.py

파뱁 2022. 2. 10. 23:28
728x90

<문제 설명>

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

 

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

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

programmers.co.kr

초단위로 기록된 주식 가격이 담긴 배열이 주어질 대, 해당 가격이 떨어지지 않은 기간은 몇 초 인지를 return 하면 되는 문제이다.

 

입출력의 예는 다음과 같다.

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초간 가격이 떨어지지 않았습니다.

 

<문제 해결 아이디어>

덱을 이용해서 큐를 구현해서 문제를 해결했다.

우선 덱에 가격 정보를 넣어둔다.

그리고 각 덱의 가격이 이후 시점까지 유지되는 지 확인하고, 그 유지가 끝나는 시점을 answer에 append() 한다.

 

<문제 풀이 코드>

from collections import deque
def solution(prices):
    answer = []
    dq = deque(prices)
    while dq:
        cnt = 0
        tmp = dq.popleft()
        for i in dq:
            cnt += 1
            if tmp > i:
                break
        answer.append(cnt)
    return answer

채점 결과

 

728x90
반응형