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

[백준] 자바 문제 풀이 17299 : 골드3

by 코딩하는 랄로 2023. 10. 6.
728x90

BOJ 17299 : 오등큰수

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.StringTokenizer;

public class Main {

	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

		int n = Integer.parseInt(br.readLine());
		
		StringTokenizer str = new StringTokenizer(br.readLine(), " ");
		int[] nlist = new int[n];
		int[] flist = new int[1000001];
		int[] ngf = new int[n];
		for(int i =0; i < n; i++) {
			nlist[i] = Integer.parseInt(str.nextToken());
			flist[nlist[i]]++;
			ngf[i] = -1;
		}
		
		Deque<Integer> stack = new ArrayDeque<>();
		stack.addFirst(0);
		for(int i = 1; i < n; i++) {
			while(!stack.isEmpty() && flist[nlist[stack.peek()]] < flist[nlist[i]]) {
				ngf[stack.pollFirst()] = nlist[i];
			}
			stack.addFirst(i);
		}
		
		for(int i : ngf) {
			bw.write(i + " ");
		}
		bw.flush();
		br.close();
		bw.close();
	}

}
728x90