백준 2751번 '수 정렬하기 2' 문제. (실버5)
https://www.acmicpc.net/problem/2751
조건
첫째 줄에 수의 개수(시행 횟수) N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
1차 접근 Collections.sort()를 활용한 정렬
import java.util.*;
public class Main {
public static void main(String [] args){
Scanner sc = new Scanner(System.in);
int numCount = sc.nextInt();
ArrayList<Integer> num = new ArrayList<Integer>();
for(int i = 0; i < numCount; i++){
int number = sc.nextInt();
num.add(number);
}
Collections.sort(num);
for(int i : num){
System.out.println(i);
}
}
}
시간초과가 발생했다. 알아보니 입출력의 방식이 비효율적이기 때문이었다.
이를 해결하기 위해 buffer를 사용하는 BufferedReader, BufferedWriter 클래스를 알게 되었다.
이 클래스를 활용한 입출력 방법과 자세한 설명은 포스트할 예정
최종 코드
import java.util.*;
import java.io.*;
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 numCount = Integer.parseInt(br.readLine());
ArrayList<Integer> numList = new ArrayList<Integer>();
for(int i = 0; i < numCount; i++)
numList.add(Integer.parseInt(br.readLine()));
Collections.sort(numList);
for(int i : numList)
bw.write(i + "\n");
bw.flush();
bw.close();
}
}
코드 설명
'백준 > Java' 카테고리의 다른 글
| [JAVA] 소수 구하기 - 에라토스테네스의 체 (0) | 2025.05.02 |
|---|---|
| [JAVA] 백준 2839번 설탕 배달 - 모든 풀이법 (그리디, DP, BFS, 완전탐색, 시간 복잡도 O(1)) (0) | 2025.03.27 |
| [JAVA] 입력 받은 숫자의 개수 구하기(정렬, 이분 탐색, HashMap, TreeMap) (1) | 2025.03.20 |
| [JAVA] 해당 날짜의 요일 구하기 (0) | 2025.03.04 |
| [JAVA] 문자열에서 모음 개수 구하기 (0) | 2025.02.27 |