이전에 U사 코테에서 접했던 문제.
당시엔 무지성 코딩으로 당연히 시간초과가 났다.
어찌보면 너무 단순한 수학문제였다
팩토리얼 계산 결과에서 끝자리 0은 곱해지는 모든 수를 소인수분해 하였을 때의 2와 5의 개수에 달려있다.
끝자리 0의 개수 = min(2개수, 5개수) 라는 뜻이다.
2는 모든 짝수마다 들어있으므로, 모든 경우 5의 개수보다 많다.
따라서 우리는 input n에 대하여, n보다 작거나 같은 수들에 포함된 5의 개수를 찾으면 된다.
이 때, 25의 배수는 5를 2개, 125의 배수는 5를 3개 갖고 있으므로 각각 따로 구하여 더해준다.
문제 조건에서, n은 최대 500이므로 5의 4승인 625부터는 고려하지 않아도 괜찮다!
n = int(input())
n_5 = n//5
n_25 = n//25
n_125 = n//125
print(n_5 + n_25 + n_125)
말이 좀 횡설수설인데... 말 다듬는 연습을 해야겠다 ㅎ 머쓱,,,
ㅋㅋㅋ.. 저도 U사에서 이 문제 풀었었는데 이런 간단한 방법이 있었군요