발전/JAVA
[java] BigInteger (java.math) - 백준 1271번, 2338번
babepro
2021. 9. 11. 14:25
백준 1271번 정답
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
BigInteger n = scanner.nextBigInteger();
BigInteger m = scanner.nextBigInteger();
scanner.close();
System.out.println(n.divide(m));
System.out.println(n.remainder(m));
}
}
|
cs |
백준 2338번 정답
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
BigInteger bigA, bigB;
bigA = scanner.nextBigInteger();
bigB = scanner.nextBigInteger();
System.out.println(bigA.add(bigB));
System.out.println(bigA.subtract(bigB));
System.out.println(bigA.multiply(bigB));
scanner.close();
}
}
|
cs |
1271번 후기
브론즈 5 문제인데 정답률이 30 % 를 조금 웃돈다.
난 맞을줄 알고 호기롭게 도전했지만 런타임에러...
오타인줄 알고 꼼꼼히 읽고 다시 도전했는데 또 런타임 에러..
문제를 다시 읽어보니까
이런 주옥같은 범위가 눈에 띄었다.
자바 기본 자료형의 범위
double이 10의 308승,, 10의 1000승은 택도 없다.
그래서 찾아낸 녀석이 java.math.BigInteger
BigInteger big = new BigInteger(7687687562398475987349);
이런식으로 써도 되고
BigInteger n = scanner.nextBigInteger();
이렇게 입력받아서 써도 된다.
사칙연산이 일반 연산자로는 안되고 메소드를 이용해야 한다. (비교 할 때도 == 사용 불가, .equals 사용해야한다. )
(사칙연산 말고도 절댓값, 루트 등 많은 기능 제공한다. )
a + b : a.add(b);
a - b : a.subtract(b);
a * b : a.multiply(b);
a / b : a.divide(b);
a % b : a.remainder(b);
쓸 일이 있을진 모르겠지만 새로운걸 알았다. ㅎㅎ
필요하니까 만들었겠지
2338번도 똑같은 맥락이라 추가함