알고리즘/BaekJoon 알고리즘
[백준 알고리즘] Q15894 수학은 체육과목입니다. - BigInteger
lkh's
2018. 12. 8. 19:12
1. Java 구현
package Q15894; import java.math.BigInteger; import java.util.Scanner; public class Main { public static void main(String[] args) { System.out.println(new BigInteger(new Scanner(System.in).nextLine()).multiply(new BigInteger("4")) + "\n"); } }
2. 코드설명
이 문제는 규칙성 발견과 큰 출력값을 표현할 수 있는 것이 가장 중요한 요소이다. 우선 규칙성을 말하자면 "입력값 * 4 == 결과값" 이다.
1 -> 4 이고, 2 -> 8 이고, 3 -> 12 이고, .... 이다. 왜인지는 직접 그림을 그리다보면 알 수 있을 것이다.
다음으로 입력값 10^9 * 4 를 출력하기 위해서는 int, long으로는 불가능 했다. 자바에서 큰 정수를 표현하기 위해서는 BigInteger를 써야한다.
하지만 BigInteger의 연산은 Primitive Type의 연산보다 속도가 느리다. 그렇기 때문에 쓰는 것은 좋아하지 않는다.
그러나, 이 문제에서는 BigInteger 연산이 한번뿐이기 때문에 써도 무방한것 같다.
3. Pain Point
BigInteger와 규칙성만 발견한다면 쉽게 풀 수 있는 문제이다. 코드가 한줄로 나올 수 있다!