728x90
[파이썬] 백준 1676 : 팩토리얼 0의 개수
https://www.acmicpc.net/problem/1676
- 실버 4
- 수학
접근
입력받은 값이 N일때, N!을 구하고 맨 마지막 수가 0일 때만 특정 변수의 값이 1씩 오르도록 하고 마지막에 그 변수의 값을 출력한다.
코드1
import sys, math
N = int(sys.stdin.readline())
f = math.factorial(N)
cnt = 0
while True:
if f % 10 == 0:
cnt += 1
f = f // 10
else:
print(cnt)
break
math.factorial을 이용하는 것보다
f = 1
for i in range(1, N+1):
f *= i
이 방법으로 팩토리얼 값을 구하는게 약간 더 빨랐다.
10을 나눈 나머지가 0이면 cnt에 1을 증가시키고 f를 10으로 나눈 값을 다시 f에 재할당한다.
코드 2
from math import factorial
n = int(input())
cnt = 0
for x in str(factorial(n))[::-1]:
if x != '0':
break
cnt += 1
print(cnt)
팩토리얼 값을 문자형으로 형변환하고, 반복문을 거꾸로 돌리면서 0일경우 탈출하도록 한다.
728x90
'알고리즘 문제 풀이' 카테고리의 다른 글
[파이썬] 백준 3053 : 택시 기하학 (0) | 2022.03.05 |
---|---|
[파이썬] 백준 9375 : 패션왕 신해빈 (0) | 2022.03.05 |
[파이썬] 백준 1010 : 다리 놓기 (0) | 2022.03.04 |
[파이썬] 백준 1037 : 약수 (0) | 2022.03.03 |
[파이썬] 백준 1002 : 터렛 (0) | 2022.03.03 |