문제
( n ) 의 끝자리 0의 개수를 출력하는 프로그램을 작성하시오.
( m )
풀이
팩토리얼의 0의개수를 구하는 문제의 풀이를 참고하여 풀었다.
위 문제에서는 2가 부족하지 않아서 5의 개수만 구해도 됐지만
조합의 경우에서는 2가 부족한 경우가 있었다.
그래서 2와 5의 개수를 각각 구한뒤 더 적은 것의 개수가 뒤에서 부터 0의 개수다.
<코드>
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
static StringBuilder sb = new StringBuilder();
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] num = br.readLine().split("\\s");
int n = Integer.parseInt(num[0]);
int m = Integer.parseInt(num[1]);
int k = n - m;
int countFive = 0;
countFive += CountNumber(n, 5);
countFive -= CountNumber(m, 5);
countFive -= CountNumber(k, 5);
int countTwo = 0;
countTwo += CountNumber(n, 2);
countTwo -= CountNumber(m, 2);
countTwo -= CountNumber(k, 2);
if(countFive == countTwo) {
sb.append(countFive);
}
else if(countFive > countTwo) {
sb.append(countTwo);
}
else
sb.append(countFive);
System.out.println(sb);
}
static int CountNumber(int n, int e) {
int count = 0;
while(n >= e) {
count += n /e;
n /= e;
}
return count;
}
}
'알고리즘 공부 > 정렬(Sort) | 분류' 카테고리의 다른 글
프로그래머스 정렬 Level 2 (가장 큰 수) (0) | 2021.04.10 |
---|---|
프로그래머스 정렬 Level 1 (K번째 수) (0) | 2021.04.10 |
백준 1676 (팩토리얼 0의 개수) (0) | 2021.01.05 |
백준 11653 (소인수 분해) (0) | 2021.01.03 |
백준 6588 (골드바흐의 추측) (0) | 2021.01.03 |