N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다.
첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.
10
5
2
3
1
4
2
3
5
1
7
1
1
2
2
3
3
4
5
5
7
package com.focusonmx.baekjoon;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Arrays;
import java.util.Scanner;
public class Solution_B10989 {
public static void main(String[] args) throws IOException {
int num;
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
num= Integer.parseInt(bf.readLine());
int[] arr= new int[num];
for (int i =0;i <num;i++) {
arr[i]=Integer.parseInt(bf.readLine());
}
Arrays.sort(arr);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
for(int i=0;i<arr.length;i++) {
bw.write(Integer.toString(arr[i])+"\n");
}
bw.flush();
bw.close();
}
}
Scanner
로 입력받는 것 보다 BufferedReader
로 입력 받는 것이 빠르고
System.out.println
으로 출력하는 것 보다 BufferedWriter
로 출력하는 것이 빠르다.
Scanner | BufferedReader |
---|---|
Space,Enter모두 경계로 인식 | Enter만 경계로 인식 |
입력받는 자료형 다양 | String으로 고정 |
데이터 가공작업 적음 | 데이터 가공작업 많음 |
많은 양의 데이터 입력 속도 느림 | 많은 양의 데이터 입력 속도 빠름 |
BufferedReader
사용법BufferedReader
를 사용하는데 필요한 것들을 아래코드처럼 import
해줘야하며 예외처리를 꼭 해줘야한다. try catch
문을 이용하여 해도 되지만 대개 throws IOException
을 통해 처리한다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
//import 해줘야함
public static void main(String[] args) throws IOException {
//예외처리 꼭해줘야함. try catch이용해도되지만 대개 이방식 이용
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String s = bf.readLine();
int i = Integer.parseInt(bf.readLine());
}
BufferedWriter
사용법버퍼를 사용하기 때문에 BufferedWriter
사용 후 flush()
,close()
를 반드시 호출하여 뒷처리를 해야한다. 개행시에는 \n
을 이용한다.
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
//import 해줘야함
public static void main(String[] args) throws IOException {
//예외처리 꼭해줘야함. try catch이용해도되지만 대개 이방식 이용
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String s = "abcdefg";
bw.write(s+"\n");
bw.flush();
bw.close();
}
https://www.acmicpc.net/blog/view/57
이문제의 요건이 입출력 속도를 빠르게 하는 것이라 자바의 sort함수를 그대로 써서 푸는 것이 맞는지 아니면 다른 정렬 방법을 이용해야하는지는 궁금하다