아무 생각없이 int를 사용했다가 런타임 에러가 떠서 당황했다.
문제를 잘 보면
[입력 : 첫 번째 줄에 A, B, C (1 ≤ A, B, C ≤ 10¹²)이 공백을 사이에 두고 주어진다.] 에서 범위가 1 ~ 10의 12승이다.
하지만 int의 4바이트로 양의 범위는 최대 2,147,483,647(2의 31승 ) < 10의 10승 이기 때문에 런타임 에러가 뜬다.
따라서 8바이트 자료형(double,long long등)을 써줘야 런타임 에러가 발생하지 않는다.
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
long a,b,c;
a = sc.nextLong();
b = sc.nextLong();
c = sc.nextLong();
System.out.println(a+b+c);
sc.close();
}
}
문제 예시 입력과 출력에서 정수만 써져 있기 때문에 long이 더 적합해 보인다.
(double로 받고 long으로 형변환(casting)해도 정답처리가 되긴 한다.)
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
double a,b,c;
a = sc.nextDouble();
b = sc.nextDouble();
c = sc.nextDouble();
System.out.println((long)(a+b+c));
sc.close();
}
}
요약
문제에서 주어진 범위를 잘 살펴보고 자료형을 선택하자
'백준' 카테고리의 다른 글
백준 2839번 - 설탕배달 문제 - Java (0) | 2023.07.17 |
---|---|
백준 1018 - 체스판 문제 - Java (0) | 2023.07.16 |
백준 24313번 - BigO표기법 문제설명 - Java (0) | 2023.07.12 |
백준 24264 -Java (0) | 2023.07.09 |
백준 10757 - Java (0) | 2023.07.08 |