자료구조와 알고리즘/🥑알고리즘

[알고리즘][스택 & 큐] - 3. 일일 온도

얄루몬 2022. 3. 2. 16:43

 

📖이 포스팅은 '파이썬 알고리즘 인터뷰 - 박상길님' 책을 보고 작성되었습니다.


😎문제 : https://leetcode.com/problems/daily-temperatures/submissions/

매일 화씨 온도(F) 리스트 T를 입력받아서, 더 따뜻한 날씨를 위해서는 며칠을 더 기다려야 하는지를 출력하라


[스택 값 비교]

class Solution:
    def dailyTemperatures(self, temperatures: List[int]) -> List[int]:
        answer = [0]*len(T)
        stack = []

        for i, cur in enumerate(T):
            while stack and cur > T(stack[-1]):
                last = stack.pop()
                answer[last] = i - last

            stack.append(i)
        return answer
  • 이 문제는 enumerate를 사용해서 푼 문제로 index를 stack에 넣어주고 value를 비교해서 value가 뒤에 올 값이 더 클때 현제 index - stack에 있던 index를 빼주며 진행한다.
  • 리스트 안에서 가장 큰 값이 중간에 있어 뒤에 더 큰 값이 안 온다면 이 값은 최종적으로 0이 되어야 하기 때문에 answer을 모두 0으로 초기화 시켜준 것이다.

 

스택이나 큐,, 데크는 잘 알아서 다행이다..