알고리즘 풀이/백준
[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);
}
}