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퍼 쯤에서 틀려서 빼고 했더니 바로 됐다. 재귀함수를 이용해서 풀었다.
'백준 문제 풀이 및 피드백' 카테고리의 다른 글
2023.01.18 피보나치 함수 백준[파이썬] (0) | 2023.01.18 |
---|---|
2023.01.17 최대 힙 백준 [파이썬] (0) | 2023.01.17 |
2023.01.17 1로 만들기 백준 (0) | 2023.01.17 |
2023.01.17 유기농 배추 백준 (2) | 2023.01.17 |
2023.01.16 백준 DFS와 BFS (0) | 2023.01.16 |