문제 : https://www.acmicpc.net/problem/10867

풀이 방법


이 문제는 입력받은 숫자를 오름차순으로 정렬하는 문제입니다. 하지만 중복된 숫자가 있다면 제거하고 정렬해야 합니다. 이 문제는 배열을 이용해서 풀어도 되지만, 배열을 이용해서 푼다면 중복된 값을 체크해야 하기 때문에, 그보다는 중복된 값을 허용하지 않는 자료구조를 사용하는 것이 간편하다고 생각합니다.

그래서 저는 Set 자료구조를 사용했고, HashSet을 이용해서 문제를 해결하였습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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));
int test_case = Integer.parseInt(bf.readLine());
Set<Integer> set = new HashSet<>();

StringTokenizer st = new StringTokenizer(bf.readLine(), " ");
for(int i=0;i<test_case;i++){
int value = Integer.parseInt(st.nextToken());
set.add(value);
}

List<Integer> list = new ArrayList<>(set);
Collections.sort(list);

Iterator<Integer> iterator = list.iterator();
while (iterator.hasNext()){
System.out.print(iterator.next()+" ");
}
}
}