[kotlin]입/출력
독학하는 책에는 안나와있었지만 코딩테스트 및 프로그래밍간 입력과 출력은 중요해서 검색을 통해 알아본 내용을 정리하겠습니다.
코틀린 입출력의 특징을 간단히 보자면 자바의 입출력 API에 의존하여 구성되어있습니다. 그리고 Strean을 기반으로 동작합니다.
1.입력
1)readln(), readLine(), readlnOrNull
제가 가장 많이 쓰는 방법으로 입력값을 저장해줄 변수 에 바로 써서 사용하는 방식입니다. 각각 개행문자로 구분, 입력한 줄, null값 포함 여부로 구분하여 사용하며 readln() 을 저는 항상 사용합니다. 그리고 한줄에 여러 데이터를 입력할때 개행이 아닌 띄어쓰기로 각 문자를 구분하게 되는데요. 그럴 경우 split(' ') 을 통해 나눠주며 이를 map형식으로 저장합니다.
split()은 괄호 안에 문자를 기준으로 나누는것이며 map은 자료구조중 하나입니다.
fun main() {
print("이름입력: ")
var name = readLine()
//입력 받은 문자열을 숫자로 변환
print("나이입력: ")
var age = readLine()!!.toInt()
//한 줄에 여러 개의 데이터가 들어올 때 이를 공백 기준으로 나누고 숫자로 변환하여 List<Int>형태로 저장
print("좋아하는 숫자 입력: ")
var lovenum = readLine()!!.split(' ').map { it.toInt() }
println(name)
println(age)
println(lovenum)
}
2)scanner()
scanner는 자바를 접하신 분들은 익숙하실수 있는데요, scanner 객체를 생성하여 입력값을 저장할 변수에 scanner 객체를 사용하여 지정하여 사용합니다. 아래 코드와 같이 Scanner 객체에 System.'in'을 선언해준뒤 입력값을 저장할 변수들에 scanner객체.next로 사용합니다.
scanner의 장점은 next형 을 통해서 return 타입을 지정할수 있습니다.
fun main() {
var sc = Scanner(System.`in`)
var a = sc.nextLine()
var b = sc.nextInt()
println("String: $a")
println("Int: $b")
}
*한줄에 여러 값들 입력하여 저장
알고리즘 문제를 풀다보면 입력 조건이 개행을 통한 입력 구분이 아닌 띄어쓰기로 구분하는 경우가 있습니다. 이럴 경우 한줄로 입력되기때문에 띄어쓰기를 기준으로 입력값들을 구분해야합니다.
3)var (a,b) = readln().split(" ").map { it.toInt() }
2.출력
출력에는 두가지를 사용합니다. 두가지의 큰 차이점은 마지막에 개행을 추가하는지 아닌지의 차이가 있습니다.
1)println()
2)print()
fun main() {
println("Hello")
print("Hello ")
println("world")
}
출력문에서는 변수를 출력할수도 있는데요. 변수 출력 방법은 print문에 바로 쓰거나 print(변수명) 일반 문구와 같이 출력할시 plint("일반 문구 ${변수명}") 을 통해서 출력이 가능합니다.
fun main() {
var a = 10
println("a의 값은 ${a}")
}