본문 바로가기
Algorithm/LEET CODE ( 파이썬 알고리즘 인터뷰)

[LEET CODE] 739. Daily Temperatures

by newnu 2021. 3. 29.
반응형

# Problem

Given a list of daily temperatures T, return a list such that, for each day in the input, tells you how many days you would have to wait until a warmer temperature. If there is no future day for which this is possible, put 0 instead.

For example, given the list of temperatures T = [73, 74, 75, 71, 69, 72, 76, 73], your output should be [1, 1, 4, 2, 1, 1, 0, 0].

Note: The length of temperatures will be in the range [1, 30000]. Each temperature will be an integer in the range [30, 100].

 

 

# My Answer

class Solution:
    def dailyTemperatures(self, T: List[int]) -> List[int]:
        result = [0]*len(T)
        stack=[]
        for i in range(len(T)):
            while stack and T[stack[-1]]<T[i]:
                    s = stack.pop()
                    result[s] = i-s
            stack.append(i)
        return result

 

# Solution 1 - 스택 값 비교

class Solution:
    def dailyTemperatures(self, T: 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

스택에 여러개 값이 들어가 있는 경우 반드시 나중에 들어간 값이 먼저 나오게 되어있음

나중에 들어가 있는 값이 더 작은 값이기 때문에 스택의 앞의 값보다 큰 수는 나중의 값보다 큼

반응형