본문 바로가기

Tech/Problem Solving

[리트코드(LeetCode)] 739. Daily Temperatures - Python

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

 

- <파이썬 알고리즘 인터뷰>를 학습하면서 수록된 코드를 참고하였습니다. - 

 

 

풀이

leetcode 42번 문제 Trapping Rain Water와 유사한 방법으로 풀이할 수 있다.

스택에 현재의 인덱스를 계속 쌓다가, 현재의 온도가 stack의 가장 위에 존재하는 인덱스의 온도보다 크다면,

스택에서 인덱스를 pop()하고 현재 인덱스와 스택에 쌓아둔 인덱스의 차이를 정답으로 처리한다.


	def dailyTemperatures(self, T: List[int]) -> List[int]:
        stack = []
        answer = [0] * len(T)

        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
        

 

프로그래머스의 주식가격 문제와 유사하여 함께 풀어보기에 좋은 문제인 것 같다.

 

 

 

www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9791189909178

 

파이썬 알고리즘 인터뷰 - 교보문고

세계 최고 온라인 문제 풀이 사이트인 리트코드(LeetCode)의 기출문제 풀이와 분석! 200여 개가 넘는 일러스트를 통해 알고리즘과 자료구조 이론을 한눈에 쉽게 익힐 수 있음은 물론, 파이썬으로 구

www.kyobobook.co.kr

반응형