알고리즘 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