🐍 μ½”λ”©ν…ŒμŠ€νŠΈ λŒ€λΉ„ : PS

[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] 주식가격 (level2, python)

개발자 HOON 2022. 9. 13. 13:05

문제 μ„€λͺ…

초 λ‹¨μœ„λ‘œ 기둝된 주식가격이 λ‹΄κΈ΄ λ°°μ—΄ pricesκ°€ λ§€κ°œλ³€μˆ˜λ‘œ μ£Όμ–΄μ§ˆ λ•Œ, 가격이 떨어지지 μ•Šμ€ 기간은 λͺ‡ μ΄ˆμΈμ§€λ₯Ό return ν•˜λ„λ‘ solution ν•¨μˆ˜λ₯Ό μ™„μ„±ν•˜μ„Έμš”.


μ œν•œμ‚¬ν•­
  • prices의 각 가격은 1 이상 10,000 μ΄ν•˜μΈ μžμ—°μˆ˜μž…λ‹ˆλ‹€.
  • prices의 κΈΈμ΄λŠ” 2 이상 100,000 μ΄ν•˜μž…λ‹ˆλ‹€.

μž…μΆœλ ₯ 예

μž…μΆœλ ₯ 예 μ„€λͺ…
 
  • 1초 μ‹œμ μ˜ β‚©1은 λκΉŒμ§€ 가격이 떨어지지 μ•Šμ•˜μŠ΅λ‹ˆλ‹€.
  • 2초 μ‹œμ μ˜ β‚©2은 λκΉŒμ§€ 가격이 떨어지지 μ•Šμ•˜μŠ΅λ‹ˆλ‹€.
  • 3초 μ‹œμ μ˜ β‚©3은 1μ΄ˆλ’€μ— 가격이 λ–¨μ–΄μ§‘λ‹ˆλ‹€. λ”°λΌμ„œ 1μ΄ˆκ°„ 가격이 떨어지지 μ•Šμ€ κ²ƒμœΌλ‘œ λ΄…λ‹ˆλ‹€.
  • 4초 μ‹œμ μ˜ β‚©2은 1μ΄ˆκ°„ 가격이 떨어지지 μ•Šμ•˜μŠ΅λ‹ˆλ‹€.
  • 5초 μ‹œμ μ˜ β‚©3은 0μ΄ˆκ°„ 가격이 떨어지지 μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

풀이 μ½”λ“œ

from collections import deque

def solution(prices):
    answer = []
    queue = deque(prices)

    while queue:
        val = queue.popleft()
        cnt = 0
        
        for q in queue:
            cnt += 1
            if q < val:
                break
        answer.append(cnt)
    
    return answer

문제의 μ„€λͺ…도 λΆ€μ‹€ν•˜κ³ , μ˜ˆμ œλ„ ν•˜λ‚˜λ°–μ— μ—†μ–΄μ„œ μ•½κ°„ μƒκ°ν•˜λŠ”λ° μ• λ₯Ό λ¨Ήμ—ˆλ‹€.

이 문제λ₯Ό ν‘ΈλŠ” 방법은, 브루트포슀λ₯Ό μ‚¬μš©ν•˜κ±°λ‚˜ 큐/μŠ€νƒμ„ μ‚¬μš©ν•˜λŠ” 방법이 μžˆλ‹€.

 

ν•„μžλŠ” 큐λ₯Ό μ΄μš©ν•΄ ν’€μ΄ν•˜μ˜€λ‹€.

주어진 pricesλ₯Ό λͺ¨λ‘ 큐에 λ„£κ³ , μ›μ†Œ ν•˜λ‚˜λ₯Ό λ½‘λŠ”λ‹€.

이후 큐 속에 남은 μ›μ†Œμ™€ λΉ„κ΅ν•˜λ©΄μ„œ 처음 뽑은 값보닀 μž‘μ•„μ§„λ‹€λ©΄ breakλ₯Ό κ±Έκ³ , μΉ΄μš΄νŒ…μ„ λ©ˆμΆ˜λ‹€.

이λ₯Ό λ°˜λ³΅ν•˜λ©΄ ν•΄κ²°ν•  수 μžˆλ‹€.