Daily Temperatures
문제 파악
주어진 일일 온도 리스트에서 각 날짜마다 따뜻한 온도가 몇 일 후에 오는지를 계산하는 문제 (따뜻한 온도가 오지 않는 경우에는 0을 반환)
접근 방법
이 코드는 스택을 사용하여 각 날짜마다 따뜻한 온도가 언제 오는지를 계산합니다. 스택에는 온도의 인덱스가 저장되며, 현재 온도보다 낮은 온도들의 인덱스는 스택에서 제거하면서 해당 온도까지 기다려야 하는 일 수를 계산
- 각 날짜마다 일일 온도를 순회하면서 현재 온도와 스택의 top에 위치한 온도를 비교
 - 만약 현재 온도가 스택의 top에 위치한 온도보다 높다면, 해당 인덱스의 온도는 따뜻해질 것이므로 현재 날짜와 스택에 저장된 날짜의 차이를 계산하여 해당 인덱스의 따뜻한 온도까지의 기다려야 하는 일 수를 저장
 - 위 과정을 반복하여 따뜻한 온도가 오지 않는 경우는 스택에 현재 날짜를 저장
 
코드 구현
class Solution:
    def dailyTemperatures(self, temperatures: List[int]) -> List[int]:
        # temperatures 어레이는 일일온도 담겨있음
        # 얼마나 기다려야 따뜻해지는지 담긴 배열 반환, 따뜻해질 예정 없으면 값 0 
        
        answer = [0] * len(temperatures)
        
        stack = []
        
        for cur_d, cur_t in enumerate(temperatures):
            while stack and stack[-1][1] < cur_t:
                prev_d, _ = stack.pop()
                answer[prev_d] = cur_d - prev_d 
            
            stack.append((cur_d, cur_t))
            
        return answer
Leave a comment