728x90
728x90
22.03.12 SK ICT 코테를 보고 충격에 빠졌다.. 4문제 중 2솔.. 2번과 4번만 맞추고 떨어진것 같다.. 솔직히 3번은 쉽게 풀수 있겠다고 생각하고 도전했던 DP문제인데, 값이 너무 커질수 밖에 없다고 생각해서 long을 써서 해결하려고 하였는데 결국 실패했다. 근데 1번은 왜 나중에 풀려고 아껴둔거지?(아직도 자신에게 의문)
코테가 끝나고, Java의 자료형에 대한 공부를 하다가 BigInteger를 알게 되었다..(좀 더 빨리 알았으면 3번을 금방 풀었을텐데..)
BigInteger Class의 범위는?
Big Integer의 클래스의 범위는 무한대다. 예전에 자료구조 수업을 처음 들을 때 첫 과제가 BigInt라는 자료형을 만들어보는 문제였는데, 그게 사실 Java에서 지원해주는 api인지 몰랐다. 원리는 String형으로 어떻게 처리를 해주기 때문에 무한이 될 수 있다. 하지만, 문자열에 대한 연산은 속도가 느릴 수 있기 때문에 왠만하면 사용을 안하는 것을 권장한다.
BigInteger의 생성과 변환
BigInteger bigInt = new BigInteger("100");
int bigIntToInteger = bigInt.intValue();
long bigIntToLong = bigInt.longValue();
float bigIntToFloat = bigInt.floatValue();
double bigIntToDouble = bigInt.doubleValue();
String bigIntToString = bigInt.toString();
BigInteger의 생성자에 문자열을 넣어주면 된다. 문자열로 숫자를 이렇게 넣어주면 생성할 수 있다.
그리고 사용한 BigInteger는 정수형, 실수형 그리고 문자열로 변환이 가능하다.
BigInteger의 연산
BigInteger bigIntA = new BigInteger("12");
BigInteger bigIntB = new BigInteger("10");
bigIntA.add(bigIntB); // 덧셈
bigIntA.subtract(bigIntB); // 뺄셈
bigIntA.multiply(bigIntB); // 곱셈
bigIntA.divide(bigIntB); // 나눗셈
bigIntA.remainder(bigIntB); // 나눗셈
사칙연산과 mod연산까지 수행할 수 있다. 사용하는 방법은 위와 같으며 메소드의 결과값이 연산의 결과가 된다.
728x90
728x90
'Language > Java' 카테고리의 다른 글
Java8의 Annotation (0) | 2022.03.08 |
---|---|
CompletableFuture로 비동기 프로그래밍 공부하기! (0) | 2022.03.04 |
자바 쓰레드 Callable과 Future (0) | 2022.03.03 |
자바 Excuter로 쓰레드 처리하기 (0) | 2022.03.03 |
자바 쓰레드의 기초 (0) | 2022.03.03 |