leetcode.com/problems/daily-temperatures/
- <파이썬 알고리즘 인터뷰>를 학습하면서 수록된 코드를 참고하였습니다. -
풀이
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
반응형
'Tech > Problem Solving' 카테고리의 다른 글
[프로그래머스] 카카오 블라인드 리쿠르트 2021 - 메뉴 리뉴얼 (Python) (0) | 2021.02.02 |
---|---|
[리트코드(LeetCode)] 큐로 스택 구현하기, 스택으로 큐 구현하기 - Python (0) | 2021.01.23 |
[리트코드(LeetCode)] 316. Remove Duplicate Letters - Python (0) | 2021.01.21 |
[리트코드(LeetCode)] 92. Reverse Linked List II - Python (1) | 2021.01.20 |
[리트코드(LeetCode)] 24. Swap Nodes in Paris - Python (0) | 2021.01.18 |