Stay Hungry Stay Foolish

BOJ 코딩테스트/Silver

BOJ 1676번 : 팩토리얼 0의 개수 (Python/Silver 5)

dev스카이 2022. 11. 1. 20:24
 

1676번: 팩토리얼 0의 개수

N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오.

www.acmicpc.net

문제

N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오.

 

입력

첫째 줄에 N이 주어진다. (0 ≤ N ≤ 500)

 

출력

첫째 줄에 구한 0의 개수를 출력한다.


예제 입력

10

예제 출력

2

설명

정수 n의 팩토리얼이 주어졌을 때 끝에서부터 0의 개수를 구한다. 단, 0이 아닌 숫자가 나오면 종료한다.

 

풀이
  1. math 라이브러리를 사용하여 정수 n의 factorial()를 구한다.
  2. 문자열로 변환한 후, 0을 구분하기 위해 리스트에 담는다. 
  3. 반복문으로 하나씩 꺼내면서 0인지 확인한다. 이때 꺼낼 때는 거꾸로 꺼내야 하기 때문에 리스트를 뒤집는다.
  4. 꺼낸 원소가 0일 경우 카운트를 하고, 새로운 숫자가 나오면 반복문을 종료한다.
  5. 카운트 값을 출력한다.

Solution

import math
n = int(input())
n = list(str(math.factorial(n)))
cnt = 0
for i in n[::-1]:
    if i == "0":
        cnt += 1
    else:
        break
print(cnt)