코딩 테스트

(Java) 프로그래머스 - 뒤에 있는 큰 수 찾기

로승리 2023. 5. 4. 20:29

제한사항을 보고 O(n^2) 로직으로는 100% 시간 초과가 날 것이라고 생각했다.

그래서 O(n) Queue를 이용한 로직을 한참 고민했는데, 결국 해결하지 못해 검색을 통해 힌트를 얻어 해결했다.


최종 코드

import java.util.*;
class Solution {
    public int[] solution(int[] numbers) {
        int[] answer = new int[numbers.length];
        Stack<Integer> stack = new Stack<>();
        
        for (int i = numbers.length - 1; i >= 0; i--) {
            while (!stack.isEmpty()) {
                if(stack.peek() > numbers[i]) {
                    answer[i] = stack.peek();
                    break;
                }
                stack.pop();
            }
            if(stack.isEmpty()) {
                answer[i] = -1;
            }
            stack.add(numbers[i]);
        }
        
        return answer;
    }
}