본문 바로가기

백준 문제 풀이 및 피드백

2023.01.17 팩토리얼 0의 개수[파이썬]

https://www.acmicpc.net/problem/1676

 

1676번: 팩토리얼 0의 개수

N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오.

www.acmicpc.net

 

import sys

N = int(sys.stdin.readline())

def zero_count(fac, counters = 0,sq = 2):
    counters += len(fac)
    if len(fac) < 5:
        return counters
    fac = list(filter(lambda x: x%(5**sq) == 0, fac))
    return zero_count(fac,counters,sq +1)


print(zero_count(list(range(0,N+1,5))[1:]))

쉽게만 풀라고 하다가 잘못 생각해서 조금 걸린 문제 소인수 분해를 했을 때 5의 개수가 0의 개수라는 거를 이용한 풀이이다. (어떤 수에서도 5의 개수가 2의 개수보다 적다)  마지막에 0이 들어오면 1이 출력되는 걸 해줬는데 96퍼 쯤에서 틀려서 빼고 했더니 바로 됐다. 재귀함수를 이용해서  풀었다.