Bibbidi Bobbidi Boo

문제

 

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

 

풀이

 

알고리즘 : 스택

- 배열 prices, 이전 떨어지지 않은 주식 stack을 생성한다.

- 배열 prices를 순환하는 반복문

- stack에 있는 prices + 1

- stack을 순환하면서 현재 주식과 비교 후 가격이 떨어졌으면 stack에서 뺀다.

- 현재 주식을 stack에 더한다.

 

Python 코드

 

def solution(prices):
    answer = [0]*len(prices)
    stack = []
    popList = []
    for idx, cnt_price in enumerate(prices) :
        if stack :
            for jdx, [zdx, prev_price] in enumerate(stack) :
                answer[zdx]+=1
                if prev_price > cnt_price : # 가격이 떨어짐
                    popList.append(jdx)
            else :
                while popList :
                    stack.pop(popList.pop())
        stack.append([idx, cnt_price])
    return answer

 

 

후기 및 보완할 점

 

약 40분 정도 소요된 것 같다. 풀이 과정을 생각해내는데는 별로 오래 걸리지 않았지만 생각을 바로 구현하는데도 시간을 많이 쓴다. 다 짜고나니 코드의 깔끔성이나 변수명도 조금 마음에 들지 않아서리.. 다음엔 이 부분도 보완해서 풀어야겠다.

profile

Bibbidi Bobbidi Boo

@비비디

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!