Constraints
1 <= temperatures.length <=
30 <= temperatures[i] <= 100
temperature의 length가 가 될 수 있으므로, 시간복잡도 으로 풀면 안됌 (완전탐색 NO!)
해당 문제는, temperature가 "일정 조건" (본인의 temperature보다 높은 temperature)을 만났을 때만 반응한다!
Valid Parentheses 문제와 비슷한 조건 --> Stack으로 풀어보쟈!
class Solution:
def dailyTemperatures(self, temperatures):
temps = deque()
n = len(temperatures)
answers = [0] * n
temps.append(0)
for cur_i in range(1, n):
if len(temps)==0:
continue
else:
while temps:
temp_idx = temps[-1]
#print("t, idx: ", t, idx)
# if temperature is warmer
if (temperatures[cur_i] - temperatures[temp_idx]) > 0:
temps.pop()
# update answers
answers[temp_idx] = cur_i - temp_idx
else:
break
temps.append((cur_i))
return answers

(temperatures[temps[-1]] < temperatures[cur_i])을 처음부터 명시하여 줌class Solution:
def dailyTemperatures(self, temperatures):
temps = deque()
n = len(temperatures)
answers = [0] * n
temps.append(0)
for cur_i in range(1, n):
while temps and (temperatures[temps[-1]] < temperatures[cur_i]):
temp_idx = temps.pop()
answers[temp_idx] = cur_i - temp_idx
temps.append((cur_i))
return answers
