Programming/Kotlin

[Kotlin] 입력값 받기 (BufferedReader, InputStreamReader, StringTokenizer)

코딩뽀시래기 2024. 5. 4. 22:45
728x90

Kotlin에서 입력값 받는 방법을 정리해보겠다! Java랑 비슷한데 코드로 작성해보면 살짝 다르기 때문에 비교해서 기록해보겠다.

 

Scanner로 입력 받는 방법도 있지만 이건 속도가 느리기 때문에 나는 무조건 BufferedReader, InputStreamReader를 사용한다. 코드는 조금 길어져도 속도는 좀더 빠르다

 

Java

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine();                // 문자열일때
int input = Integer.parseInt(br.readLine()); // 정수일때

 

Kotlin

val br = BufferedReader(InputStreamReader(System.`in`))
val input = br.readLine()         // 문자열일 때
val input = br.readLine().toInt() // 정수일 때

 

기본적으로 입력 받는 방법은 위와 같은데, 공백으로 구분해서 한 줄에 여러 데이터가 입력되면 StringTokenizer를 이용해줘야 한다! Java와 Kotlin의 차이라고 할 만한 건... kotlin은 System.in에서 in을 ``로 묶어줬다는 점 정도?

 


Java

StringTokenizer st = new StringTokenizer(br.readLine());

int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
int c = Integer.parseInt(st.nextToken());

 

Kotlin

var st = StringTokenizer(br.readLine())

var a = st.nextToken().toInt()
var b = st.nextToken().toInt()
var c = st.nextToken().toInt()

 

1 2 3

이런 식으로 공백을 두고 정수 3개가 입력됐다는 가정하에 코드를 짜보면 위와 같다.

 


Kotlin에서 입력 받는 또다른 형태가 있는데...

 

fun main(args: Array<String>) = with(System.`in`.bufferedReader()) {
    val input = readLine()
}

 

위처럼 입력 받을 수도 있다고 한다. 나는 자바에서 첫번째 방법처럼 하던 게 익숙해서 코틀린에서도 그렇게 작성하는 게 편할 것 같다.

 

 

< 참고 >

 

[코틀린] 코틀린에서의 입력값 처리 방법 feat. 알고리즘 문제풀이 꿀팁

백준 알고리즘 문제를 풀려면 주어지는 입력값에 대한 처리를 해야합니다.따라서 이번 포스팅은 주어지는 입력값 처리 방법에 대해서 알아볼게요.백준 문제를 푸실 때, 대부분 Scanner와 BufferedRea

velog.io

 

728x90