알고리즘 - 일일 온도
매일의 화씨 온도 리스트 T를 입력받아서, 더 따뜻한 날씨를 위해서는 며칠을 더 기다려야 하는지를 출력하라.
Input | Output |
---|---|
T = [73, 74, 75, 71, 69, 72, 76, 73] | [1, 1, 4, 2, 1, 1, 0, 0] |
Solution1
class Solution:
def dailyTemperatures(self, T: List[int]) -> List[int]:
answer, stack = [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
현재의 인덱스를 계속 스택에 쌓아두다가, 이전보다 상승하는 지점에서 현재의 온도와 스택에 쌓아둔 인덱스 지점의 온도 차이를 비교해서
더 높다면 스택의 값을 팝으로 꺼내고 현재 인덱스와 스택에 쌓아둔 인덱스의 차이를 정답으로 처리한다.
댓글남기기