주식가격

신연우·2021년 1월 10일
0

알고리즘

목록 보기
5/58
post-thumbnail

프로그래머스 - 주식가격

문제 설명

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

제한 사항

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

입출력 예

pricesreturn
[1, 2, 3, 2, 3][4, 3, 1, 1, 0]

풀이

def solution(prices):
    answer = []
    stock_idx = 0
    
    while stock_idx < len(prices):
        now_price = prices[stock_idx]
        sec = 0
        
        for i in range(stock_idx + 1, len(prices)):
            sec += 1
            if now_price > prices[i]:
                break
        
        answer.append(sec)
        stock_idx += 1
    
    return answer

해결 과정

  1. 자신의 가격은 자신 이후에 있는 모든 주식가격과 비교
    자신의 주식가격이 떨어지지 않은 시간을 반환해야 하기 때문에 자신의 주식가격과 자신 이후에 있는 주식가격들을 일일이 비교해야 한다.

  2. 2중 반복문을 사용해야 한다.
    자신의 주식가격을 가져오기 위해 배열의 0번째 요소부터 len(배열) - 2번째 요소까지의 주식가격을 가져와야 한다. 이후, 자신의 인덱스 이후에 등장하는 주식가격을 하나씩 가져와 비교해야 하므로 반복문을 2번 사용하면 해결할 수 있을 것이다.

다른 사람의 풀이

from collections import deque
def solution(prices):
    answer = []
    prices = deque(prices)
    while prices:
        c = prices.popleft()

        count = 0
        for i in prices:
            if c > i:
                count += 1
                break
            count += 1

        answer.append(count)

    return answer

collections 모듈에서 deque를 가지고 와 사용하였다.

profile
남들과 함께하기 위해서는 혼자 나아갈 수 있는 힘이 있어야 한다.

0개의 댓글