BOJ-Algorithm
백준 1676 - 팩토리얼 0의 개수
bellhundred
2022. 1. 9. 01:26
https://www.acmicpc.net/problem/1676
1676번: 팩토리얼 0의 개수
N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오.
www.acmicpc.net
n = int(input())
result = 1
if n==0:
print(0)
else:
for i in range(n):
result *= n
n-=1
count = 0
for num in str(result)[::-1]:
if num == '0':
count+=1
else:
break
print(count)
1. n이 0이면 0!=1이니까 0을 출력하고 끝내게 한다.
2. n이 0이 아니면 우선 n!의 값을 result에 저장한다.
3. 저장된 result를 str형태로 바꾼 뒤 [::-1]의 step값을 주면 문자열을 역순으로 출력할 수 있게 해 준다.
쉽게 말해서 3628800이라면, 0088263으로 출력해 준다는 이야기다.
4. 바꾼 값을 순차적으로 탐색해서, num이 문자열 0이면 count를 1씩 늘려주고 0이 아닌 값이 처음 나오면 반복문을 중단한다.
5. count를 출력한다.
라고 제출했는데 틀렸다. 뭘 빼먹었냐면 0인 경우 4번째 줄에서 print 0을 하고, 마지막 줄에서 또 print가 되어서 틀렸다.
올바른 답은
n = int(input())
result = 1
if n==0:
print(0)
else:
for i in range(n):
result *= n
n-=1
count = 0
for num in str(result)[::-1]:
if num == '0':
count+=1
else:
break
print(count)
이다.