package Algoritm.day9;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class no1676 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
long targetNum = 1;
for(int i=1; i<=n; i++){
targetNum *= i;
}
System.out.println(targetNum);
String target = String.valueOf(targetNum);
long zeroCount = 0;
for(int i=target.length()-1; i>=0; i--){
if(target.charAt(i) == '0'){
zeroCount++;
}else{
System.out.println(zeroCount);
return;
}
}
}
}
팩토리얼 값을 String으로 저장해서, charAt()메소드를 이용하여 뒤에서부터 0의 개수를 카운트하려고 했다. > 작은 숫자의 경우는 오류 없이 계산이 가능하지만, 500!과 같은 팩토리얼 넘버는 '정수형'으로 받지를 못하기 때문에 애초에 targetNum에 값이 생성되지 않아서 올바른 답을 구할 수 없다.
package Algoritm.day9;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class no1676 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int cnt2 = 0;
int cnt5 = 0;
for (int i = 1; i <= n; i++) {
int target = i;
while (target % 2 == 0) {
cnt2++;
target = target / 2;
}
while (target % 5 == 0) {
cnt5++;
target = target / 5;
}
}
System.out.println(Math.min(cnt2, cnt5));
}
}