알고리즘(algo)/백준
[백준] 1676번 - 팩토리얼 0의 개수
dDong2
2023. 3. 18. 22:08
참고: https://www.acmicpc.net/problem/1676
✔️ 문제
문제는 다음과 같다.
✔️ 풀이
팩토리얼을 math 라이브러리를 활용하여 구한 다음
문자열에 0이 나오면 break하고 개수를 반환할 수 있지만,
from math import factorial as f
n = int(input())
cnt = 0
for i in str(f(n))[::-1]:
if i != '0': break
cnt += 1
print(cnt)
수학적으로 계산하게 되면 n을 5로 나눴을 때 떨어지는
몫의 개수를 더한 값이 0의 개수가 될 수 있다.
예를 들면 10!은 3,628,800 수를 가지고 있고,
0이 아닌 수 8이 나오기까지 0의 개수 2개를 가지고 있는 것을
10을 5로 나눈 몫 2개와 같다고 볼 수 있다.
n, cnt = int(input()), 0
while n != 0:
n //= 5
cnt += n
print(cnt)
시간적으로는 아무래도 여러 방식이 아닌
수학적 방식의 접근이 4ms 더 빨랐다.
화이팅 💪