[programmers][X] 뒤에 있는 큰 수 찾기

https://school.programmers.co.kr/learn/courses/30/lessons/154539

import java.util.*;

class Solution {
    public int[] solution(int[] numbers) {
        int len = numbers.length;
        int[] answer = new int[len];
        Arrays.fill(answer, -1);

        Stack<Integer> st = new Stack<>();

        for(int i = 0 ; i < len ; i++){
            int stlen = st.size();
            for(int j = 0 ; j < stlen ; j++){
                int temp = st.pop();
                if(numbers[i] > numbers[temp]){
                    answer[temp] = numbers[i];
                }else{
                    st.push(temp);
                    break; // 쌓아둔 stack 데이터의 구조상 가장 앞에 있는 숫자가 가장 작은수임. 그것보다도 현재의 값이 작거나 같으면 뒷쪽 비교는 의미가 없다.
                }
            }
            st.push(i);
        }

        return answer;
    }
}

© 2023 Lee. All rights reserved.