팩토리얼 0의 개수 성공
풀이
문제가 이해가 되진 않았지만, 우선 팩토리얼값이 필요하니 팩토리얼 구하는 함수를 만들어주고 이를 이용해 줬다.
def factorial(a):
if a == 0:
return 1
else:
return a * factorial(a-1)
그러고 나서 대입해 보니 무슨 말인지 이해가 되었다.
10!이라면 이 값의 뒤에서 0이 몇 개 있는지 세는 문제이다.
3628800이 10!인데 뒤에 0이 2개 달렸다.
이를 구해주기만 하면 된다.
# N!에서 뒤에서부터 처음 0이 아닌 숫작 ㅏ나올 때까지 0의 갯수를 구하는 프로그램을 작성하시오.
# N이 주어짐
def factorial(a):
if a == 0:
return 1
else:
return a * factorial(a-1)
N = int(input())
n_fact = str(factorial(N))
answer = 0
for i in range(len(n_fact)-1,-1,-1):
if n_fact[i] == '0':
answer += 1
else:
break
print(answer)
다른 사람 풀이
백준에서 입력할 땐 시간을 단축하기 위해서
import sys
n = int(sys.stdin.readline())
을 이용한다는 것을 잊고 있었다.
덕분에 다시 생각났다.
문제 푸는 방법은 나와 같았다.
import sys
def factorial(n):
if n == 0 or n == 1:
return 1
else:
return n*factorial(n-1)
N = int(sys.stdin.readline())
fac = str(factorial(N))
count = 0
for i in range(len(fac), 0, -1):
if fac[i-1] == '0':
count += 1
else:
break
print(count)
'알고리즘 > 백준' 카테고리의 다른 글
백준 실버3 1003. 피보나치 함수 (python) (1) | 2024.02.24 |
---|---|
백준 실버3 1966. 프린터 큐 (python) (0) | 2024.02.20 |
백준 실버4 18110.solved.ac (python) (1) | 2024.02.14 |
백준 브론즈3 2490. 윷놀이 (python) (1) | 2024.01.31 |
백준 실버1 1149. RGB거리 (python) (1) | 2024.01.31 |