알고리즘/백준
1676 팩토리얼 0의 개수
익명의 문과 개발자
2023. 6. 6. 22:37
728x90
728x90
숫자를 처음부터 주어진 최대값인 500까지 모두 곱해서는 절대 이 문제를 풀지 못한다 ㅎ
그래서 어떻게 해야 이 문제를 풀 수 있을까를 고민하던 찰나 0의 개수는 결국 2와 5가 필요한 10이 몇개 만들어지냐 라는 점을 발견 ! 그럼 0부터 N까지 중에 2와 5가 쌍으로 몇개나 있는지 확인을 해보았다.
import java.io.*;
public class Main {
public static void main (String [] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//N을 받아준다
int N = Integer.parseInt(br.readLine());
//2가 몇개인지 세보기 !
int cnt2 = 0;
//5가 몇개인지 세보기 !
int cnt5 = 0;
//1부터 N까지 반복하면서 ~
for(int i = 1; i<=N; i++) {
//이번 차례의 i를 temp에 저장해주고 !
int temp = i;
//while 문을 통해 temp를 2와 5로 될때까지 나눠준다.
while(true) {
if(temp%2 == 0) {
temp /= 2;
cnt2++;
}else if(temp%5 == 0){
temp /= 5;
cnt5++;
}else break;
}
}
//쌍을 이루는 2와 5들을 세줘야하기 때문에 최솟값으로 출력해주기 !
if(cnt2 >= cnt5) {
System.out.println(cnt5);
}else {
System.out.println(cnt2);
}
}
}
0의 개수를 구하는 방법에 대해 고민을 조금!? 은해야 하는 문제 ㅎ
728x90