Algorithm/백준(BOJ)

[Python] 1676 - 팩토리얼 0의 개수

Gr00t 2021. 2. 8. 21:21

문제

1676번: 팩토리얼 0의 개수
https://www.acmicpc.net/problem/1676
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의 개수 세는 건줄 알고 틀렸다... 문제를 잘 읽자..

똥멍청쓰..

💩