문제
N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오.
입력
- 첫째 줄에 N이 주어진다. (0 ≤ N ≤ 500)
출력
- 첫째 줄에 구한 0의 개수를 출력한다.
풀이
- 팩토리얼 계산 문제로 재귀를 써서 구해도 되고 그냥 반복문을 통해 곱해서 계산해도 된다.
- 무슨 생각인지 나중을 위해 DP형태로 문제가 풀고 싶어 세상에서 제일 간단한 DP형태를 구현했다.(DP라고 부르지만 사실 DP가 아닐지도..)
- 계산을 하고 나면 뒤에서부터
0
의 개수를 구하면 된다.
설명
for
문을 통해 N!을 구한다.
- 구한 값을 문자열로 바꾸고 python 배열의 성질
[::-1]
을 사용해 문자열을 뒤집는다.
'0'
이 아닌 값이 나올때까지 수를 센다.
답
from sys import stdin input = stdin.readline def factorial_0_number(n): DP = [1] for i in range(1, n + 1): DP.append(DP[-1] * i) cnt = 0 for j in str(DP[n])[::-1]: if j != '0': break cnt += 1 return cnt if __name__ == "__main__": N = int(input()) res = factorial_0_number(N) print(res)
처음에 0
의 개수 세는 건줄 알고 틀렸다... 문제를 잘 읽자..
💩
Uploaded by Notion2Tistory v1.1.0