처음 생각한 풀이는 팩토리얼을 구해서 10, 10^2, 10^3..으로 나누려고 했었다.
그래서 그렇게 풀었는데,, 런타임에러가 났다
왜냐하면 문제에서 입력한 N의 범위가 0에서 500이하이기 때문임ㅠ
그래서 다른 방법을 생각해야했다..
뒤에서부터 0의 개수는 10의 배수를 의미하고,
10 = 2 x 5 이므로 이 개수를 알면 되는데
무조건 2가 5보다 많으니까
5의 개수를 알면 -> 10의 개수를 알 수 있고 -> 0의 개수 알 수 있다.
입력받은 수를 n이라고 할 때,
팩토리얼은 1부터 n까지의 곱이므로 이 안에 5, 5^2, 5^3... 로 나눠지는 게 몇 개 있는지 세 면 된다.
import Foundation
let n = Int(readLine()!)!
var count = 0
for i in 1..<n+1 {
var num = i
while num>0, num%5 == 0 {
count += 1
num /= 5
}
}
print(count)
저렇게 for 문으로 돌려도 되지만
N의 범위가 500 이하이기 때문에 나눠지는 5의 n승 값이 5, 25, 125 밖에 없다.
따라서
import Foundation
let n = Int(readLine()!)!
print(n/5 + n/25 + n/125)
이렇게 풀이해도 된다
(다른 분들 풀이 보고 안 방법인데,, 사람들 정말 똑똑하다..!!)