알고리즘/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와 규칙성만 발견한다면 쉽게 풀 수 있는 문제이다. 코드가 한줄로 나올 수 있다!