Programmers/LV1.

Lv1 | Swift - 약수의 합

ziziDev 2024. 5. 30. 09:11
반응형

안녕하세요

오늘은 프로그래머스

Lv1. 약수의 합을 스위프트 언어로 풀었습니다

 

문제 설명

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

제한 사항
  • n은 0 이상 3000이하인 정수입니다.
입출력 예nreturn
12 28
5 6
입출력 예 설명

입출력 예 #1
12의 약수는 1, 2, 3, 4, 6, 12입니다. 이를 모두 더하면 28입니다.

입출력 예 #2
5의 약수는 1, 5입니다. 이를 모두 더하면 6입니다.

 

나의 풀이

func solution(_ n:Int) -> Int {
    var num = 1
    var sum = 0
    
    while num <= n {
        if n % num == 0 {
            sum += num
        }
        
        num += 1
    }
    return sum
}

 

다른사람풀이

(다른사람풀이를 보기전에 고차함수를 사용한 사람이 있을거라고 생각했다...

filter를 사용해서 reduce를 하면 될것 같으니까...)

 

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

 

역시나.. 여러가지 고차함수의 풀이들을 볼 수 있었다

 

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

 

 

 

반응형