문제 링크
https://www.acmicpc.net/problem/1676
최종 코드(정답)
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int count = 0;
while (N >= 5) {
count += N / 5;
N /= 5;
}
System.out.println(count);
}
}
처음에 든 생각은 문제 이름 보고 팩토리얼 메서드를 떠올렸다.
다만 0의 개수라고 하니 의아했다. 결과값에서 0의 개수를 떠오면 되는 건가?
string 문자열에서 0을 찾아서 count를 올리려고도 생각을 해봤다.
근데 위 방법의 문제점은 입력값의 범위에 있다. 입력값이 최대 500!이어서 BigInteger를 써야 하고
값도 매우 커서 저 방법으로는 어림도 없을 것이다;;
그래서 % 5 계산했을 때 나누어 떨어지면 되지 않을까 생각을 해서 아래와 같이 작성했다.
오답
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int count = 0;
while (N > 0) {
if (N % 5 == 0) {
count++;
}
N--;
}
System.out.println("count = " + count);
}
근데 틀렸다. 왜 틀렸나 생각해 봤다.
5를 곱하면 0이 1개 생기는데 25 * 4 등의 경우 0이 2개가 생기더라. count++을 하는 것이 아니구나.
힘들다.