본문 바로가기
스터디 공간

[Python-Leetcode] 739. dailyTemperatures (difficulty : Medium - ☆☆)

by 재스민맛 2021. 8. 11.
반응형

 

문제 설명

Given an array of integers temperatures represents the daily temperatures, return an array answer such that answer[i] is the number of days you have to wait after the ith day to get a warmer temperature. If there is no future day for which this is possible, keep answer[i] == 0 instead.

 

Example 1:

Input: temperatures = [73,74,75,71,69,72,76,73]
Output: [1,1,4,2,1,1,0,0]

Example 2:

Input: temperatures = [30,40,50,60]
Output: [1,1,1,0]

Example 3:

Input: temperatures = [30,60,90]
Output: [1,1,0]

 

Constraints:

  • 1 <= temperatures.length <= 105
  • 30 <= temperatures[i] <= 100

 

 

문제 풀이

class Solution:
    def dailyTemperatures(self, temperatures: List[int]) -> List[int]:
        last_idx = []
        answer = len(temperatures) * [0]
        
        // 현재의 Temperature index와 값을 받아오기 위해서 enumerate 사용
        for idx, today_temp in enumerate(temperatures):
        
        // 현재의 값이 이전의 값보다 높고, 이전의 값이 들어있는 배열이 다 빌때까지
            while last_idx and today_temp > temperatures[last_idx[-1]]:
            
            // 이전의 값보다 현재의 값이 높으므로, 이전의 값의 인덱스를 pop으로 불러옴
                last = last_idx.pop()
            
            // asnwer 배열에 저장 (현재 인덱스와 이전의 인덱스)
                answer[last] = idx - last
            last_idx.append(idx)
        
        return answer
반응형

댓글