눈송이의 개발생활
[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문을 큐의 아이템을 하나씩 보게 만들었다.
'Algorithm > Programmers' 카테고리의 다른 글
[Programmers Lv.2]H-Index (Python) (0) | 2022.04.13 |
---|---|
[Programmers Lv.1]완주하지 못한 선수 (Python) (0) | 2022.04.08 |
[Programmers Lv.1]모의고사 (Python) (0) | 2022.04.06 |
[Programmers Lv.1]K번째수 (Python) (0) | 2022.04.05 |
[Programmers Lv.1]체육복 (Python) (0) | 2022.04.04 |
Comments