[Python][프로그래머스][Level2] 주식가격

[Python][프로그래머스][Level2] 주식가격

코드

def solution(prices):
    answer=[]
    check=[[0,prices[0]]]
    
    for idx in range(1,len(prices)):
        while check and check[-1][1]>prices[idx]:
            i,a=check.pop()
            answer.append([i,idx-i])
        check.append([idx,prices[idx]])
    
    for idx, ck in check:
        answer.append([idx,len(prices)-1-idx])
    
    return [ck for idx,ck in sorted(answer)]

스택을 활용해 문제를 풀었다.

index와 값을 저장하는 배열 check를 선언했다.

prices를 반복문으로 돌면서

check에 있는 값중에 큰 값들을 모두 제거하고 answer에 넣었다.

해당 price의 index와 값을 집어넣었다.

따라서 check는 항상 price를 기준으로 정렬되어있는 상태이기 때문에

가장 마지막 값만 확인하면 된다.

그렇게 모든 값을 answer에 넣고

index기준으로 정렬하면 답이 나온다.

Discussion and feedback