블로그 이전, 2022. 12. 27. 17:28 에 작성했던 글입니다.

1.문제 의도
10진수로 1000자리를 넘지 않으며 => 즉 1뒤에 999개의 0이 더 붙을 수 있다는 말이므로 굉장히 큰 수다. int형, long형으로는 해결 안 된다. int형, long형은 정수 표현 범위를 넘어서게 되면 0이나 의도하지 않았던 수로 출력된다.
=>BigInteger 사용해야함
2.BigInteger란?
BigInteger는 무한의 정수가 들어갈 가능성이 있다면 활용하기 좋은 클래스다.
BigInteger는 문자열로 되어있다. BigInteger를 초기화하기 위해서는 문자열을 인자 값으로 넘겨주어야 한다.
BigInteger는 메모리크기가 최소 70Byte부터 시작하기 때문에 굳이 필요하지 않으면 다른 타입을 사용하는 것이 좋다.
| 타입 | 범위 | 메모리 크기(64bit 기준) | 기본/참조형 | 저장된 위치 |
| int | -2,147,483,648 ~ 2,147,483,647 | 4Byte | 기본형 | Stack |
| long | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 | 8Byte | 기본형 | Stack |
| BigInteger | 무한 (Infinity) | Minimum 70 Byte | 참조형 | Heap |
3.BigInteger를 사용해서 문제 푸는 방법
Scanner은 nextBigInteger를 지원한다.
BigInteger은 문자열이기때문에 +, -, *, /, +=와 같은 연사자를 지원하지 않는다.
BigInteger 클래스 내부에 있는 메서드를 사용해야한다.
나의 풀이
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
BigInteger A = scan.nextBigInteger();
BigInteger B = scan.nextBigInteger();
System.out.println(A.add(B)); //BigInteger 클래스에 있는 메서드 사용
System.out.println(A.subtract(B));
System.out.println(A.multiply(B));
}
}
개발 초보입니다. 틀린 건 댓글로 알려주시면 정말 감사하겠습니다.
'알고리즘 리뷰' 카테고리의 다른 글
| 백준 JAVA 3009 네 번째 점 리뷰 (0) | 2023.08.29 |
|---|---|
| 백준 JAVA 11943 파일 옮기기 리뷰 (0) | 2023.08.29 |
| JAVA 백준 15552 빠른 A+B 리뷰 (0) | 2023.08.29 |
| JAVA 백준 10809 알파벳 찾기 리뷰 (0) | 2023.08.29 |
| JAVA 백준 11654 리뷰 (0) | 2023.08.29 |