[Algorithm] 프로그래머스 약수의 개수와 덧셈
Updated:
문제 설명
나의 풀이
import Foundation
func solution(_ left:Int, _ right:Int) -> Int {
var answer: Int = 0
for num in left...right {
if countDivisor(num) % 2 == 0 {
answer += num
}
else {
answer -= num
}
}
return answer
}
func countDivisor(_ num: Int) -> Int {
let sqrtNum = Double(num).squareRoot()
var intSqrtNum = Int(sqrtNum)
var divisors: Set<Int> = []
for i in 1...intSqrtNum+1 {
if num % i == 0 {
divisors.insert(num/i)
divisors.insert(i)
}
}
return divisors.count
}
괜찮은 남의 풀이
func solution(_ left: Int, _ right: Int) -> Int {
return (left...right).map { i in (1...i).filter { i % $0 == 0 }.count % 2 == 0 ? i : -i }.reduce(0, +)
}
left부터 right 까지 1부터 i까지 i를 나눠서 0이 되는 수를 카운트하고 짝수인지 음수인지 확인해서 누적합하는 것을 한 번에 쓴 풀이..
Leave a comment