눈송이의 개발생활

[Programmers Lv.2]주식가격 (Python) 본문

Algorithm/Programmers

[Programmers Lv.2]주식가격 (Python)

꾸지새미언니

문제

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

내 코드 - 효율성 테스트 실패 

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

다른 사람 풀이 

from collections import deque

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

해결 방법

효율성 테스트에서 시간 초과가 나서 2가지를 바꿔주었다.

1️⃣ queue가 아닌 deque 사용하기! pop(0)보다 popleft()가 빠르다는 것을 알고 있어서 가능했다.

2️⃣ for문을 돌 때마다 큐의 길이를 계산하는 대신, for문을 큐의 아이템을 하나씩 보게 만들었다.

 

Comments