https://www.acmicpc.net/problem/1676
[문제]
N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오.
[입력 조건]
첫째 줄에 N이 주어진다. (0 ≤ N ≤ 500)
[코드]
import java.util.*;
public class BaekJoon_1676 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int count=0;
/*
* n! 결과는 n이 5일때 부터 끝자리에 0이 생긴다.
* 5 단위로 0이 한 개씩 추가된다.
* 이때 5의 개수는 누적합으로 구해줘야 한다.
*/
while(n>=5) {
count+=n/5;
n/=5;
}
System.out.println(count);
}
}
[고찰]
이번 문제는 n을 늘려가며 값을 적다보면 규칙이 보인다. n이 5일때 0이 처음 나타나며 이후 n이 5씩 늘어날 때 마다 0이 1개씩 추가된다. 단, 5의 개수는 누적합으로 구해줘야 한다. 이러한 규칙만 알아낸다면 쉽게 해결할 수 있는 문제였다.
'백준' 카테고리의 다른 글
[백준_9375번] 패션왕 신해빈 (0) | 2021.07.01 |
---|---|
[백준_1912번] 연속합 (0) | 2021.07.01 |
[백준_1010번] 다리 놓기 (0) | 2021.06.29 |
[백준_11050번] 이항 계수1 (0) | 2021.06.29 |
[백준_9251번] LCS (0) | 2021.06.29 |