코딩 문제 풀이/백준
[백준] 자바 문제 풀이 17299 : 골드3
코딩하는 랄로
2023. 10. 6. 22:27
반응형
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();
}
}
반응형