Study/Baekjoon

Baekjoon2750,2751: 수 정렬하기(Scanner, Buffer)

devyoseph 2021. 11. 3. 18:47

수 정렬하기 2

시간 제한메모리 제한제출정답맞은 사람정답 비율

2 초  256 MB 147950 39870 27221 29.965%

문제

N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.

입력

첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.

출력

첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.

2750 풀이

수 정렬은 Arrays.sort를 이용하면 곧바로 해결된다

import java.util.Arrays;
import java.util.Scanner;
public class Main {
	static int[] arr;
public static void main(String[] args){
	 Scanner sc = new Scanner(System.in);
	 int N = sc.nextInt();
	 int[] arr = new int[N];
	 for(int i=0; i<N;i++)arr[i]=sc.nextInt();
	 Arrays.sort(arr);
	 for(int i=0; i<N;i++)System.out.println(arr[i]);
}}

 

2751 풀이

정렬할 수가 매우 많을 때 Scanner를 사용하면 주어진 시간 안에 연산할 수 없을 것이다.

역시 Buffer를 사용한 풀이를 한다. BufferedReader와 BufferedWriter 클래스를 사용해 풀이한다.

import java.io.*;
import java.util.Arrays;
public class Main {
	static int[] arr;
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();
}}