본문 바로가기
Study/Algorithm

[LeetCode] #739. Daily Temperatures (python)

by 투말치 2022. 2. 24.

목차

    반응형

    문제

    https://leetcode.com/problems/daily-temperatures/

     

    Daily Temperatures - LeetCode

    Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

    leetcode.com

    온도 리스트가 주어진다. 해당 온도보다 더 따뜻해질때까지 기다려야 하는 날짜를 리스트로 반환하고 따뜻해지지 않으면 0으로 반환한다.

     

    예시 입출력

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

     

     

    풀이

     

    책 풀이

    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

     

    enumerate를 사용해서 인덱스와 값을 변수에 할당한다. 

    인덱스를 스택에 넣다가 이전보다 상승하는 지점에서 현재 온도와 인덱스 지점의 온도 차이를 비교해서 더 높으면 pop으로 꺼내고 인덱스의 차이를 정답으로 넣는다. 내가 시도했던 방식과 비슷한데 나는 인덱스말고 값을 넣는 방법으로 시도했는데 실패했다.

     

     

    참고한 책 : 파이썬 알고리즘 인터뷰

    반응형