코틀린 코딩테스트 강좌, 수 정렬하기

작성자: 조광형

작성일: 2024년 11월 26일

서론

코딩테스트에서는 알고리즘 문제풀이 능력을 평가하기 위해 다양한 문제들이 출제됩니다. 그 중에서도 “수 정렬하기” 문제는 기본적이면서도 중요한 알고리즘 사고력을 요구하는 문제가 됩니다. 이 문제를 통해 기본적인 정렬 알고리즘을 이해하고, 코틀린 언어의 문법에 익숙해지는 기회를 제공하고자 합니다.

문제 설명

주어진 정수 N개를 오름차순으로 정렬하는 프로그램을 작성하시오.
입력의 첫 번째 줄에는 정수 N이 주어지며, 다음 N개 줄에는 정수들이 주어집니다.
이 정수를 정렬하여 한 줄에 하나씩 출력하는 프로그램을 작성하세요.

입력

        - 첫 번째 줄에 정수 N (1 ≤ N ≤ 1,000,000)
        - 다음 N줄에는 각각의 정수 A (1 ≤ A ≤ 1,000,000)
        

출력

        - N개의 정수를 오름차순으로 정렬하여 한 줄에 하나씩 출력
        

문제 접근 방법

이 문제는 정렬 알고리즘을 요구하는 기본적인 문제로, 다양한 정렬 알고리즘 중에서도
코틀린의 기본 제공 기능을 활용하는 것이 유용합니다.
우리는 다음 단계를 통해 문제를 해결할 것입니다.

  1. 입력을 받아오기
  2. 정렬 알고리즘을 적용하기
  3. 정렬된 결과를 출력하기

1. 입력 받아오기

코틀린에서는 readLine() 함수를 사용하여 표준 입력을 받을 수 있습니다.
첫 번째 줄에 입력되는 정수 N을 읽고, 그 다음 N개의 정수를 배열이나 리스트에 저장합니다.

아래는 입력을 받을 때 사용하는 예시 코드입니다.

            fun main() {
                val n = readLine()!!.toInt()
                val numbers = ArrayList()
                for (i in 1..n) {
                    numbers.add(readLine()!!.toInt())
                }
                // 이후 정렬 및 출력 코드
            }
        

2. 정렬 알고리즘 적용하기

코틀린에서는 sorted() 함수를 사용하여 리스트를 쉽게 정렬할 수 있습니다.
이 함수는 기본적으로 오름차순으로 정렬을 해주기 때문에 추가적인 구현 없이 사용할 수 있습니다.
아래와 같이 정렬을 적용할 수 있습니다.

            val sortedNumbers = numbers.sorted()
        

3. 정렬된 결과 출력하기

정렬된 리스트를 출력하기 위해서는 반복문을 사용할 수 있습니다.
각 요소를 한 줄에 하나씩 출력하면 됩니다.
이를 위해 forEach 함수를 사용할 수 있습니다.

            sortedNumbers.forEach { println(it) }
        

전체 코드

위에서 설명한 모든 단계를 합쳐 완성된 코드는 아래와 같습니다.

            fun main() {
                val n = readLine()!!.toInt()
                val numbers = ArrayList()
                
                for (i in 1..n) {
                    numbers.add(readLine()!!.toInt())
                }

                val sortedNumbers = numbers.sorted()

                sortedNumbers.forEach { println(it) }
            }
        

복잡도 분석

이 문제에서 사용한 정렬 알고리즘의 시간 복잡도는 일반적으로 O(N log N)입니다.
따라서 최대 1,000,000개의 정수를 정렬하는 데도 효율적으로 수행될 수 있습니다.

마무리

“수 정렬하기” 문제는 기본적인 알고리즘과 코틀린의 문법을 학습하는 데 큰 도움이 됩니다.
알고리즘 문제를 풀기 위해서는 기본을 확실히 다지고, 다양한 문제를 풀어보는 것이 중요합니다.
앞으로도 여러 알고리즘을 배우고 실습하여 코딩 테스트 준비에 만전을 기하길 바랍니다.

감사합니다!