백준 2750 - 수 정렬하기 1 & 2

Updated:

Java

2750 번 - 수 정렬하기 1 & 2

문제

접근 방법

두 문제 모두 N의 수가 그리 많지는 않아, ArrayList로 저장 후 Collections.sort를 통해 해결하였다.

Collections.sort는 Tim 정렬을 사용하고 있다.

Tim 정렬은 삽입(Insertion) 정렬과 합병(Merge) 정렬을 결합하여 만든 정렬이며,
Tim Sort 알고리즘의 최선 시간 복잡도는 O(n), 평균은 O(nlogn), 최악의 경우는 O(nlogn)입니다.

따라서, 입력으로 받는 수로 1초 이내에 연산이 가능합니다.

출력은 StringBuilder를 통하여 시간을 단축하였다.

코드

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

public class Main {
	static int n, result;
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    	StringTokenizer stk;
    	n = stoi(br.readLine());
    	List<Integer> arr = new ArrayList<Integer>();

    	for(int i = 0; i < n; i++) {
    		arr.add(stoi(br.readLine()));
    	}

    	Collections.sort(arr);

    	StringBuilder sb = new StringBuilder();
    	for(int i = 0; i < n; i++) {
    		sb.append(arr.get(i));
    		sb.append("\n");
    	}
    	System.out.println(sb.toString());
    	br.close();
	}

	static int stoi(String str) {
    	return Integer.parseInt(str);
    }
}

총평

후기

개선할 점