티스토리 뷰

코딩테스트

10월 27일 약수의 합 swift

알롱도담쓰 2023. 10. 27. 13:24

문제 설명

정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.

 

제한 조건

n은 0 이상 3000이하인 정수입니다.

 

내 답안

func solution(_ n:Int) -> Int { 
    var result = 0
    if n > 0 {
        for i in 1...n {
            if n % i == 0 {
                result += i     
            }
        }    
    }
    return result
}

접근 방법

 

다른 풀이

func solution(_ n:Int) -> Int {
    return n != 0 ? (1...n).filter{n % $0 == 0}.reduce(0, +) : 0
    
    return n != 0 Array(1...n).filter{n % $0 == 0}.reduce(0, +) : 0

}

 

알게 된 것

처음에 filter, reduce함수를 쓰면 되지 않나? 했다가 아 그런데 배열이 아니지 해서 포기했는데

(1...n) / Array(1...n) 으로 배열을 만들 수 있다는 것을 알았다.

최근에 올라온 글