스택 - 주식 가격

은아·2024년 1월 2일
0

코딩테스트

목록 보기
5/5

초 단위로 기록된 주식 가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 반환하도록 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):
    n = len(prices)
    answer = [0]*n # 가격이 떨어지지 않은 기간을 저장할 배열
    
    stack = [0] # 스택을 사용해 이전 가격과 현재 가격 비교
    for i in range(1,n):
        while stack and prices[i] < prices[stack[-1]]: # 가격이 떨어졌으므로 이전 가격의 기간 계산
            j = stack.pop()
            answer[j] = i-j
        stack.append(i)
        
    # 스택에 남아있는 가격들은 가격이 떨어지지 않은 경우
    while stack:
        j = stack.pop()
        answer[j] = n-1-j
            
    return answer
profile
Junior Developer 개발 기술 정리 블로그

0개의 댓글