알고리즘 풀이/백준

[1676] 백준 - 팩토리얼 0의 개수(JAVA)

데롱디롱 2021. 8. 4. 15:51
728x90

문제가 이해가지 않아서 찾아봤던 문제다.ㅠㅠ

N!은 곱의 계산이 기 때문에, 
결국 0의 개수는 10을 몇 번 곱하는지를 세라는 것이였다.

 

- N!안에 존재하는 2*5(10)의 수를 세야 한다.

- 1 ~ N까지 for문을 돌면서, 그 안에 2와 5가 몇개 있는지 
  각각 while문을 돌면서 숫자를 세어 준다.

- two와 five중 작은 수를 선택한다.(최소 만들 수 있는 10의 수)

 

 

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();

		int two = 0;
		int five = 0;
		for (int i = 1; i <= N; i++) {
			int n = i;
			
			while (n % 2 == 0) {	// 2 개수 세기
				two++;
				n /= 2;
			}
			
			while (n % 5 == 0) {	// 5 개수 세기
				five++;
				n /= 5;
			}
		}
		
		// 2와 5로 만들 수 있는 10의 개수
		System.out.println(five < two ? five : two);
	}

}