자바 백준 1676번
실버 5
https://www.acmicpc.net/problem/1676
문제 보기
분류: 수학
문제 풀기
뒤에서부터 처음 0이 아닌 숫자가 나올때까지 0의 개수를 구한다. 이때, 0의 개수는 주어진 수 N에서 5의 빈도수를 세어 구한다. N보다 작은 수들 중에서 5의 배수는 1개씩, 25의 배수는 2개씩, 125의 배수는 3개씩, ... 이런 식으로 각각의 배수들을 세어서 전체 0의 개수를 구한다.
N이하의 수 중 5의 배수만 관심이 있기에 for loop는 5부터 시작하여 i *= 5 스텝으로 증가한다.
코드 보기
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int count = countTrailingZeros(N);
System.out.println(count);
}
private static int countTrailingZeros(int n) {
int count = 0;
for (int i = 5; i <= n; i *= 5) {
count += n / i;
}
return count;
}
}
'공부하기 > 백준' 카테고리의 다른 글
[Java] 백준 풀기 16479 - 컵라면 측정하기 (0) | 2023.07.27 |
---|---|
[Java] 백준 풀기 2003 - 수들의 합 2 (0) | 2023.07.26 |
[Java] 백준 풀기 11653 - 소인수분해 (0) | 2023.07.24 |
[Java] 백준 풀기 2609 - 최대공약수와 최소공배수 (0) | 2023.07.23 |
[Java] 백준 풀기 1485 - 정사각형 (0) | 2023.07.22 |