티스토리 뷰
입력 범위가 500까지이므로 이걸 팩토리얼 구해서 하는 건 말이 안되고
규칙을 찾아보아야 한다.
수를 소인수분해했을 때 10(2*5)의 개수가 곧 0의 개수이므로
2에서부터 입력된 수까지 쭉 소인수분해하여 배열에 넣어주고
2와 5의 수를 세어 10의 개수를 세었다.
import Foundation
var array = [Int]()
let n = Int(readLine()!)!
for a in stride(from: 2, through: n, by: 1) {
var number = a
for i in stride(from: 2, through: Int(sqrt(Double(number))), by: 1) {
while number % i == 0 {
array.append(i)
number /= i
}
}
if number > 1 {
array.append(number)
}
}
var numberOfTwo = 0
var numberOfFive = 0
let count = array.count
for element in array {
if element == 2 {
numberOfTwo += 1
} else if element == 5 {
numberOfFive += 1
}
}
print(numberOfTwo < numberOfFive ? numberOfTwo : numberOfFive)
'Algorithm > Baekjoon Online Judge' 카테고리의 다른 글
2751번 '수 정렬하기 2' (0) | 2018.08.04 |
---|---|
2004번 '조합 0의 개수' (0) | 2018.08.01 |
10872번 '팩토리얼' (0) | 2018.08.01 |
11653번 '소인수분해' (0) | 2018.08.01 |
6588번 '골드바흐의 추측' (0) | 2018.08.01 |