Study/Algorithms

백준 1676: 팩토리얼 0의 개수

LireEruel 2024. 6. 10. 09:07

문제 링크

문제

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

입력

첫째 줄에 N이 주어진다. (0 ≤ N ≤ 500)

출력

첫째 줄에 구한 0의 개수를 출력한다.


아이디어

재귀함수로 팩토리얼을 계산하여 구현했다.

Java나 C++같은 경우에는 longlong으로 타입 선언을 한다던지.. 처리가 필요했겠지만 파이썬이라서 그냥 했다.


제출 코드


fact = [1, 1, 2]


def get_fact(value):
    if len(fact) > value:
        return fact[value]
    else:
        fact.append(get_fact(value - 1) * value)
        return fact[value]


N = int(input())
n_fact = get_fact(N)
result = 0

while n_fact > 0:
    if n_fact % 10 == 0:
        result += 1
        n_fact //= 10
    else:
        break
print(result)