https://programmers.co.kr/learn/courses/30/lessons/42584
코딩테스트 연습 - 주식가격
초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항 prices의 각 가격은 1 이상 10,00
programmers.co.kr
첫 풀이
from collections import deque
import copy
def solution(prices):
answer = []
q = deque(prices)
count = 0
while q:
num = q.popleft()
rest_q = copy.deepcopy(q)
while rest_q:
count += 1
if num > rest_q.popleft():
break
answer.append(count)
count=0
return answer
이거 머냐구.. 효율성에서 탈락. 내가 봐도 너무 비효율이당.
2번째 풀이
from collections import deque
import copy
def find_index(num, q):
for i, _ in enumerate(q):
if _ < num:
return i+1
return len(q)
def solution(prices):
answer = []
q = deque()
for _ in prices:
q.append(_)
while q:
num = q.popleft()
answer.append(find_index(num, q))
return answer
deepcopy 빼고 구현해서 해결 !
다른 사람들 풀이 봤는데 시간 복잡도가 마찬가지로 다 O(n^2).
O(n) 풀이가 있나 싶었는데.. 아시는 분은 댓글 남겨주세요
'코딩 문제 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 신고 결과 받기 (python) (0) | 2022.05.05 |
---|---|
[프로그래머스] 순위 (python) (0) | 2022.02.08 |
[프로그래머스] 가장 먼 노드 (python) (0) | 2022.02.05 |
[프로그래머스] 디스크 컨트롤러 (python) (0) | 2022.01.06 |
[프로그래머스] 다리를 지나는 트럭 (python) (0) | 2022.01.05 |