반응형
public class Q_17299 {
public static void main(String[] args) {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(System.out));
Stack<Integer> stack = new Stack<>();
try {
String readLine = bufferedReader.readLine();
String sequence = bufferedReader.readLine();
String[] split = sequence.split(" ");
int[] nge = new int[Integer.parseInt(readLine)];
//수열에서 나온 횟수 파악
int[] freq = new int[1000001];
for (String s : split) {
freq[Integer.parseInt(s)] += 1;
}
stack.push(0); //숫자가 하나만 있는 경우
for (int i = 1; i < split.length; i++) {
if(stack.empty()) {
stack.push(i);
}
while(!stack.empty() && freq[Integer.parseInt(split[stack.peek()])] < freq[Integer.parseInt(split[i])]) {
nge[stack.peek()] = Integer.parseInt(split[i]); //오큰수
stack.pop();
}
stack.push(i);
}
while(!stack.empty()) {
nge[stack.peek()] = -1;
stack.pop();
}
for (int j = 0; j < nge.length; j++) {
String gubun = j == nge.length-1 ? "" : " ";
bufferedWriter.write(nge[j]+gubun);
}
bufferedWriter.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
}
반응형
'Algorithm > 백준 문제풀이' 카테고리의 다른 글
백준 10430 - 나머지(자바 구현) (0) | 2022.02.07 |
---|---|
백준 9093 - 단어 뒤집기(자바 구현) (0) | 2022.01.28 |
백준 17298 - 오큰수(자바 구현) (0) | 2021.12.15 |
백준 17413 - 단어 뒤집기2(자바 구현) (0) | 2021.11.15 |
백준 1158 - 요세푸스 문제(자바 구현) (0) | 2021.10.19 |