Algorithm (Python, Java, SQL)/Programmers

[프로그래머스 고득점 Kit - 스택/큐] 주식가격 (Python)

sanadoing_ 2023. 5. 3. 12:43
728x90

 

📖 문제 : 주식가격

 

 

문제 설명

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

 

 

제한사항

  • prices의 각 가격은 1 이상 10,000 이하인 자연수입니다.
  • prices의 길이는 2 이상 100,000 이하입니다.

 

입출력 예

prices return
[1, 2, 3, 2, 3] [4, 3, 1, 1, 0]

 

 

입출력 예 설명

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

공지 - 2019 2 28 지문이 리뉴얼되었습니다.

 

 

 

내 코드

 

from collections import deque

def solution(prices):
    answer = []
    prices = deque(prices)
    
    
    while prices:
        test = prices.popleft()
        cnt = 0
        
        for x in prices:
            if test > x :
                cnt+=1
                break
            cnt+=1
        
        answer.append(cnt)
    
            
        
    return answer

 

 

⭐️ Point ! ⭐️

  • 이게 기존에 있던 테스트 케이스만 보고 문제를 이해하면 테스트케이스만 맞고, 채점하면 틀리는데
    여기에서는 현재 체크하고자하는 test 변수를 두고 그 변수와 초가 증가함에 따라 낮은 값이 나와도 cnt+1 , 높은 값이 나와도 cnt+1을 해주어야하고 낮은 값이 나왔을 때, cnt+1을 해주고 break를 해주어야한다. break를 언제하냐에 따랐지 cnt+1는 어느 경우에나 해주어야하는 것 !
    높았을 때만 해주는 게 아니라는 거 !

  • 그리고 pop(0)이 아닌 deque로 자료형을 바꾸어 popleft()를 해야 시간초과가 나지 않는다 !

 

 

 

 

프로그래머스 

https://school.programmers.co.kr/learn/courses/30/lessons/42584# 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

참고

https://velog.io/@letgodchan0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%A3%BC%EC%8B%9D%EA%B0%80%EA%B2%A9

 

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

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

velog.io

 

 

 

728x90