목차
반응형
문제
https://leetcode.com/problems/daily-temperatures/
온도 리스트가 주어진다. 해당 온도보다 더 따뜻해질때까지 기다려야 하는 날짜를 리스트로 반환하고 따뜻해지지 않으면 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으로 꺼내고 인덱스의 차이를 정답으로 넣는다. 내가 시도했던 방식과 비슷한데 나는 인덱스말고 값을 넣는 방법으로 시도했는데 실패했다.
참고한 책 : 파이썬 알고리즘 인터뷰
반응형
'Study > Algorithm' 카테고리의 다른 글
[LeetCode] #232. Implement Queue using Stacks (python) (0) | 2022.02.24 |
---|---|
[LeetCode] #225. Implement Stack using Queues (python) (0) | 2022.02.24 |
[LeetCode] #316. Remove Duplicate Letters (python) (0) | 2022.02.24 |
[LeetCode] #20. Valid Parentheses (python) (0) | 2022.02.24 |
[LeetCode] #21. Merge Two Sorted Lists (python) (0) | 2022.02.21 |