관리 메뉴

막내의 막무가내 프로그래밍 & 일상

[알고리즘] 백준 10989 수 정렬하기 3 -정렬- 본문

알고리즘/문자열, 정렬

[알고리즘] 백준 10989 수 정렬하기 3 -정렬-

막무가내막내 2020. 2. 28. 17:28
728x90

https://www.acmicpc.net/problem/10989

 

10989번: 수 정렬하기 3

첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다.

www.acmicpc.net

정렬문제를 풀어봤다.

처음에 바로 풀었는데 시간초과, 메모리 초과 등의 에러가 났다.

 

먼저 아래 두 코드는 해당 에러들이 발생한 코드들이다. (스캐너, 링크드리스트 사용으로 인한...)

 

 

[실패코드]

import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        ArrayList<Integer> linkedList = new ArrayList<>();

        int size = sc.nextInt();
        for(int i=0; i<size; i++){
            linkedList.add(sc.nextInt());
        }
        Collections.sort(linkedList);
        for(int result : linkedList){
            System.out.println(result);
        }
    }
}
import java.io.*;
import java.util.ArrayList;
import java.util.Collections;

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));
        ArrayList<Integer> linkedList = new ArrayList<>();

        int size = Integer.parseInt(br.readLine());
        for(int i=0; i<size; i++){
            linkedList.add(Integer.valueOf(br.readLine()));
        }
        Collections.sort(linkedList);
        for(int result : linkedList){
            bw.write(""+result);
            bw.newLine();
        }

        bw.flush();
        bw.close();
    }
}

 

 

 


 

그리고 밑은 배열과 버퍼드를 사용해서 통과한 코드이다.

[성공코드]

import java.io.*;
import java.util.Arrays;

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 size = Integer.parseInt(br.readLine());
        int[] input = new int[size];

        for(int i=0; i<size; i++){
            input[i] = Integer.valueOf(br.readLine());
        }
        Arrays.sort(input);
        for(int result : input){
            bw.write(""+result);
            bw.newLine();
        }
        bw.flush();
        bw.close();
    }
}

 

728x90
Comments