ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 수 정렬하기3
    백준 2023. 7. 31. 12:00
    728x90

    메모리 초과부터 시간초과까지 다양한 방법으로 오답처리가 되었다….

    문제

    N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.

    입력

    첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다.

    출력

    첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.

    예제 입력 1

    10
    5
    2
    3
    1
    4
    2
    3
    5
    1
    7
    
    

    예제 출력 1

    1
    1
    2
    2
    3
    3
    4
    5
    5
    7
    

    오답코드

    fun main(){
    
        var count:Int= readln().toInt()
        var num_list=ArrayList<Int>()
        for(i in 0 until count){
            var temp:Int= readln().toInt()
            num_list.add(temp)
        }
        num_list.sort()
        for(i in 0 until num_list.size){
            println(num_list[i])
        }
    
    }
    

    ArrayList를 사용하니까 용량을 많이 차지해 메모리초과가 발생하였다.

     

    오답코드2

    fun main(){
    
        var count:Int= readln().toInt()
        var num_list=IntArray(count)
        for(i in 0 until count){
            var temp:Int= readln().toInt()
            num_list[i]=temp
        }
        num_list.sort()
        for(i in 0 until num_list.size){
            println(num_list[i])
        }
    }
    

    역시 버퍼리더를 안쓰고 readln()과 println을 쓰니 시간초과 문제가 발생했다.

     

    정답코드

    import java.io.BufferedReader
    import java.io.InputStreamReader
    
    fun main() {
        val br = BufferedReader(InputStreamReader(System.`in`))
        val sb = StringBuilder()
    
        var count = br.readLine().toInt()
        var num_list = IntArray(count)
        for (i in 0 until count) {
            var temp: Int = br.readLine().toInt()
            num_list[i] = temp
        }
        num_list.sort()
        for(i in 0 until count){
            sb.append(num_list[i]).append('\\n')
        }
        println(sb)
    }
    

    빠른 입출력문제에서 많이 참고하여 문제를 해결할 수 있었습니다.

    '백준' 카테고리의 다른 글

    영화감독 숌  (0) 2023.07.31
    2007년  (0) 2023.07.31
    이상한 곱셈(공부필요)  (0) 2023.07.31
    최대공약수와 최소공배수<유클리드 호제법>  (0) 2023.07.31
    나이순 정렬  (0) 2023.07.31
Designed by Tistory.