[백준] #1676 - 팩토리얼 0의 개수

짱수·2023년 4월 26일
0

알고리즘 문제풀이

목록 보기
21/26
post-custom-banner

🔒 문제 설명

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

입력


첫째 줄에 N이 주어진다. (0 ≤ N ≤ 500)

출력


첫째 줄에 구한 0의 개수를 출력한다.

🔑 해결 아이디어

N!에서 0의 개수는 곧, N!에 곱해지는 10의 개수와 관련이 있습니다.
1부터 N까지의 수를 탐색하며 해당 수의 소수 중 2의 개수와 5의 개수를 카운트 합니다.
카운트가 끝난 이후 두 수중 더 적은 수의 개수가 곧 10의 개수와 같으므로 문제를 쉽게 해결할 수 있습니다.

💻 소스코드

import java.util.Scanner;

public class BJ1676 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int number = sc.nextInt();
        int num2 = 0;
        int num5 = 0;
        int answer;
        for(int i = 1; i<=number; i++){
            int count2 = 0;
            int mult = 2;
            while(i % mult == 0){
                mult *= 2;
                count2++;
            }
            num2 += count2;

            int count5 = 0;
            mult = 5;
            while(i % mult == 0) {
                mult *= 5;
                count5++;
            }
            num5 += count5;
        }

        if(num2 > num5)
            answer = num5;
        else
            answer = num2;

        System.out.println(answer);
    }
}
profile
Zangsu
post-custom-banner

0개의 댓글