https://www.acmicpc.net/problem/10824
문제 분석
입력 받은 수를 문자열처럼 붙여야 하니까 String 형태로 입력받아준다.
문자열을 붙인 다음, 주의할 점은 a,b,c,d의 크기를 봐야 한다.
1 ≤ A, B, C, D ≤ 1,000,000
만약, a와 b가 1,000,000이라면, 두 수를 붙였을 때
10,000,001,000,000이 되므로 int의 범위를 넘어서게 된다. 따라서 Long으로 형 변환을 해야 한다.
소스 코드 (⭕)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
String a = st.nextToken();
String b = st.nextToken();
String c = st.nextToken();
String d = st.nextToken();
String ab = a + b;
String cd = c + d;
long re1 = Long.parseLong(ab);
long re2 = Long.parseLong(cd);
System.out.println(re1 + re2);
}
}
코드 분석
1. String으로 입력 받은 ab와 cd를 +연산으로 문자열 붙이기를 해준다.
2. Long.parseLong 함수로 String -> Long으로 형 변환을 해주고 합을 출력한다.
end
아무 생각 없이 int로 형 변환을 했는데 "런타임 에러 (NumberFormat)"가 떴다.
뭐가 문제지 고민하다가 범위를 보니 역시나 int의 범위 초과 문제였다.
알고리즘 문제를 풀 때는 꼭 먼저 범위랑 시간제한을 확인하는 습관을 들이자.
'코딩테스트 & 문제 풀이' 카테고리의 다른 글
[Java]백준_1919 : 애너그램 만들기 (0) | 2025.04.05 |
---|---|
[Java]백준_10953 : A+B - 6 (0) | 2025.04.02 |
[Java]백준_2720 : 세탁소 사장 동혁 (0) | 2025.03.31 |
[Java]백준_15439 : 베라의 패션 (0) | 2025.03.31 |
[Java]백준_10798 : 세로읽기 (1) | 2025.03.26 |