-
백준 1676 - 팩토리얼 0의 개수BOJ-Algorithm 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)
이다.
'BOJ-Algorithm' 카테고리의 다른 글
백준 1436 - 영화감독 숌 (0) 2022.01.09 백준 1764 - 듣보잡 (0) 2022.01.09 백준 1065번 - 한수 (0) 2022.01.09 백준 4949 - 균형잡힌 세상 (0) 2022.01.04 백준 10773 - 제로 (0) 2022.01.04