## 1. Problem

Given an array of integers temperatures represents the daily temperatures, return an array answer such that answer[i] is the number of days you have to wait after the ith day to get a warmer temperature. If there is no future day for which this is possible, keep answer[i] == 0 instead.

**Example 1:**

```
Input: temperatures = [73,74,75,71,69,72,76,73]
Output: [1,1,4,2,1,1,0,0]
```

**Example 2:**

```
Input: temperatures = [30,40,50,60]
Output: [1,1,1,0]
```

**Example 3:**

```
Input: temperatures = [30,60,90]
Output: [1,1,0]
```

**Constraints:**

- 1 <= temperatures.length <= 10^5
- 30 <= temperatures[i] <= 100

## 2. Solution

I solved this problem like this.

Using stack, we can solve this problem.

- If stack is empty, append idx value and idx data.
- If stack top value is more smaller than now data, pop stack and confirm top and now data again.
- If stack top value isn’t smaller than now data, append now data on stack.

```
class Solution:
def dailyTemperatures(self, temperatures: List[int]) -> List[int]:
output = [0] * len(temperatures)
stack = [(temperatures[0], 0)]
for idx, t in enumerate(temperatures):
if idx == 0:
continue
while stack:
if stack[-1][0] < t:
top_val, top_idx = stack.pop()
output[top_idx] = idx - top_idx
if stack:
continue
stack.append((t, idx))
break
return output
```