본문 바로가기
코딩 문제 풀이/백준

[백준] 자바 문제 풀이 17298 : 골드4

by 코딩하는 랄로 2023. 9. 21.
728x90
import java.io.*;
import java.util.StringTokenizer;

public class Main {

    public static void main(String[] args) throws Exception {
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int n = Integer.parseInt(br.readLine());

        int[] nlist = new int[n];
        StringTokenizer str = new StringTokenizer(br.readLine());

        for(int i = 0; i < n; i ++) {
            nlist[i] = Integer.parseInt(str.nextToken());
        }

        int[] nge = new int[n];
        nge[n-1] = -1;
        int max = nlist[n-1];
        for(int j = n - 2; j >= 0; j--) {
            if(nlist[j] < nlist[j+1]) {
                nge[j] = nlist[j+1];
            } else if(nlist[j] < nge[j+1]) {
                nge[j] = nge[j+1];
            } else {
                nge[j] = -1;
                if(nlist[j] >= max) {
                    max = nlist[j];
                } else {
                    for (int k = j + 1; k < n; k++) {
                        if (nlist[j] < nlist[k]) {
                            nge[j] = nlist[k];
                            break;
                        }
                    }
                }
            }
        }

        StringBuilder sb = new StringBuilder();

        for(int j = 0; j < n; j++){
            sb.append(nge[j] + " ");
        }
        bw.write(sb + "\n");
        bw.flush();
        bw.close();
        br.close();
    }
}
728x90