-->

[프로그래머스] 스택/큐 - 주식가격 (python)

반응형

프로그래머스 스택/큐 마지막 문제인 주식가격문제를 풀어보도록 한다.

 

 

스택/큐 - 주식가격, 문제확인

문제 설명은 아래와 같다.

 


초 단위로 기록된 주식가격이 담긴 배열 prices가 변수로 주어짐

가격이 떨어지지 않은 기간이 몇초인지를 리턴

 

 

요번 문제 설명은 심플한 편이다. 예를 들어 [1,2,3,2,3] prices 배열이 주어졌을 때, 리턴값이 [4,3,1,1,0]이 되는 과정은 아래와 같다.

 


1초 시점의 ₩1은 끝까지 가격이 떨어지지 않았습니다.
2초 시점의 ₩2은 끝까지 가격이 떨어지지 않았습니다.
3초 시점의 ₩3은 1초뒤에 가격이 떨어집니다. 따라서 1초간 가격이 떨어지지 않은 것으로 봅니다.
4초 시점의 ₩2은 1초간 가격이 떨어지지 않았습니다.
5초 시점의 ₩3은 0초간 가격이 떨어지지 않았습니다.

 

 

스택/큐 - 주식가격, 문제풀이

 

일단 이중for문을 사용하고 첫번째 for문은 i 부터 시작하고 두번째 for문은 i+1번째부터 시작하게 한다. 1의 경우 뒤에나오는 2,3,2,3 보다 작기때문에 count가 계속 +가 되어 4가 되고 answer 리스트에 값이 추가된다. 예를 들어 3의 경우 그 다음 2보다 크기 때문에 가격이 떨어진 것이기 때문에 반복문을 멈추게 된다(가격이 떨어지지 않은 기간을 구하는 것이기 때문에).

 

그리고 3->2가 됐다고 해서 0초간 가격이 떨어진 것이 아니라 1초간 가격이 떨어지지 않은 것으로 취급하기 때문에 count+=1이 break를 수행하는 조건문보다 위에 오게 두었다.

 

def solution(prices):
    answer = []
    len_prices=len(prices)
    for i in range(len_prices):
        count=0
        for j in range(i+1,len_prices):
            count+=1
            if prices[i]>prices[j]: break #가격이 떨어졌으면 반복문 멈춤
        answer.append(count) #count값 추가
                
    return answer

 

 

테스트 케이스를 전부 통과하게 된다. 이 문제도 이전문제와 같이 스택/큐로 풀려면 어떻게 해야할지 감이 안와서 스택/큐로는 풀지 못했다.

 

 

댓글

Designed by JB FACTORY