-
백준 1676 파이썬 | 팩토리얼 0의 개수알고리즘 BOJ 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
'알고리즘 BOJ' 카테고리의 다른 글
백준 17219 파이썬 | 비밀번호 찾기 (0) 2021.08.30 백준 1764 파이썬 | 듣보잡 (0) 2021.08.30 백준 1620 파이썬 | 나는야 포켓몬 마스터 이다솜 (0) 2021.08.29 백준 17626 파이선 | Four squares (0) 2021.08.29 백준 골드5 달성 | 파이썬 python (0) 2021.08.23