본문 바로가기
코딩테스트

[백준] 11382번 꼬마 정민 - Kotlin(코틀린)

by Glion 2025. 4. 11.
반응형

11382 번 꼬마 정민

 

굉장히 간단한 문제라고 생각했다가 무려 4번이나 시도했다.

 

정답 코드부터 보자

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

fun main() {
	BufferedReader(InputStreamReader(System.`in`)).use { br ->
		val (a, b, c) = br.readLine().split(" ").map { it.toLong() }
    	println(a + b + c)
    }
}

 

4번이나 시도하게 됬던 원인은 바로 자료형에 있었다.

 

입력으로 주어지는 A, B, C 의 범위가 1부터 10의 12승, 즉 1조 라는 큰 숫자까지 받을 수 있게 되어있다.

 

아무생각 없이 입력받은 A, B, C 를 int 로 형변환 한 것이 화근이였다.

 

Int

Int 는 4바이트(32비트)를 가지는 자료형으로서, 표현할 수 있는 정수의 범위는 부호비트를 제외한

-2^31 ~ 2^31-1 (-2,147,483,648 ~ 2,147,483,647)

 

이다. 양수 부분에 -1 을 하는 이유는 0 또한 양수이기 때문.

 

Long

Long 은 8바이트(64비트) 를 가지는 자료형으로서, 표현할 수 있는 정수의 범위는 부호비트를 제외한

-2^63 ~ 2^63-1 ( -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807)


이다. 무려 -922경 부터 922경까지의 수의 범위를 표현할 수 있다.

 

따라서, A, B, C 의 범위인 1조까지 받으려면 형변환을 Long 으로 해주어야 문제가 요구하는 입력 조건을 충족시킬 수 있다.

 

항상 입력 가능한 수의 범위를 잘 확인하자...

반응형