본문 바로가기

PROGRAMMING/ALGORITHM

[백준] 1676번 팩토리얼 0의 개수 JAVA

팩토리얼 0의 개수

간단해 보이는데 자꾸 틀렷대서

범위를 보니 0보다 크고 500보다 작은 수

 

int -> long 순으로 실행 해봤지만 500은 커버가 안된다

그래서 검색해서 찾은 자료형 BigInteger

거의 무한대라고 보면 된다.

 

import java.io.*;
import java.math.BigInteger;
import java.util.*;

public class Main {
    public static final int MAX = 1000000;
    public static void main(String args[]) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        int inputNum = Integer.parseInt(reader.readLine());
        BigInteger answer = BigInteger.valueOf(1);
        // 팩토리얼 값 계산
        for(long i = 2; i <= inputNum; i++){
            answer = answer.multiply(BigInteger.valueOf(i));
        }
        String[] number = answer.toString().split("");
        int cnt = 0;
        // 0이 아닌 숫자가 나오면 break
        for(int i = number.length-1; i >= 0; i--){
            if(number[i].equals("0")){
                cnt++;
            }else break;
        }
        bw.append(Integer.toString(cnt));
        bw.write("\n");

        reader.close();
        bw.flush();
    }
}