☕Language: Java
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Main {
public static void main(String[] args) throws IOException {
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int cnt = Integer.parseInt(br.readLine());
List<Integer> intList = new ArrayList<>();
while (cnt-- > 0) {
intList.add(Integer.parseInt(br.readLine()));
}
Collections.sort(intList);
for (int i = 0; i < intList.size(); i++) {
if (i == intList.size() - 1) {
bw.write(intList.get(i) + "");
} else {
bw.write(intList.get(i) + "\n");
}
}
bw.flush();
bw.close();
}
}
|
🤔 해설
1. while 반복문
- 입력될 숫자 개수를 1씩 감소시키면서 반복문 진행
2. Collections Lib
- ArrayList를 사용하여 Collections 라이브러리에 있는 sort 사용
😮 이 외의 풀이
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
27
28
29
30
31
32
33
34
35
36
37
|
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
public static void main(String[] args) throws IOException {
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int cnt = Integer.parseInt(br.readLine());
StringBuffer sb = new StringBuffer();
boolean[] bArr = new boolean[2000001];
for (int i = 0; i < cnt; i++) {
bArr[Integer.parseInt(br.readLine()) + 1000000] = true;
}
for (int i = 0; i < bArr.length; i++) {
if (bArr[i]) {
sb.append(i - 1000000).append("\n");
}
}
bw.write(sb + "");
bw.flush();
bw.close();
}
}
|
1. boolean[]
- 입력값의 범위만큼 boolean[] 생성
- 중복값이 없으므로 값이 입력될 경우, false → true 변경
2. StringBuffer
- 입력된 값의 boolean[]값이 true이므로 true일 경우에만 sb에 append
- 배열 위치 지정 시, 절대값을 양수화하기위해 +1,000,000 했으므로 append 시에는 다시 실제 숫자를 반영하기 위해 -1,000,000 처리
⭐ 계수 정렬을 활용하면, 처리 속도가 1/2배가 된다!
* 계수 정렬(Counting Sort): 데이터 값을 직접 비교하지 않고, 단순하게 각 숫자가 몇 개 있는지 개수를 세어 저장한 후에 정렬하는 알고리즘
🔗 소스 코드
HJ0216/TIL/BOJ
📚 참고 자료
'Computer > Algorithm_Java' 카테고리의 다른 글
[BaekJoon] 1193번 분수찾기 문제풀이 (Success) (0) | 2023.07.30 |
---|---|
[BaekJoon] 10989번 수 정렬하기3 문제풀이 (Success) (0) | 2023.07.30 |
[BaekJoon] 2839번 설탕 배달 문제풀이 (Success) (0) | 2023.07.28 |
[BaekJoon] 19532번 수학은 비대면강의입니다 문제풀이 (Success) (0) | 2023.07.28 |
[BaekJoon] 2798번 블랙잭 문제풀이 (Success) (0) | 2023.07.25 |