본문 바로가기

Algorithm

백준 10827 a^b Java

BigInteger는 몇 번 써 봤지만 BigDecimal은 한 번도 안 써봐서 몰랐다가

그 존재를 알게해준 문제이다.

 

처음엔 double로 삽질하다가 BigDouble이 있을까 해서 쳐봤는데, 없었다.

덕분에 더 삽질을 했었다.. 아무튼 BigInteger같이 큰 수를 표현해주는 객체가

BigDecimal이라고 소수에도 있었다.

 

사용법은 BigInteger랑 비슷한데

다른 점이 있다.

 

소수를 표현하고 그것을 출력할 때 방식인데.

이 문제도 BigDecimal에 담아서 제곱한 값을 그대로 출력하면

어떠한 값에서는 지수형태로 출력을 하기 때문에 틀리게 된다.

 

예를 들어 예제 입력 2의

0.1 10을 입력하면 

1E-10을 출력하면서 틀리게 된다.

 

BigDecimal의 표현방식엔 3가지의 메소드가 있다.

 

toString() -> 전달받은 값을 그대로 반환

toPlainString() -> 지수 표현 없이 반환 

toEngineeringString() -> 지수 표현이 있다면 지수로 반환

 

BigDecimal에 대해 알게 해 준 문제였다.

 

1
2
3
4
5
6
7
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        BigDecimal a= sc.nextBigDecimal();
        int b = sc.nextInt();
        System.out.println(a.pow(b).toPlainString());
    }