반응형
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 으로 해주어야 문제가 요구하는 입력 조건을 충족시킬 수 있다.
항상 입력 가능한 수의 범위를 잘 확인하자...
반응형
'코딩테스트' 카테고리의 다른 글
[백준] 10810번 공 넣기 - Kotlin(코틀린) (1) | 2025.04.11 |
---|---|
[백준] 25314번 코딩은 체육과목 입니다 - Kotlin(코틀린) (0) | 2025.04.11 |
Java(자바) - 선택정렬, 버블정렬, 삽입정렬, LRU(Least Recently Used) (1) | 2023.01.07 |
[백준] 1157번 단어공부 - Java(자바) (1) | 2023.01.06 |
[백준] 1065번 한수 - Java(자바) (2) | 2023.01.04 |