문제
N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 N이 주어진다. (0 ≤ N ≤ 500)
출력
첫째 줄에 구한 0의 개수를 출력한다.
아이디어
재귀함수로 팩토리얼을 계산하여 구현했다.
Java나 C++같은 경우에는 longlong으로 타입 선언을 한다던지.. 처리가 필요했겠지만 파이썬이라서 그냥 했다.
제출 코드
fact = [1, 1, 2]
def get_fact(value):
if len(fact) > value:
return fact[value]
else:
fact.append(get_fact(value - 1) * value)
return fact[value]
N = int(input())
n_fact = get_fact(N)
result = 0
while n_fact > 0:
if n_fact % 10 == 0:
result += 1
n_fact //= 10
else:
break
print(result)
'Study > Algorithms' 카테고리의 다른 글
백준 1003: 피보나치 함수 (4) | 2024.07.22 |
---|---|
백준 1966 프린터 큐 (Python) (0) | 2024.07.18 |
백준 2292: 벌집 (Python) (0) | 2024.06.09 |
백준 2231번: 분해합 (Python) (0) | 2024.06.08 |
백준 1654: 랜선 자르기, 이분 탐색 풀이 (Python) (0) | 2024.06.07 |