- 문제 링크: https://leetcode.com/problems/daily-temperatures/

- 난이도: Medium

 

일자별 온도가 주어지고, 각 일자별로 '오늘보다 따뜻한 날은 며칠 뒤인가'를 계산하는 문제다

스택을 이용하는데, 스택엔 인덱스와 온도를 넣고, 각 날짜마다 그 날의 온도보다 낮은 원소는 계속 빼버리면서 결과 배열에 업데이트한다.

class Solution:
    def dailyTemperatures(self, temperatures: List[int]) -> List[int]:
        stack = []  # (index, temperature)
        ret = [0] * len(temperatures)
        for i, t in enumerate(temperatures):
            while stack:
                j, top = stack[-1]
                if top < t:
                    stack.pop()
                    ret[j] = i - j
                else:
                    break

            stack.append((i, t))

        return ret
반응형