-
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