본문 바로가기
문제풀이/Programmers

[프로그래머스💯] 코딩테스트 연습 > 스택/큐 > 주식가격 / *스택 활용

by 서상혁 2020. 1. 11.

<프로그래머스 문제풀이>

 


해답)

def solution(prices):
    time = 0
    stk = [(0,prices[0])]
    res = [0] * len(prices)
    print(stk[0])
    for i, v in enumerate(prices[1:]):
    	 # 들어오려는 숫자가 더 작은 경우
        while len(stk) > 0 and v < stk[len(stk)-1][1]:  
            for (s_i, s_v) in stk:  
                res[s_i] += 1   #  스택 안에있던 요소들 시간 증가
            stk.pop()
        stk.append((i+1,v))
    while stk:   # 남아있는 것들 시간 넣어주기 
        (i,v) = stk.pop()
        res[i] += time
        time += 1
    return res

 

1. 스택을 반드시 이용하겠다는 마인드로 풀었습니다.

2. 주식 가격을 하나씩 받습니다.

2-1. 주식 가격이 올랐을 경우 그냥 스택에 집어넣습니다.

2-2. 주식 값이 떨어진 경우 떨어진 주식보다 높은 모든 주식을 스택을 빼냅니다. (빼는 동안 남아있는 스택들에는 시간이 1초씩 흘러갑니다.)

3. 최종적으로 남아있는 스택을 1개씩 빼주며 시간을 1초씩 계산해줍니다.

 

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges

728x90

댓글