<jupyter_start><jupyter_text>2020년 2월 10일 월요일 백준 2004번: 조합 0의 개수 문제 : https://www.acmicpc.net/problem/2004 블로그 : https://somjang.tistory.com/entry/BaeKJoon-2004%EB%B2%88-%EC%A1%B0%ED%95%A9-0%EC%9D%98-%EA%B0%9C%EC%88%98-Python  첫번째 시도 기존 팩토리얼 함수를 활용하였습니다.조합을 팩토리얼을 활용하여 구하고 그 값을 int -> str -> list로 변경가장 뒤에서부터 앞으로 탐색하며 0이 아닐때까지 count후 count한 값을 return합니다조합을 구할때 분모에 있는 팩토리얼에 의해 분자의 팩토리얼이 나누어지는 것을 활용하였습니다.<jupyter_code>def factorialNum(N):
    if N == 0 or N == 1:
        return 1
    else:
        fact = 1
        for i in range(1, N + 1):
            fact = fact * i
    return fact

def factorialTopNum(N, M):
    top = 1
    for i in range(N-M+1, N+1):
        top = top * i
    return top


N, M = map(int, input().split())

combination = int(factorialTopNum(N, M) / factorialNum(M))

print(combination)

comb_list = list(str(combination))

comb_list_len = len(comb_list)

count = 0

for i in range(len(comb_list)):
    if comb_list[comb_list_len-1-i] !='0':
        break
    elif comb_list[comb_list_len-1-i] == '0':
        count = count + 1
print(count)<jupyter_output>10 7
120
1<jupyter_text>0팩토리얼의 값이 1임을 유의해야합니다 ---  두번째 시도 m과 n으로 들어오는 숫자가 (0≤m≤n≤2,000,000,000, n!=0) 이므로 엄청나게 큰 숫자가 들어오게 되면 시간초과가 발생하는 것 같습니다.이문제는 조합을 구해서 답을 내는 것이아닌 조합 내의 0의 개수를 구하는 문제이므로이번에는 나눗셈은 지수의 차의 개념과각 팩토리얼 마다 0을 만들 수 있는 2와 5를 몇개 가지고 있는지 확인하여 그걸 활용해서 풀어보았습니다. M과 N을 입력받았을떄 M! 을 N!과 (M-N)!로 나눈 값이 조합입니다.그럼 여기서 0의 개수를 구하는 것은0의개수=M!가 가지고 있는 2의 개수 - N!이 가지고 있는 2의 개수 - (M-N)!이 가지고 있는 2의 개수/M!가 가지고 있는 5의 개수 - N!이 가지고 있는 5의 개수 - (M-N)!이 가지고 있는 5의 개수중에 작은 수<jupyter_code>def countNum(N, num):
    count = 0
    divNum = num
    while( N >= divNum):
        count = count + (N // divNum)
        divNum = divNum * num
    return count
        
M, N = map(int, input().split())

print(min(countNum(M, 5) - countNum(N, 5) - countNum(M-N, 5), countNum(M, 2) - countNum(N, 2) - countNum(M-N, 2)))<jupyter_output>25 12
2
{'fraction_non_alphanumeric': 0.13027426160337552, 'fraction_numerical': 0.05221518987341772, 'mean_word_length': 2.903292181069959, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 10, 'https://': 2, 'lorem ipsum': 0, 'www.': 1, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '2', 'dir': 'jupyter-structured-clean-dedup', 'id': '364597', 'license': 'MIT', 'n_tokens_mistral': 1212, 'n_tokens_neox': 1303, 'n_words': 250, 'path': 'DAY 001 ~ 100/DAY004_[BaekJoon] 2004번 조합 0의 개수 (Python).ipynb', 'repo_name': 'SOMJANG/CODINGTEST_PRACTICE', 'size': '1896'}