프로그래밍
leetcode 739. Daily Temperatures 풀이
웃즐
2021. 4. 22. 19:39
문제 : int로 이루어진 list가 주어질때, 각 인덱스는 날짜, 원소는 온도를 나타낸다. 각 날짜의 날씨보다 따뜻한 날씨가 되는 날수를 원소로 갖는 list를 반환하라
Follow up :
아이디어 : V 자 형으로 계속 기온이 떨어지다가 올라가게 된다면, 최초의 날짜의 값을 추적하기 용이한 자료구조형을 사용해야할 것이다. 따라서 stack을 사용하여 (인덱스, 온도값) 을 저장하여 인덱스를 이동할때 stack의 top의 온도와 비교하여 더 높으면 pop을 하는 것을 반복한다. pop한 원소의 index와 현재 index를 비교하여 날짜를 계산한다.
코드 :
class Solution:
def dailyTemperatures(self, T: List[int]) -> List[int]:
s = []
ans = [0 for l in range(len(T))]
for idx in range(len(T)):
if not s:
s.append((idx, T[idx]))
else:
while s:
if s[-1][1] < T[idx]:
i, temp = s.pop()
ans[i] = idx-i
else:
break
s.append((idx, T[idx]))
return ans