풀이 코드
일일 온도가 담겨있는 리스트를 줬을 때, 더 따뜻한 날씨가 되려면 며칠 더 기다려야 하는지 리스트로 리턴해야 하는 문제이다. stack이라는 이름의 리스트에 현재 위치 인덱스를 계속 저장해 준다. 현재 온도가 stack의 가장 마지막에 존재하는 인덱스의 온도 보다 높으면 stack에서 인덱스를 꺼내고 현재 인덱스와 꺼낸 인덱스의 차를 정답 리스트에 저장한다.
class Solution:
def dailyTemperatures(self, temperatures: List[int]) -> List[int]:
answer = [0] * len(temperatures)
stack = []
for i, temp in enumerate(temperatures):
while stack and temperatures[stack[-1]] < temp:
day = stack.pop()
answer[day] = i - day
stack.append(i)
return answer
이때, enumerate 대신 range를 사용해도 된다.
class Solution:
def dailyTemperatures(self, temperatures: List[int]) -> List[int]:
answer = [0] * len(temperatures)
stack = []
for i in range(len(temperatures)):
while stack and temperatures[stack[-1]] < temperatures[i]:
j = stack.pop()
answer[j] = i - j
stack.append(i)
return answer