본문 바로가기
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으로 꺼내고 인덱스의 차이를 정답으로 넣는다. 내가 시도했던 방식과 비슷한데 나는 인덱스말고 값을 넣는 방법으로 시도했는데 실패했다.

 

 

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

반응형