티스토리 뷰
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와 규칙성만 발견한다면 쉽게 풀 수 있는 문제이다. 코드가 한줄로 나올 수 있다!
'알고리즘 > BaekJoon 알고리즘' 카테고리의 다른 글
[백준 알고리즘] Q5052 전화번호 목록 (0) | 2018.12.20 |
---|---|
[백준 알고리즘] Q11286 절댓값 힙 (우선순위큐) (0) | 2018.12.16 |
[백준 알고리즘] Q11441 합 구하기 - Out Of Memory 예외 해결 (0) | 2018.12.01 |
[백준 알고리즘] Q8741 이진수합 (규칙성 찾기) (0) | 2018.11.29 |
[백준 알고리즘] Q11651 좌표정렬하기 - 2 (Comparable, CompareTo, 다중 정렬) (0) | 2018.11.27 |