본문 바로가기
코딩테스트/Python

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

by nahkim 2023. 4. 25.

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

📜 접근 방법

특정 가격을 기준으로 그 이후 가격이 유지 혹은 상승을 몇초간 했는지 구한다.

i번째 가격을 비교시 i + 1 이후 가격들을 비교한다.

 

 

❌ 실패 코드

def solution(prices):
    answer = []
    for i in range(len(prices)):
        cnt = 0
        for j in range(i + 1, len(prices)):
            if prices[i] <= prices[j]:
                cnt += 1
        answer.append(cnt)
    return answer

✅ 정답 코드

def solution(prices):
    answer = []
    for i in range(len(prices)):
        cnt = 0
        for j in range(i + 1, len(prices)):
            cnt += 1
            if prices[i] > prices[j]:
                break
        answer.append(cnt)
    return answer

 

🔥시간 줄인 코드

from collections import deque

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

💡알게 된점

문제가 정확하게 요구하는 것을 써두지 않아서 좀 헷갈렸다.(가격이 떨어지면 종료해야하는) 그리고 무조건 +1을 해야하는게 이해가 되지않는다.

deque를 사용하게 노력해야겠다.