코딩 기록 저장소

[백준/Java] 1676번: 팩토리얼 0의 개수 본문

백준/기타

[백준/Java] 1676번: 팩토리얼 0의 개수

KimNang 2023. 5. 23. 13:32

문제 정보

제목 : 팩토리얼 0의 개수

번호 : 1676번

사용 언어 : Java

문제 링크

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

 

1676번: 팩토리얼 0의 개수

N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오.

www.acmicpc.net

 

시간 제한 메모리 제한
2 초 128 MB

 

문제

N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오.

 

입력

첫째 줄에 N이 주어진다. (0 ≤ N ≤ 500)

 

출력

첫째 줄에 구한 0의 개수를 출력한다.

 

입출력 예제


나의 풀이

소인수분해를 통해 N!의 2 * 5 개수를 구해야하는 문제입니다. 연속된 수를 곱하는 거면 2는 5의 개수보다 많을 것이므로 N에서 5를 나누면서 count변수를 합해주었습니다. 반복이 끝나면 count를 출력합니다.

 

코드

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

public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		int N = Integer.parseInt(br.readLine());
		int count = 0;
		while(N>=5) {
			count += N / 5;
			N /=5;
		}
		
		bw.write(count+"\n");
		
		bw.flush();
		bw.close();
		br.close();
	}
}