알고리즘/프로그래머스문제풀이

[python][프로그래머스]주식가격_스택/큐

개발자 덕구🐾 2022. 6. 10. 15:10
728x90

 

 

 

 

 

 

문제 : 

 

 

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

 

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

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

programmers.co.kr

 

 

 


 

 

 

답을 찾아본 코드 [deque이용] : 

 

< deque 안쓰고 list에서 pop(0)이용해서 풀면 효율성에서 실패함 >

 

from collections import deque
def solution(prices):
    answer = []
    d = deque(prices)
    while d :
        tmp = d.popleft() # 하나를 뺀다. 
        tmp_ans = 0 # 한 숫자마다 0으로 설정 
        for i in d :
            tmp_ans+=1 # 무조건 1은 올려야함 
            if tmp > i : # 큰 숫자가 있으면 for 문 빠져나오기 
                break
        answer.append(tmp_ans)
    return answer

 

 

 

 

내가 만든 코드 : 

 

덱을 안쓸거면 index를 이용해서 풀면된다. 

 

def solution(prices):
    answer = []
    Len = len(prices)
    for i in range(Len) :
        tmp = prices[i] 
        cnt = 0
        for j in range(i+1,Len) :
            cnt+=1
            if prices[j] < tmp : 
                break
        answer.append(cnt)
    return answer

 

 

 

 

 

 

 

 

정확성과 효율성은 동일하다!

 

 

두 코드의 차이는

덱으로 만들어서 하나 씩 빼가면서 하냐

아니면

빼지않고 인덱스를 잘 맞춰서 원하는 값을 만드느냐이다. 

 

 

덱이라는 자료구조를 이용해서 만드는게 있어보이기도 하고 더 간단하다.

그래서  덱 코드로 연습하려고 한다. 

 

 

복습하면서 보니까 deque 이용한 코드가 더 직관적이다. 

 

 

복습 : 

 

 20220616

✅ 20220620

✅ 20220622

✅ 20220626

✅ 20220627

20220630

✅ 20220701

 

 

 

 

참고 블로그 : 

 

https://javaiyagi.tistory.com/651

 

프로그래머스 주식가격 파이썬

https://programmers.co.kr/learn/courses/30/lessons/42584 코딩테스트 연습 - 주식가격 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 retur..

javaiyagi.tistory.com

 

반응형