문제 설명
이번 강좌에서는 간단한 정렬 알고리즘 문제인 “수 정렬하기 1″을 다룹니다. 이 문제는 주어진 수들을 오름차순으로 정렬하는 것입니다. 문제의 요구사항은 다음과 같습니다:
문제: 정수 N개가 주어진다. 이 수들을 오름차순으로 정렬하여 한 줄에 하나씩 출력하는 프로그램을 작성하시오.
입력 형식
- 첫째 줄에 주어지는 정수 N (1 ≤ N ≤ 100,000)
- 둘째 줄부터 N개의 정수가 주어진다. (나머지 수의 범위는 -1,000,000,000 ≤ 정수 ≤ 1,000,000,000)
출력 형식
정렬된 수를 오름차순으로 한 줄에 하나씩 출력한다.
예제 입력
5 5 4 3 2 1
예제 출력
1 2 3 4 5
문제를 푸는 과정
이 문제를 풀기 위해서는 정렬 알고리즘을 활용해야 합니다. 코틀린에서는 내장된 정렬 메서드를 제공하기 때문에 이를 이용하면 손쉽게 문제를 해결할 수 있습니다. 다음은 문제를 해결하는 과정입니다.
1. 입력 받기
먼저, 입력을 받을 필요가 있습니다. 표준 입력을 통해 정수 N과 정수 배열을 입력받습니다. 코틀린에서는 readLine()
메서드를 사용하여 입력을 받을 수 있습니다.
2. 숫자 배열 만들기
입력받은 숫자들을 정수 배열로 변환하여 저장해야 합니다. 이를 위해 split()
메서드와 함께 map()
메서드를 사용합니다.
3. 정렬하기
정리된 숫자 배열을 오름차순으로 정렬하기 위해 코틀린의 sort()
메서드를 사용할 수 있습니다. 이는 매우 효율적이며 직관적입니다.
4. 결과 출력하기
정렬된 배열을 한 줄에 하나씩 출력해야 하므로, 배열을 반복하면서 값을 출력하면 됩니다.
코드 구현
이제 이 모든 과정을 하나의 코틀린 프로그램으로 구현해보겠습니다. 아래는 해당 문제를 해결하는 코드입니다.
fun main() {
// 1. 입력 받기
val n = readLine()!!.toInt()
val numbers = IntArray(n)
// 2. 숫자 배열 만들기
for (i in 0 until n) {
numbers[i] = readLine()!!.toInt()
}
// 3. 정렬하기
numbers.sort()
// 4. 결과 출력하기
for (number in numbers) {
println(number)
}
}
코드 설명
위 코드는 각 단계를 순서대로 수행합니다. 먼저 readLine()!!.toInt()
를 사용하여 첫 번째 줄에서 정수 N을 입력받고, 반복문을 통해 N개의 정수를 배열에 저장합니다. 그 후 numbers.sort()
를 호출하여 배열을 정렬하고, 마지막으로 정렬된 결과를 출력합니다.
효율성
이 알고리즘의 시간 복잡도는 O(N log N)입니다. 이는 정렬 알고리즘의 일반적인 성능 특성으로, 대규모 데이터셋에서도 잘 작동합니다. 주어진 범위 내에서 N이 최대 100,000까지 가능하므로 충분히 효율적인 해결책입니다.
결론
이번 강좌에서는 간단한 수 정렬 문제를 통해 코틀린을 이용한 알고리즘 문제 해결의 기초를 다루었습니다. 앞으로 더 복잡한 문제로 나아가기 전에 기초적인 문제 해결 능력을 키우는 것이 중요합니다. 다양한 문제를 풀어보며 경험을 쌓는 것이 최선의 길입니다.
감사합니다, 여러분의 코딩 테스트 준비에 도움이 되길 바랍니다!