백준 10867 자바
중복 빼고 정렬하기
문제
N개의 정수가 주어진다. 이때, N개의 정수를 오름차순으로 정렬하는 프로그램을 작성하시오. 같은 정수는 한 번만 출력한다.
입력
첫째 줄에 수의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째에는 숫자가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다.
출력
첫째 줄에 수를 오름차순으로 정렬한 결과를 출력한다. 이때, 같은 수는 한 번만 출력한다.
예제 입력 1
10
1 4 2 3 1 4 2 3 1 2
예제 출력 1
1 2 3 4
배열 중복 값 제거하기 - 자바 배열 숫자 중복 제거
방법1. Stream.distinct() 로 제거해주기
// 중복 제거
int[] result = Arrays.stream(arr).distinct().toArray();
sb.append(Arrays.toString(result));
package Day1108;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class B10867 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(br.readLine());
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int[] arr = new int[N];
// 입력
for (int i = 0; i < arr.length; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(arr); // 오름차순
// 중복 제거(중복은 한번만)
int[] result = Arrays.stream(arr).distinct().toArray();
sb.append(Arrays.toString(result));
System.out.print(sb.toString().replace("[", "").replace("]", "").replace(", ", " "));
}
}
방법2 - HashSet
// 중복 값을 받지 않기 위해 HashSet을 사용
HashSet<Integer> hashSet = new HashSet<Integer>();
// 입력이 끝난 HashSet을 ArrayList로 담은 뒤, Collections.sort()를 이용하여 오름차순 정렬.
ArrayList<Integer> arrayList = new ArrayList<Integer>(hashSet);
Collections.sort(arrayList);
package Day1108;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.StringTokenizer;
public class B10867_HashSet {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(br.readLine());
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
// 중복 값을 받지 않기 위해 HashSet을 사용
HashSet<Integer> hashSet = new HashSet<Integer>();
// 입력
for (int i = 0; i < N; i++) {
hashSet.add(Integer.parseInt(st.nextToken()));
}
// 입력이 끝난 HashSet을 ArrayList로 담은 뒤, Collections.sort()를 이용하여 오름차순 정렬.
ArrayList<Integer> arrayList = new ArrayList<Integer>(hashSet);
Collections.sort(arrayList);
// 출력
for (int i : arrayList) {
sb.append(i).append(" ");
}
System.out.println(sb.toString());
}
}
HashSet이 좀 더 빠르다
'알고리즘 공부 > 백준 문제풀이' 카테고리의 다른 글
[백준] 10828 스택 (JAVA) (0) | 2022.11.09 |
---|---|
[백준]11650 : 좌표 정렬하기 (JAVA) (0) | 2022.11.09 |
[백준] 9093 : 단어 뒤집기 (JAVA) (0) | 2022.11.07 |
[백준] 1094 : 막대기 (JAVA) (0) | 2022.11.02 |
[백준] 11651 : 좌표 정렬하기2 (JAVA) - 람다식, Comparator (0) | 2022.11.02 |