class Solution:
def dailyTemperatures(self, temperatures: List[int]) -> List[int]:
stack = []
result = [0] * len(temperatures)
for i, t in enumerate(temperatures):
while stack:
if temperatures[stack[-1]] < t:
result[stack[-1]] = i - stack[-1]
stack.pop()
else:
break
stack.append(i)
return result
class Solution:
def dailyTemperatures(self, temperatures: List[int]) -> List[int]:
stack = []
result = [0] * len(temperatures)
for i, t in enumerate(temperatures):
while stack and temperatures[stack[-1]] < t:
c = stack.pop()
result[c] = i - c
stack.append(i)
return result
1, 2 번째 제출 그냥 똑같은건데 조건문을 while문에 포함시켰을 뿐임. 하지만 더 간결해서 보기 좋음.
index를 stack에 넣고 그때그때 temperatures에서 조회하면 됐는데
처음에는 stack에 [t, idx] 형태로 넣어서 했었다. 그러니 exceed 오류가 났었다.
처음에는 돌 때마다 result[i] += 1로 풀었었다. exceed 오류가 났다.
-> 그저 현재 index와 stack에서 꺼낸 index의 차이만 구하면 끝인데 생각을 못했다.