프로그래머스_주식가격_python

2021. 7. 27. 00:52코딩테스트

반응형

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

 

코딩테스트 연습 - 주식가격

초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항 prices의 각 가격은 1 이상 10,00

programmers.co.kr

가격이 떨어지지 않은 기간은 몇 초인지를 return

 

 

def solution(prices):
    length = len(prices)
    answer = [0 for _ in range(length)]
    for i in range(length):
        for j in range(i+1, length):
            if prices[j]<prices[i]:
                answer[i] = j-i
                break
            answer[i] = length-i-1
    return answer

[내코드]

효율성에서 계속 실패해서 겨우 겨우 통과했다..

for문을 원래 외부에 빼서 따로 함수 호출하는 식으로 했는데, 매번 len(arr)를 하게되어 시간이 오래걸림.

한가지 알게된 것이 있다면, 

 for i, a in enumarate(arr) 보다는 for i in range(len(arr))가 쪼금더 낫다..!

 

from collections import deque
def solution(prices):
    answer = []
    prices = deque(prices)
    while prices:
        c = prices.popleft()

        count = 0
        for i in prices:
            if c > i:
                count += 1
                break
            count += 1

        answer.append(count)

    return answer

[다른사람코드]

deque사용. deque의 pop을 사용하면 리스트가 자동으로 줄어들어 따로 index 고려를 안해도 됨.

반응형