Uknow's Lab.
article thumbnail

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

 

2751번: 수 정렬하기 2

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

www.acmicpc.net

 

난이도 : 실버 5
태그 : 정렬

 

 

설명

수 정렬하기 두 번째 문제입니다.

1편에서는 직접 삽입정렬을 구현해 풀이해봤다면,

이번엔 자바에서 기본적으로 제공하는 정렬 기능을 사용해 풀어보겠습니다.

 

 

소스코드

import java.io.BufferedReader
import java.io.InputStreamReader
import java.util.Collections

fun main() {
    val br = BufferedReader(InputStreamReader(System.`in`))
    val stringBuilder = StringBuilder()

    val n = br.readLine().toInt()
    val list = ArrayList<Int>()

    for(i in 0 until n) {
        list.add(br.readLine().toInt())
    }

    Collections.sort(list)

    for(i in list) {
        stringBuilder.append(i).append("\n")
    }
    
    println(stringBuilder)
}

 

ArrayList안에 원소를 넣고,

Collections.sort()를 사용해 정렬할 수 있습니다.

복잡한 알고리즘을 직접 구현하지 않아도 꽤 손 쉽게 풀 수 있습니다.

 

 

후기

여러 언어에서 기본적으로 지원하는 알고리즘은 매우 많은 공학자들이 갈려나간 알고리즘이기 때문에,

매우 효율적이고, 빠르게 작동하므로

실제 개발에서는 정렬 알고리즘을 직접 짜기 보다는 기본적으로 제공되는 메소드를 쓰는게 대부분입니다.

 

하지만, 언젠가 직접 알고리즘을 구현해야 하는 상황도 충분히 있을 수 있고,

알고리즘을 배우는 입장에서는 직접 정렬 알고리즘을 구현하는 것도 꽤 많은 공부가 됩니다.

profile

Uknow's Lab.

@유노 Uknow

인생은 Byte와 Double 사이 Char다. 아무말이나 해봤습니다.