PS/Solve
[Java] Boj 10867: 중복 빼고 정렬하기
hyeon0117
2025. 2. 20. 16:52
문제
N개의 정수가 주어진다. 이때, N개의 정수를 오름차순으로 정렬하는 프로그램을 작성하시오. 같은 정수는 한 번만 출력한다.
입력
첫째 줄에 수의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째에는 숫자가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다.
출력
첫째 줄에 수를 오름차순으로 정렬한 결과를 출력한다. 이때, 같은 수는 한 번만 출력한다.
풀이
태그에는 정렬로 되어있지만 우선순위 큐를 이용해 해결한 문제.
작은 수부터 우선적으로 poll하는 우선순위 큐의 특성을 이용해 입력받은 수가 우선순위 큐에 존재하지 않는 경우에만 그 수를 큐에 add하고, 우선순위 큐가 빌 때까지 출력하여 문제 해결.
코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st; int n = Integer.parseInt(bf.readLine()); st = new StringTokenizer(bf.readLine()); PriorityQueue<Integer> pq = new PriorityQueue<>(); for (int i=0; i<n; i++) { int x = Integer.parseInt(st.nextToken()); if (! pq.contains(x)) { pq.add(x); } } while (! pq.isEmpty()) { System.out.print(pq.poll() + " "); } } } | cs |