[백준 | Java] 2750 수 정렬하기

알린·2023년 9월 28일

baekjoon

목록 보기
3/68



풀이방법

  • 가장 간단한 방법으로 선택정렬 구현 Array.sort() 메소드 사용

    선택정렬 :
    첫 번째 인덱스부터 시작하여 뒤의 인덱스들의 값들과 비교하여 최솟값들을 차곡차곡 쌓아나가는 방법으로, 시간복잡도는 O(n2)
    Array.sort() :
    자바에서 기본적으로 제공되는 메소드, 자동으로 ()에 들어가는 해당 배열이 정렬
    시간복잡도는 평균 O(nlogn)이며, 최악의 경우 O(n2)

  • 입력 방식 2가지로 풀이 => Scanner, BufferedReader

    • Scanner과 BufferedReader의 차이
      평균적으로 입력 속도가 Scanner 사용시 4.8448초, BufferedReader 사용 시 0.6585초로, BufferedReader 사용할 때가 훨씬 성능이 좋음
      참고: https://www.acmicpc.net/blog/search/%EC%9E%85%EB%A0%A5+%EC%86%8D%EB%8F%84
    • 성능차이가 나는 이유
      Scanner는 1KB 크기의 버퍼를 갖기 때문에 입력이 바로 전달
      BufferedReader는 8KB 크기의 버퍼를 가져 buffer에 입력들을 저장하였다 한 번에 전송

내 답안

Scanner+선택정렬 방식

import java.util.Scanner;

public class _2750 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int count = scanner.nextInt();
        int[] number = new int[count];

        for (int i = 0; i < number.length; i++) {
            number[i] = scanner.nextInt();
        }

        int tmp;
        for (int i = 0; i < count; i++) {
            for (int j = i+1; j < count; j++) {
                if(number[i] > number[j]) {
                    tmp = number[i];
                    number[i] = number[j];
                    number[j] = tmp;
                }
            }
        }


        for (int i = 0; i < number.length; i++) {
            System.out.println(number[i]);
        }
    }
}

Scanner+Arrays.sort 방식

import java.util.Arrays;
import java.util.Scanner;

public class _2750 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int count = scanner.nextInt();
        int[] number = new int[count];

        for (int i = 0; i < number.length; i++) {
            number[i] = scanner.nextInt();
        }

        Arrays.sort(number);


        for (int i = 0; i < number.length; i++) {
            System.out.println(number[i]);
        }
    }
}

BufferedReader+Arrays.sort 방식

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

public class _2750_BufferedReader {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int count = Integer.parseInt(br.readLine());
        int[] number = new int[count];

        for (int i = 0; i < count; i++) {
            number[i] = Integer.parseInt(br.readLine());
        }

        Arrays.sort(number);

        for (int result : number) {
            System.out.println(result);
        }
    }
}
profile
짱이 되고싶은 개발 기록

0개의 댓글