수 정렬하기, 수 정렬하기 2 문제와 비슷한 문제다.
다만 수 정렬하기 2에 비해
(1 <= N<= 10,000000)으로 N의 개수가 늘었고,
주어지는 수는 10,000보다 작거나 같은 자연수로 줄었다.
수 정렬하기 1, 2와 같은 방법 사용하여
int 배열을 Arrays.sort()로 정렬하고
StringBuilder를 이용하여 출력하는 방법을 사용했다.
import java.util.*;
import java.io.*;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int[] arr = new int[N];
for (int i = 0; i < N; i++) {
arr[i] = Integer.parseInt(br.readLine());
}
Arrays.sort(arr);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < N; i++) {
sb.append(arr[i]);
if(i != N - 1) {
sb.append("\n");
}
}
System.out.println(sb.toString());
}
}
이전에 제출했던 코드를 보니 StringBuilder가 아닌
BufferedWriter를 사용해서 출력한 걸 발견했다.
그 김에 둘의 차이를 정리해보고자 했다.
BufferedWriter vs StringBuilder
BufferedWriter는 출력 버퍼를 사용하여 여러 줄의 데이터를 한 번에 출력한다.
write()를 사용하여 출력 버퍼에 데이터를 쌓고, flush()를 호출할 때 실제로 출력한다.
StringBuilder는 append()를 사용하여 여러 개의 문자열을 한 번에 저장한다.
그리고 마지막에 System.out.println(sb.toString())과 같이 호출하여 한 번에 출력한다.
큰 차이는 없지만, BufferedWriter가 출력 중간 메모리 사용이 적고 빠르다고 한다.
요건 BufferedWriter + Arrays.sort 사용하여 예전에 푼 방식이다.
import java.io.*;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
int[] arr = new int[N];
for (int i = 0; i < N; i++) {
arr[i] = Integer.parseInt(br.readLine());
}
Arrays.sort(arr);
for (int i = 0; i < N; i++) {
bw.write(arr[i] + "\n");
}
bw.flush();
bw.close();
}
}
'Languages > Java' 카테고리의 다른 글
[BOJ 길라잡이/Java] 4일차 #10828 스택 (0) | 2025.03.11 |
---|---|
[BOJ 길라잡이/Java] 3일차 #10815 숫자 카드 (0) | 2025.03.08 |
[BOJ 길라잡이/Java] 2일차 #2751 수 정렬하기 2 (0) | 2025.03.06 |
[BOJ 길라잡이/Java] 2일차 #2750 수 정렬하기 (0) | 2025.03.06 |
[BOJ 길라잡이/Java] 1일차 #1920 수 찾기 (0) | 2025.03.05 |