본문 바로가기
Programming/Algorithm

[백준] 10757번 : 큰수 A + B (Java)

by 안녕주 2021. 8. 2.

문제

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 A와 B가 주어진다. (0 < A,B < 1010000)

출력

첫째 줄에 A+B를 출력한다.


코드

import java.util.Scanner;
import java.math.BigInteger;

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);

        BigInteger a = sc.nextBigInteger();
        BigInteger b = sc.nextBigInteger();

        System.out.println(a.add(b));
        
    }
}

풀이

그냥 long으로 선언해서 더하는 문제인줄 알았는데, 계속 에러가 나기에 구글링을 해보니 이상한 내장함수를 써야하는거 같다.

 

BigInteger 는 문자열 형태로 이루어져 있어 숫자의 범위가 무한하기에 어떠한 숫자이든지 담을 수 있다.

  • BigInteger은 문자열이기에 사칙연산이 안된다. 따라서 BigInteger 클래스 내부에 있는 메서드를 사용해야한다.
BigInteger bigNumber1 = new BigInteger("100000");
BigInteger bigNumber2 = new BigInteger("10000");
		
System.out.println("덧셈(+) :" +bigNumber1.add(bigNumber2));
System.out.println("뺄셈(-) :" +bigNumber1.subtract(bigNumber2));
System.out.println("곱셈(*) :" +bigNumber1.multiply(bigNumber2));
System.out.println("나눗셈(/) :" +bigNumber1.divide(bigNumber2));
System.out.println("나머지(%) :" +bigNumber1.remainder(bigNumber2));
  • BigInteger 클래스를 기본 타입으로 형 변환을 해야 할 경우에는 아래와 같이 하면 된다.
BigInteger bigNumber = BigInteger.valueOf(100000); //int -> BigIntger

int int_bigNum = bigNumber.intValue(); //BigIntger -> int
long long_bigNum = bigNumber.longValue(); //BigIntger -> long
float float_bigNum = bigNumber.floatValue(); //BigIntger -> float
double double_bigNum = bigNumber.doubleValue(); //BigIntger -> double
String String_bigNum = bigNumber.toString(); //BigIntger -> String
  • BigInteger의 값을 비교할 때는 compareTo라는 메서드를 사용한다.
BigInteger bigNumber1 = new BigInteger("100000");
BigInteger bigNumber2 = new BigInteger("1000000");
		
//두 수 비교 compareTo 맞으면 0   틀리면 -1
int compare = bigNumber1.compareTo(bigNumber2);
System.out.println(compare);

 

 

큰 실수 다루기 BigDemical도 있는거 같다.

 

또는 더하기를 직접 구현하는 방법도 있다. 아래의 사이트를 참고해서 공부해야지... 나즁에.... (좀따 저녁에 할 예정)

https://st-lab.tistory.com/199

 

[백준] 10757번 : 큰 수 A+B - JAVA [자바]

www.acmicpc.net/problem/10757 10757번: 큰 수 A+B 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 문제 Java로 풀 경우 매우 쉽게 풀 수 있는 문제다. 알고리즘 [접근..

st-lab.tistory.com

 

댓글