[프로그래머스] 주식가격 - python

당고짱·2022년 3월 14일
0

coding-test

목록 보기
27/50
post-thumbnail

✏️ 문제설명

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

⛔️ 제한사항

  • prices의 각 가격은 1 이상 10,000 이하인 자연수입니다.
  • prices의 길이는 2 이상 100,000 이하입니다.

🎈 입출력 예

  • 1초 시점의 ₩1은 끝까지 가격이 떨어지지 않았습니다.
  • 2초 시점의 ₩2은 끝까지 가격이 떨어지지 않았습니다.
  • 3초 시점의 ₩3은 1초뒤에 가격이 떨어집니다. 따라서 1초간 가격이 떨어지지 않은 것으로 봅니다.
  • 4초 시점의 ₩2은 1초간 가격이 떨어지지 않았습니다.
  • 5초 시점의 ₩3은 0초간 가격이 떨어지지 않았습니다.

👩‍💻 내 코드

def solution(prices):
    answer = []
    
    for i in range(len(prices)):
        count = 0
        for j in range(i+1, len(prices)):
            if prices[i] <= prices[j]:
                count += 1
            else:
                count += 1
                break
        answer.append(count)
    return answer

일단 생각나는대로 코드를 구현했다. 그런데 방법이 너무 주먹구구식이라 마음에 들지 않았고 스택과 관련된 문제였기에 다른 방식으로 구현하고 싶었다.
따라서 deque(데크)를 이용해서 스택으로 구현했다.

from collections import deque

def solution(prices):
    answer = []
    d_prices = deque(prices)
    
    while len(d_prices) != 0:
        count = 0
        first = d_prices.popleft()
        
        for p in d_prices:
            count += 1 
            if p < first:
                break
        answer.append(count)
    return answer

파이썬에는 알고리즘에 좋은 라이브러리가 많은 것 같다. deque나 heapq 등등..
자세하게 찾아보고 공부해야겠다^_^ㅎㅎ

profile
초심 잃지 말기 🙂

0개의 댓글