설명
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
입력값 [73, 74, 75, 71, 69, 72, 76, 73] 일 때 인덱스가 5인 지점(인텍스는 0부터 시작)에서 스택에는 [2, 3, 4]가 있다.
2, 3, 4의 온도는 각각 75, 71, 69이다.
72는 71, 69보다 높기 때문에 현재 인덱스와 71 인덱스와는 두 칸 차이로 정답은 2가 되고, 69의 인덱스와는 한 칸 차이로 정답은 1이다.
처리한 인덱스는 스택에서 팝으로 제거된다.
75도인 2는 현재 온도보다 높기 때문에 계속 스택에 남아 있게 된다.
이제 현재 온도 76도는 72, 75보다 모두 높기 때문에 스택은 모두 처리되어 비워질 것이다.
72의 인덱스와는 한 칸 차이로 정답은 1이고, 75의 인덱스와는 4칸 차이가 난다.
디폴트는 0이다.