반응형
1. 문제

- 매 일 측정한 온도 배열 temperatures가 주어질 때, 각 요소 별로 다음으로 온도가 높아지기 까지 며칠이 걸리는 지 계산한 배열을 반환하라.
2. 해결
function dailyTemperatures(temperatures: number[]): number[] {
const result = new Array(temperatures.length).fill(0);
const stack = [];
for(let i =0; i< temperatures.length; i++) {
while(stack.length > 0 && temperatures[i] > temperatures[stack[stack.length-1]]) {
const prevIndex = stack.pop();
result[prevIndex] = i - prevIndex;
}
stack.push(i);
}
return result;
};
- 일단 못풀었다.
- 문제 풀이에 단조 스택? 이란 걸 사용해야 한다고 한다. 단조 스택은 오름차순 또는 내림 차순으로 스택의 요소가 유지 되는 것을 말한다.
- 보통 일정 범위 내에서 ~의 다음 수 중 가장 큰/작은 수를 찾을 때 많이 쓰인다. 이 문제 역시 특정 날짜부터 다음 날 중 자신보다 큰 온도를 가지는 날짜를 구하는 것.