import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class sorting3_10989 {
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());
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++) {
sb.append(arr[i]).append('\n');
}
System.out.print(sb);
}
}
이 문제에서 주의해야 할 점은 '시간제한'이 있다는 것이다.
때문에 Scanner를 사용하면 이 문제를 풀 수 없다.
시간을 단축시키기 위해서는 BufferedReader를 사용해야 한다.
그동안 익숙하지 않아서, Scanner가 편해서 BufferedReader 사용을 미뤄왔는데, 이제는 진짜 익숙해질 때다.
BufferedReader
버퍼를 사용하지 않는 입력 : 키보드 키를 누르는 즉시 바로 프로그램에 전달된다.
버퍼를 사용하는 입력 : 키보드의 입력이 있을 때마다 한 문자씩 버퍼로 전송한다. 버퍼가 가득차거나 줄바꿈문자가 나타나면 버퍼의 내용을 한 번에 프로그램에 전달한다.
=> 중간에 버퍼를 두고 한번에 문자를 묶어서 보내면 더 효율적이고 빠르게 전달할 수 있다.
사용법
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
int i = Integer.parseInt(br.readLine());
string으로 리턴 값이 고정되어 있기 때문에, 다른 타입으로 입력받을 때는 형변환이 필요하다.
줄바꿈문자 기준이 아닌, 공백 단위로 데이터를 사용하려고 한다면 StringTokenizer / String.split() 을 사용해야 한다.
- StringTokenizer
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
readLine()으로 입력받은 값을 nextToken() 함수를 통해 공백 단위로 구분할 수 있다.
- String.split()
String arr[] = s.split(" ");
공백단위로 끊어 배열에 저장할 수 있다.
'JAVA' 카테고리의 다른 글
[JAVA][백준] 2751_수 정렬하기 2 (0) | 2024.04.18 |
---|---|
[JAVA][백준] 1181_단어정렬 (Comparator) (1) | 2024.04.18 |
[JAVA][백준] 1978_소수 찾기 (0) | 2024.04.15 |
[JAVA][백준] 10809_알파벳 (0) | 2024.04.15 |
[JAVA][백준] 8958_OX퀴즈 (0) | 2024.04.15 |