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 |