[백준] #10989_수 정렬하기 3

Yujin·2020년 8월 3일
0

BAEKJOON ONLINE JUDGE

목록 보기
2/8
post-thumbnail

📝 문제

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 vs BufferedReader

ScannerBufferedReader
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함수를 그대로 써서 푸는 것이 맞는지 아니면 다른 정렬 방법을 이용해야하는지는 궁금하다

profile
하나하나 알아가는 하루하루

0개의 댓글