알고리즘 공부/백준 문제풀이

[백준]10867 : 중복 빼고 정렬하기(JAVA)

송테이토 2022. 11. 9. 12:41

백준 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이 좀 더 빠르다