작성자: 조광형
작성일: 2024년 11월 26일
서론
코딩테스트에서는 알고리즘 문제풀이 능력을 평가하기 위해 다양한 문제들이 출제됩니다. 그 중에서도 “수 정렬하기” 문제는 기본적이면서도 중요한 알고리즘 사고력을 요구하는 문제가 됩니다. 이 문제를 통해 기본적인 정렬 알고리즘을 이해하고, 코틀린 언어의 문법에 익숙해지는 기회를 제공하고자 합니다.
문제 설명
주어진 정수 N개를 오름차순으로 정렬하는 프로그램을 작성하시오.
입력의 첫 번째 줄에는 정수 N이 주어지며, 다음 N개 줄에는 정수들이 주어집니다.
이 정수를 정렬하여 한 줄에 하나씩 출력하는 프로그램을 작성하세요.
입력
- 첫 번째 줄에 정수 N (1 ≤ N ≤ 1,000,000) - 다음 N줄에는 각각의 정수 A (1 ≤ A ≤ 1,000,000)
출력
- N개의 정수를 오름차순으로 정렬하여 한 줄에 하나씩 출력
문제 접근 방법
이 문제는 정렬 알고리즘을 요구하는 기본적인 문제로, 다양한 정렬 알고리즘 중에서도
코틀린의 기본 제공 기능을 활용하는 것이 유용합니다.
우리는 다음 단계를 통해 문제를 해결할 것입니다.
- 입력을 받아오기
- 정렬 알고리즘을 적용하기
- 정렬된 결과를 출력하기
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개의 정수를 정렬하는 데도 효율적으로 수행될 수 있습니다.
마무리
“수 정렬하기” 문제는 기본적인 알고리즘과 코틀린의 문법을 학습하는 데 큰 도움이 됩니다.
알고리즘 문제를 풀기 위해서는 기본을 확실히 다지고, 다양한 문제를 풀어보는 것이 중요합니다.
앞으로도 여러 알고리즘을 배우고 실습하여 코딩 테스트 준비에 만전을 기하길 바랍니다.