https://www.acmicpc.net/problem/1676
def Factorial(n): # 팩토리얼 구하기(재귀함수)
if n == 1:
return 1
else:
return n * Factorial(n-1)
num = Factorial(int(input())) # ex) 10 입력 시, num = 3628800
cnt = 0
for i in str(num)[::-1]: # ex) '0088263'에서 하나씩 꺼내어
if i == '0': # '0'이면 cnt 증가
cnt += 1
else: # '0'이 아니면 for문 탈출
break
print(cnt) # '0' 개수 출력
# 풀이 과정
1. 재귀함수로 Factorial을 구현한다.
2. 입력한 수(num)의 Factorial을 구한다.
3. 구한 Factorial을 뒤집힌 문자열로 만들고, '0'의 개수를 구한다.
RecursionError가 발생하였다.
따라서 Factorial 함수를 for문으로 수정해주었다.
def Factorial(n):
result = 1
for i in range(1, n+1):
result *= i
return result
num = Factorial(int(input()))
cnt = 0
for i in str(num)[::-1]:
if i == '0':
cnt += 1
else:
break
print(cnt)
Factorial 계산 시 math.factorial() > for문 > 재귀함수 순으로 빠르다고 하다.
n = int(input())
cnt = 0
while(n>1):
cnt += n // 5
n = n // 5
print(cnt)
감탄스럽다..