알고리즘/코딩테스트-NeetCode

[NeetCode-LeetCode] Daily Temperatures JAVA

kwang2134 2025. 2. 10. 21:23
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