알고리즘 BOJ
백준 1676 파이썬 | 팩토리얼 0의 개수
콘2조아
2021. 8. 30. 15:31
코드
from sys import stdin
import math
input = stdin.readline
N = int(input())
fac = math.factorial(N)
lst = list(str(fac)).reverse()
cnt = 0
for i in range(len(lst)):
if lst[i] != "0":
break
else:
cnt += 1
print(cnt)
설명
N! 로 나오는 값에서 뒤에서부터 몇 개의 0이 연속되냐는 문제이다.
예시 입력을 보면 N = 10 일때, 10! = 3628800 이니 뒤에서부터 2 개의 0이 연속된다. 그래서 이 경우에 올바른 출력은 2가 된다.
팩토리얼 값을 찾고 그 값을 리스트로 바꾸어 순서를 뒤집은 다음 0이 몇 개 나오는지 세는 방법으로 코드를 짰다.
팩토리얼 값을 찾는 것은 math 라이브러리를 이용하여 구해주었다. 그 다음에 정수형인 팩토리얼 값을 문자열로 바꾸어주고 그 문자열을 리스트로 바꾼다음 reverse 함수를 붙여 역순으로 만들었다. 마지막으로 반복문을 돌며 값이 0이면 cnt 변수로 수를 하나하나 센다. 0이 아닌 경우에는 바로 반복문을 탈출하게 하였다.
메모리: 31312KB
시간: 84ms
문제
https://www.acmicpc.net/problem/1676
1676번: 팩토리얼 0의 개수
N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오.
www.acmicpc.net