문제 내용
문제
N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
입력
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
출력
첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.
예제 입력 | 예제 출력 |
5 5 4 3 2 1 |
1 2 3 4 5 |
문제 풀이
코드 1 ) 첫 풀이로는 받아오는대로 내장함수를 이용하여 소팅해주었다.
코드 2 ) 하지만, 중복이 없는 숫자라고 했으니 배열을 두고 나올때마다 체킹 해두고, 체킹되어있는 인덱스만 출력하면 시간 복잡도를 줄일 수 있는 방법 또한 있다.
</>̆̈ 코드
import java.io.BufferedReader
import java.io.InputStreamReader
fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
print(List(this.readLine().toInt()) {this.readLine().toInt()}.sorted().joinToString("\n"))
}
import java.io.BufferedReader
import java.io.InputStreamReader
fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
val array = BooleanArray(2000001)
for (i in 0 until this.readLine().toInt()) array[this.readLine().toInt()+1000000] = true
val sb = StringBuilder()
for (i in array.indices) {
if (array[i]) sb.append((i - 1000000).toString() + "\n")
}
println(sb.toString())
}
링크