이 문제는 기본적으로 수의 범위가 1 - 500 의 팩토리얼을 구해야 하다 보니 팩토리얼을 구해 계산하기 보다는 어떠한 규칙이 있는 지 확인을 먼저 해보았다.
직접 팩토리얼을 계산하면서 진행하다가 보니 0이 늘어나는 경우의 수는 팩토리얼을 진행해야 하는 수의 소인수 분해를 했을 때 2 X 5 의 경우가 N개 있을 때마다 0의 자릿수가 N개임을 확인할 수 있었다.
모든 수의 경우에 2의 제곱 수가 5의 제곱 수보다 많음을 확인하여 해당 수의 5의 제곱에 대한 누적 수를 구하는 방식으로 풀이를 진행했다.
풀이는 아래와 같다.
소스코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main
{
public static void main(String[] args) throws IOException
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int num = Integer.parseInt(br.readLine());
int count = 0;
// 5의 갯수의 누적 합을 구하는 과정
while (num >= 5)
{
count += num / 5;
num /= 5;
}
System.out.println(count);
}
}