728x90
반응형
728x90
[NeetCode-LeetCode] Daily Temperatures - Medium
접근
- 스택
풀이
배열에 기온이 주어지고 각 인덱스의 기온보다 더 따뜻한 날이 며칠 뒤에 오는지 구하는 문제이다. 스택을 사용하는 문제로 인덱스 값을 스택으로 관리하면 해결할 수 있다.
public int[] dailyTemperatures(int[] temperatures) {
int[] answer = new int[temperatures.length];
Stack<Integer> stk = new Stack<>();
for (int i = 0; i < temperatures.length; i++) {
while (!stk.isEmpty() && temperatures[i] > temperatures[stk.peek()]) {
int index = stk.pop();
answer[index] = i - index;
}
stk.push(i);
}
return answer;
}
배열을 순회하며 현재 인덱스를 스택에 집어넣고 스택에 들어있는 기온보다 더 높은 온도를 만날 때마다 해당 기온에 대한 처리를 해주게 된다.
Deque<Integer> stk = new ArrayDeque<>();
스택 대신 Deque를 사용하면 실행 속도는 더 빠르게 가져갈 수 있다.
전체 코드
class Solution {
public int[] dailyTemperatures(int[] temperatures) {
int[] answer = new int[temperatures.length];
Stack<Integer> stk = new Stack<>();
for (int i = 0; i < temperatures.length; i++) {
while (!stk.isEmpty() && temperatures[i] > temperatures[stk.peek()]) {
int index = stk.pop();
answer[index] = i - index;
}
stk.push(i);
}
return answer;
}
}
728x90
'알고리즘 > 코딩테스트-NeetCode' 카테고리의 다른 글
[NeetCode-LeetCode] Last Stone Weight JAVA (1) | 2025.02.12 |
---|---|
[NeetCode-LeetCode] Search a 2D Matrix JAVA (0) | 2025.02.11 |
[NeetCode-LeetCode] Two Integer Sum II JAVA (0) | 2025.02.08 |
[NeetCode-LeetCode] Sum of Two Integers JAVA (0) | 2025.01.21 |
[NeetCode-LeetCode] Set Matrix Zeroes JAVA (0) | 2025.01.20 |