문제
두 정수 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
'Programming > Algorithm' 카테고리의 다른 글
[백준] 2581번 : 소수 (Java) (0) | 2021.08.06 |
---|---|
[백준] 1978번 : 소수찾기 (Java) (0) | 2021.08.06 |
[백준] 2839번 : 설탕 배달 (Java) (0) | 2021.08.01 |
[백준] 2775번 : 부녀회장이 될테야 (Java) (0) | 2021.08.01 |
[백준] 10250번 : ACM 호텔 (Java) (0) | 2021.07.31 |
댓글