programmers- lv.2 (주식가격)

이예송·2023년 8월 30일

PS

목록 보기
85/97

문제링크: 주식 가격

✍🏻 Information

content
언어python
난이도⭐️⭐️⭐️
풀이시간50분
제출횟수
인터넷검색유무yes




🍒 My Code

from collections import deque

def solution(prices):
    answer = []
    q = deque()
    for i in prices:
        q.append(i)
    while len(q)!=0:
        current = q.popleft()
        flag = 0
        for idx,i in enumerate(q):
            if current>i:
                answer.append(idx+1)
                flag = 1
                break
        if flag==0:
            answer.append(len(q))
    return answer




💡 What I learned

  • 떨어지는 순간부터 유지되는 시간이 끝나는건데 한번 떨어질때마다 -1초 되는걸로 풀어서 처음에 삽질했다.
  • pop(0)은 O(n)이라서 deque사용한건데 어짜피 이중 for문 써서 아예 이중 for문으로 풀걸 그랬다(스택/큐 안쓰고). 아래 응정 풀이처럼.
def solution(prices):
    answer = []
    
    # 초 단위로 기록된 주식가격 -> 가격이 떨어지지 않은 기간이 몇초인지
    
    for i in range(len(prices)):
        check = True
        for j in range(i+1, len(prices)):   # 현재 가격 기준으로 떨어진 가격이 있는지 확인하기
            if(prices[j] < prices[i]):      # 가격이 현재 가격보다 떨어졌다면
                ans_time = j - i            # 몇초인지 기간 구하기
                answer.append(ans_time)
                check = False
                break
        if(check):          # 현재 가격에서 떨어진게 그 뒤로 없다면,
            answer.append(len(prices)-1 - i)    # 한번도 떨어지지 않음! 몇초인지 기간 구하기
            
    
    return answer
  • deque : list로 만드는 stack/queue보다 속도가 훨씬 빠르다.



0개의 댓글