세용용용용 2023. 7. 21. 16:18

코딩테스트 연습 - 주식가격 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

나의 코드

def solution(prices):
    answer = []

    #주식 가격을 for문 돌림
    for i in range(len(prices)):
        count = 0

        # 뒤에 있는 주식 가격을 for문 돌림
        for j in range(i+1, len(prices)):
            count+=1
            #가격이 떨어지면 break
            if prices[i] > prices[j]:
                break
        answer.append(count)
    #print(answer)
    return answer
solution([1,2,3,2,3])

 

이렇게도 풀리지면

조금더 효율적인 코드가 있었음....

바로 deque를 활용한 문제 풀이

 

수정 코드

from collections import deque

def solution(prices):
    answer = []
    #리스트를 덱으로 변환!!
    prices = deque(prices)
   
    while prices:
        count = 0
        #덱왼쪽에서부터 하나 가져옴
        price = prices.popleft()
        #for문으로 가격이 떨어질떄까지 돌림
        for i in prices:
            count += 1
            if price > i:
                break
        #최종적으로 count삽입 시켜준다
        answer.append(count)
    #print(answer)
    return answer
solution([1, 2, 3, 2, 3])