문제
N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 N이 주어진다. (0 ≤ N ≤ 500)
출력
첫째 줄에 구한 0의 개수를 출력한다.
예제 입력
10
예제 출력
2
설명
정수 n의 팩토리얼이 주어졌을 때 끝에서부터 0의 개수를 구한다. 단, 0이 아닌 숫자가 나오면 종료한다.
풀이
- math 라이브러리를 사용하여 정수 n의 factorial()를 구한다.
- 문자열로 변환한 후, 0을 구분하기 위해 리스트에 담는다.
- 반복문으로 하나씩 꺼내면서 0인지 확인한다. 이때 꺼낼 때는 거꾸로 꺼내야 하기 때문에 리스트를 뒤집는다.
- 꺼낸 원소가 0일 경우 카운트를 하고, 새로운 숫자가 나오면 반복문을 종료한다.
- 카운트 값을 출력한다.
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)
'BOJ 코딩테스트 > Silver' 카테고리의 다른 글
BOJ 2581번 : 소수 (Python/Silver 5) (0) | 2023.02.09 |
---|---|
BOJ 2869번 : 달팽이는 올라가고 싶다 (Python/Silver 5) (0) | 2022.11.02 |
BOJ 10828번 : 스택 (C++/Silver 4) (0) | 2022.10.05 |
BOJ 10845번 : 큐 (C++/Silver 4) (0) | 2022.10.04 |
BOJ 4963번 : 섬의 개수 (C++/Silver 2) (1) | 2022.10.04 |