Algorithm

[Java] 백준 2420번

로춘남 2021. 11. 4. 18:16
728x90


입출력 문제. 처음에 int로 적용했을때, 값은 올바르게 나왔는데, 채점은 틀리게 나왔다. 응? 뭐지? 라고 하다가

N과 M의 범위가 int의 범위를 넘어서는거였음. 이럴땐, BigInteger를 써줘야 한다.

 

int 범위 : –2,147,483,648 ~ 2,147,483,647

BigInteger의 범위 : Immutable arbitrary-precision integers(불변한 임의의 정밀한 정수) -Java API -

즉, 무한대라는 말씀!

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigInteger;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str = br.readLine();
        StringTokenizer st = new StringTokenizer(str, " ");

        BigInteger N = new BigInteger(st.nextToken());
        BigInteger M = new BigInteger(st.nextToken());

        BigInteger R = N.subtract(M);

        System.out.println(R.abs());


    }
}

 

int형일때는 System.out.println(N-M)가 가능하지만 BigInteger에서는 불가하다. 그래서 함수를 이용하여 subtract()을 이용하여 계산해줬음.

BigInteger R = N.subtract(M)이 곧 N-M을 의미한다.

그리고 절대값을 요구하기떄문에 절대값으로 나타낼 수 있는 abs() 함수를 이용하여 문제를 풀어주었다.

728x90

'Algorithm' 카테고리의 다른 글

[Java] 백준 5543번 상근날드  (0) 2021.12.23
[Java] 백준 14928번 큰 수(BIG)  (2) 2021.12.02
[Java] 백준 1712번 손익분기점  (0) 2021.11.03
[Java] 백준 1297번 TV 크기  (0) 2021.11.03
[Java] 백준 5554번 심부름 가는 길  (0) 2021.11.02