ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 빠른 입출력
    백준 2023. 7. 31. 11:54
    728x90

    realine() 이나 readln()을 썼다간 시간초과..!

    import java.io.BufferedReader
    import java.io.InputStreamReader
    import java.util.StringTokenizer
    
    fun main() {
        val br = BufferedReader(InputStreamReader(System.`in`))
        val sb = StringBuilder()
    
        val i = br.readLine().toInt()
        val array = IntArray(i)
    
        for (j in 0 until i) {
            val input = br.readLine()
            if (input == null || input.isBlank()) {
                break
            }
            val st = StringTokenizer(input)
            val a = st.nextToken().toInt()
            val b = st.nextToken().toInt()
            array[j] = a + b
        }
    
        for (j in 0 until i) {
            sb.append(array[j]).append('\\n')
        }
    
        println(sb)
    }
    

    기존 코드에서는 readLine() 함수를 사용하여 한 줄씩 입력을 받았는데, 이 작업은 입력 버퍼에서 매번 한 줄을 읽어오는 작업을 수행하므로 비효율적입니다.

    **BufferedReader**는 입력 스트림을 버퍼링하여 한 번에 여러 문자를 읽어오는 기능을 제공합니다. 따라서 **BufferedReader**를 사용하면 효율적인 입력 처리가 가능해집니다.

    **StringBuilder**는 문자열을 효율적으로 처리하기 위한 클래스입니다. 여러 문자열 조각을 연결할 때마다 새로운 문자열 객체를 생성하는 것보다 **StringBuilder**를 사용하여 문자열을 연결하면 메모리 할당과 객체 생성의 부하를 줄일 수 있습니다.

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

    나이순 정렬  (0) 2023.07.31
    2751번 수 정렬하기  (0) 2023.07.31
    소수 1312번 (좋은 문제..)  (0) 2023.07.31
    EOF의 이해  (0) 2023.07.31
    A+B 한줄에 입력  (0) 2023.07.31
Designed by Tistory.