반응형
오큰수랑 똑같은 방식에 빈도 비교하는 배열만 추가하였습니다.
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
Stack<Integer> stack = new Stack<>();
StringBuilder sb = new StringBuilder();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int res[] = new int[N];
int freq[] = new int[1000001];
int num[] = Arrays.stream(br.readLine().split(" "))
.mapToInt(Integer::parseInt)
.toArray();
for (int i : num) freq[i]++;
for (int i = 0; i < N; i++) {
if (stack.isEmpty())
stack.push(i);
while (!stack.isEmpty() && freq[num[stack.peek()]] < freq[num[i]])
res[stack.pop()] = num[i];
stack.push(i);
}
while (!stack.isEmpty())
res[stack.pop()] = -1;
for (int i : res)
sb.append(i + " ");
System.out.print(sb);
}
}
반응형
'Algorithm' 카테고리의 다른 글
백준 1918번 후위 표기식 [ Java ] (0) | 2021.03.29 |
---|---|
백준 1935번 후위 표기식2 [ Java ] (0) | 2021.03.28 |
백준 17298번 오큰수 [ Java ] (0) | 2021.03.28 |
백준 17413번 단어 뒤집기 2 [ Java ] (0) | 2021.03.28 |
백준 9012번 괄호 [ C, Java ] (0) | 2021.03.28 |