새벽코딩

[백준] [10824] 네 수 본문

알고리즘

[백준] [10824] 네 수

J 코딩 2022. 11. 17. 23:45
반응형

문제

네 자연수 A, B, C, D가 주어진다. 이때, A와 B를 붙인 수와 C와 D를 붙인 수의 합을 구하는 프로그램을 작성하시오.

두 수 A와 B를 합치는 것은 A의 뒤에 B를 붙이는 것을 의미한다. 즉, 20과 30을 붙이면 2030이 된다.

입력

첫째 줄에 네 자연수 A, B, C, D가 주어진다. (1 ≤ A, B, C, D ≤ 1,000,000)

출력

A와 B를 붙인 수와 C와 D를 붙인 수의 합을 출력한다.

 

package algorithm;

import java.util.*;
import java.io.*;

public class 네수_10824 {

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
		String[] in = br.readLine().split(" ");
		String A = in[0];
		String B = in[1];
		String C = in[2];
		String D = in[3];
		System.out.println(Long.parseLong(A+B)+Long.parseLong(C+D));
	}
}

 

 

이 문제는 A, B, C, D를 각각 String으로 받아서 문자열(A, B) / (C, D)로 붙인 후 더해주면 되는 문제이다.

 

처음엔 Long.parsLong()을 사용하지 않고 Integer.parseInt()를 사용했더니 런타임에러가 났는데.. 생각해보니 숫자의 최대 범위가 1,000,000이었다. 

 

A = 1,000,000, B = 1,000,000 일때 두 문자열을 더해 정수형으로 변환하면

10000001000000 이라는 숫자가 된다. 

 

int형 정수의 범위는 -2의 31제곱 ~ (2의 31제곱 - 1)이며 이를 수로 환산하면 –2,147,483,648 ~ 2,147,483,647 이므로 해당 범위를 초과하게 되어 에러가 났었다.

 

int형이 아닌 Long형으로 변환하여 계산해서 성공하였다.

 

참고로, Long형의 범위는 -2의 63제곱 ~ (2의 63제곱 -1)이며 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807

약 900경이상의 범위를 가진다.

 

-새벽코딩-

반응형

'알고리즘' 카테고리의 다른 글

[백준] [1032] 명령 프롬프트  (0) 2022.11.20
[백준] [1212] 8진수 2진수  (0) 2022.11.18
[백준] [1764] 듣보잡  (0) 2022.11.16
[백준] [4949] 균형잡힌 세상  (0) 2022.11.15
[백준] [1259] 팰린드롬수  (0) 2022.11.14
Comments