* 해당 포스트는 <파이썬 알고리즘 인터뷰> 공부 후 정리 목적으로 작성되었습니다. *

 

leetcode 739번 ( https://leetcode.com/problems/daily-temperatures/description/ )

 

 

풀이 방법 1. 

스택을 사용한다. 

결과로는 각 i번째 날 이후로 따뜻해지기 위해 기다려야 하는 일 수를 리턴해야 하므로, 스택 및 결과에는 인덱스 정보를 저장하는 것이 좋겠다. 

 

우선 큰 틀에서 for loop를 사용해서 temperatures의 전체 요소를 순회할 수 있도록 한다. 

각 시행의 값(i번째 날의 인덱스와 온도)을 가지고, 우선 스택에 값이 있는지를 확인한다. 

 

파이썬에서는 for문으로 리스트의 인덱스와 값을 동시에 순회하고 싶을 때 enumerate()를 사용할 수 있다. 

for index, temperature in enumerate(temperatures):
	# index: index
	# temperature: value

 

이후 스택의 가장 위에 있는 값보다 i번째 날의 온도가 더 높으면, while 문을 사용해서 하나씩 스택에서 제거한다. 

while stack and temperature > temperatures[stack[-1]]:
	# pop index of day from stack
	# assign value of index to answer list

 

+ Recent posts