알고리즘 분류
- 정렬
https://www.acmicpc.net/problem/10867
이제 나는 정렬 못하면.. 반성을 좀 해야 한다.
한 방에 잘 풀었음! 히히
HashSet 사용
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
HashSet<Integer> set = new HashSet<>();
StringTokenizer st = new StringTokenizer(br.readLine());
for (int i = 0; i < N; i++) {
set.add(Integer.parseInt(st.nextToken()));
}
ArrayList<Integer> list = new ArrayList<>(set);
Collections.sort(list);
for (int num : list) {
System.out.print(num + " ");
}
}
}
중복을 제거하라고 하니 set이 제일 먼저 생각났다.
순서대로 값을 set에 넣어주고 set은 index가 없으므로 list에 그대로 넣어 정렬해주는 방식이다.
배열 사용
다음은 set을 사용하지 않고 배열에 넣어
먼저 정렬해준 뒤
앞에 값이랑 일치하지 않으면 답으로 출력해주는 방식이다.
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
StringTokenizer st = new StringTokenizer(br.readLine());
int[] arr = new int[N];
for (int i = 0; i < N; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(arr);
ArrayList<Integer> list = new ArrayList<>();
list.add(arr[0]);
for (int i = 1; i < N; i++) {
if (arr[i] != arr[i-1]) {
list.add(arr[i]);
}
}
for (int num : list) {
System.out.print(num + " ");
}
}
}
새로 list에 넣어주지 않고 일치하지 않으면 그대로 출력해주는 방식도 택할 수 있겠다.
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
StringTokenizer st = new StringTokenizer(br.readLine());
int[] arr = new int[N];
for (int i = 0; i < N; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(arr);
ArrayList<Integer> list = new ArrayList<>();
list.add(arr[0]);
System.out.print(arr[0] + " ");
for (int i = 1; i < N; i++) {
if (arr[i] != arr[i-1]) {
System.out.print(arr[i] + " ");
}
}
}
}
'Languages > Java' 카테고리의 다른 글
[BOJ 길라잡이/Java] 8일차 #9012 괄호 (0) | 2025.03.19 |
---|---|
[BOJ 길라잡이/Java] 8일차 #10816 숫자 카드 2 (0) | 2025.03.18 |
[BOJ 길라잡이/Java] 7일차 #11651 좌표 정렬하기 2 (0) | 2025.03.17 |
[BOJ 길라잡이/Java] 7일차 #11650 좌표 정렬하기 (0) | 2025.03.17 |
[BOJ 길라잡이/Java] 6일차 #1181 단어 정렬 (0) | 2025.03.12 |