Kotlin

[Kotlin] 코틀린 기본 입출력 - 코틀린 코테 준비

yujinius 2024. 7. 5. 22:37

1. 단일 값 입력

입력

fun main() {
    val n = readLine()!!.toInt()
    println(n)
}

출력

fun main() {
    val n = 5
    println(n)
}

2. 공백으로 구분된 여러 값 입력

입력

fun main() {
    val (a, b, c) = readLine()!!.split(" ").map { it.toInt() }
    println("$a $b $c")
}

출력

fun main() {
    val (a, b, c) = arrayOf(1, 2, 3)
    println("$a $b $c")
}

3. 여러 줄 입력

입력

fun main() {
    val n = readLine()!!.toInt()
    val lines = mutableListOf<String>()
    repeat(n) {
        lines.add(readLine()!!)
    }
    lines.forEach { println(it) }
}

출력

fun main() {
    val lines = listOf("line1", "line2", "line3")
    lines.forEach { println(it) }
}

4. 정수 배열 입력

입력

fun main() {
    val numArray = readLine()!!.split(" ").map { it.toInt() }.toIntArray()
    println(numArray.joinToString(", "))
}

출력

fun main() {
    val numArray = intArrayOf(1, 2, 3, 4, 5)
    println(numArray.joinToString(", "))
}

5. 2차원 배열 입력

입력

fun main() {
    val (n, m) = readLine()!!.split(" ").map { it.toInt() }
    val matrix = Array(n) {
        readLine()!!.split(" ").map { it.toInt() }.toIntArray()
    }
    matrix.forEach { println(it.joinToString(" ")) }
}

출력

fun main() {
    val matrix = arrayOf(
        intArrayOf(1, 2, 3),
        intArrayOf(4, 5, 6),
        intArrayOf(7, 8, 9)
    )
    matrix.forEach { println(it.joinToString(" ")) }
}

6. 빠른 입력 (BufferedReader)

입력

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

fun main() {
    val reader = BufferedReader(InputStreamReader(System.`in`))
    val n = reader.readLine().toInt()
    val numArray = reader.readLine().split(" ").map { it.toInt() }.toIntArray()
    println(numArray.joinToString(", "))
}

7. 빠른 출력 (BufferedWriter)

출력

import java.io.BufferedWriter
import java.io.OutputStreamWriter

fun main() {
    val writer = BufferedWriter(OutputStreamWriter(System.out))
    val numArray = intArrayOf(1, 2, 3, 4, 5)
    writer.write(numArray.joinToString(", "))
    writer.newLine()
    writer.flush()
}

8. 파일 입출력

파일에서 읽기

import java.io.File

fun main() {
    val lines = File("input.txt").readLines()
    lines.forEach { println(it) }
}

파일에 쓰기

import java.io.File

fun main() {
    val output = File("output.txt")
    output.writeText("Hello, World!\\n")
    output.appendText("Welcome to Kotlin.")
}

9. 문자열 배열 입력

입력

fun main() {
    val n = readLine()!!.toInt()
    val stringArray = Array(n) { readLine()!! }
    stringArray.forEach { println(it) }
}

출력

fun main() {
    val stringArray = arrayOf("apple", "banana", "cherry")
    stringArray.forEach { println(it) }
}

10. 정수 배열 출력 (formatted)

출력

fun main() {
    val numArray = intArrayOf(1, 2, 3, 4, 5)
    println(numArray.joinToString(prefix = "[", postfix = "]", separator = ", "))
}

정리

  • 단일 값 입력/출력: readLine()!!.toInt(), println()
  • 공백으로 구분된 여러 값 입력/출력: split(" ").map { it.toInt() }
  • 여러 줄 입력/출력: repeat(n) { readLine()!! }
  • 정수 배열 입력/출력: split(" ").map { it.toInt() }.toIntArray()
  • 2차원 배열 입력/출력: Array(n) { readLine()!!.split(" ").map { it.toInt() }.toIntArray() }
  • 빠른 입력: BufferedReader(InputStreamReader(System.in))
  • 빠른 출력: BufferedWriter(OutputStreamWriter(System.out))
  • 파일 입출력: File("filename").readLines(), File("filename").writeText()
  • 문자열 배열 입력/출력: Array(n) { readLine()!! }
  • 정수 배열 포맷된 출력: joinToString(prefix = "[", postfix = "]", separator = ", ")