본문 바로가기
Backend/알고리즘

[백준] 3474번 - 교수가 된 현우

by 박상윤 2024. 5. 12.

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

 

 

0의 갯수는 곧 10의 갯수

10은 곧 2와 5의 곱이다.

주어진 팩토리얼에서 2의 갯수와 5의 갯수중 최솟값을 찾아서 출력해주면 된다.

강의로 아이디어를 얻고 풀었다.

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

// 수학, 정수론
public class Main {

    public static int T;

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        T = Integer.parseInt(br.readLine());

        for (int i = 0; i < T; i++) {
            int value = Integer.parseInt(br.readLine());
            System.out.println(findZero(value));
        }
    }

    public static int findZero(int value) {
        int two = 0;
        int five = 0;

        for (int i = 2; i <= value; i *= 2) { // 2의 갯수 찾기
            two += value / i;
        }

        for (int i = 5; i <= value; i *= 5) { // 5의 갯수 찾기
            five += value / i;
        }

        return Math.min(two, five);
    }
}