새소식

Algorithm/BOJ

(JAVA) 백준 1676번 : 팩토리얼 0의 개수

  • -
728x90

https://www.acmicpc.net/problem/1676

 

1676번: 팩토리얼 0의 개수

N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오.

www.acmicpc.net

이 문제는 기본적으로 수의 범위가 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);
	}
}

 

참고

https://st-lab.tistory.com/165

728x90
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.