본문 바로가기

프로그래머스 (Swift)/lv 1

[lv1] 약수의 개수와 덧셈

문제

 

내 정답 코드

import Foundation

func solution(_ left:Int, _ right:Int) -> Int {
    var result = 0
    
    (left...right).map {
        if calDivisorCount(num: $0).isMultiple(of: 2) {
            result += $0
        } else {
            result -= $0
        }
    }
    
    return result
}

func calDivisorCount(num: Int) -> Int {
    var count = 0
    
    for i in 1...Int(sqrt(Double(num))) {
        if num % i == 0 {
            if i * i == num {
                count += 1
            } else {
                count += 2
            }
        }
    }
    
    return count
}

 

#

1. 저번에 만들었던 약수의 개수를 효율적으로 구하는 함수를 구현한다.

2. left에서 right까지 반복문을 돌리고

3. 약수의 개수가 짝수 홀수인지 판단하여

4. 짝수라면 더해주고, 홀수라면 빼준다.


배운 기술