프로그래머스 - 두 수의 합

박상혁·2023년 11월 15일

<문제>


<풀이>

import java.math.BigInteger;

class Solution {
    public String solution(String a, String b) {
        BigInteger num1 = new BigInteger(a); 
        BigInteger num2 = new BigInteger(b); 
        BigInteger sum = num1.add(num2);
        return sum.toString();
    }
}

<노트>

입출력 예에서 '18446744073709551615', '287346502836570928366'intlong의 범위를 넘어서므로 NumberFormatException이 발생한다.

숫자 자료형 별 범위

  • int : -2,147,483,648 ~ 2,147,483,647
  • long : -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
  • float
    음수 범위 : -3.4 × 10^38 에서 -1.4 × 10^-45
    양수 범위 : 1.4 × 10^-45 에서 3.4 × 10^38
  • double
    음수 범위 : -1.7 × 10^308 에서 -4.9 × 10^-324
    양수 범위 : 4.9 × 10^-324 에서 1.7 × 10^308

doublefloat은 범위는 넓지만 위와 같이 큰 수를 표현하기에 정확성이 떨어지므로 BigInteger나 BigDecimal을 사용해야 함.

BigInteger 클래스를 사용하기 위해선 아래 코드를 입력하여 불러와야 한다.
import java.math.BigInteger;



BigInteger 관련 메서드


.add(BigInteger val) : 현재 BigInteger 값에 주어진 BigInteger 값을 더한 결과를 반환

.subtract(BigInteger val): 현재 BigInteger 값에서 주어진 BigInteger 값을 뺀 결과를 반환

.multiply(BigInteger val): 현재 BigInteger 값에 주어진 BigInteger 값을 곱한 결과를 반환

.divide(BigInteger val): 현재 BigInteger 값에서 주어진 BigInteger 값을 나눈 몫을 반환

.remainder(BigInteger val): 현재 BigInteger 값을 주어진 BigInteger 값으로 나눈 나머지를 반환

.pow(int exponent): 현재 BigInteger 값을 제곱한 결과를 반환

.compareTo(BigInteger val): 현재 BigInteger 값과 주어진 BigInteger 값을 비교하여 크면 1, 같으면 0, 작으면 -1을 반환

.equals(Object obj): 현재 BigInteger 값과 주어진 객체가 같은지 여부를 확인

profile
멋진 개발자가 되겠어요 :-)

0개의 댓글