티스토리 뷰

반응형

문제

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

입력

첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.

출력

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

예제

예제 입력 1 예제 출력1
5
5
4
3
2
1
1
2
3
4
5

 

풀이

  1. 수가 주어졌는지를 나타내는 배열을 정의한다. (음수도 가능하므로 배열의 크기는 절댓값 1000000*2+1)
  2. 주어지는 수들이 나타났음을 배열에 표시한다.
  3. 배열을 처음부터 탐색하면서 수가 나타났음으로 표시된 경우 해당 수를 출력한다.

 

이 때 줄마다 println을 사용해 출력하는 경우 시간초과가 뜬다.

따라서 bufferWriter를 사용해서 각 문장을 bw.write()로 출력하거나 StringBuilder를 사용해서 마지막에 한 번에 출력하면 코드 실행 시간을 줄일 수 있다.

import java.io.BufferedReader
import java.io.InputStreamReader

fun main() {

    val br = BufferedReader(InputStreamReader(System.`in`))
    val bw = System.out.bufferedWriter()
    val n = br.readLine().toInt()

    // 배열 초기화
    val list = BooleanArray(2000001)

    // 나타난 숫자 표시
    for (i in 0 until n) {
        list[br.readLine().toInt()+1000000] = true
    }

    val sb = StringBuilder()
    for (i in list.indices) {
        if (list[i]) {
            sb.append("${i-1000000}\n")
        }
    }
    
    bw.write(sb.toString())
    bw.close()
    br.close()
}

 

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함