IOS/Swift Algorithm Level 1

Swift. 약수의 합

 문제.

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

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

 풀이. 

func solution(_ n:Int) -> Int {
   var result = Set<Int>()
    for i in 1...n/2 {
        if n % i == 0 {
            result.insert(i)
            if i != n/i {
                result.insert(n/i)
            }
        }
    }
    return result.reduce(0,+)
}

1. 처음에는 그냥 0...n까지 나누어 떨어지는 숫자를 찾으면 된다고 생각했는데 약간의 기능개선이랄까... 그런방법이 있나해서 찾아보다가

2. 나누어 떨어지려면 어차피 말그대로 나누는 것이기 때문에 n/2이상에서는 조건이 발생할수 없기때문에 위의 코드와 같이 작성해 보았습니다.

3. 좀더 찾아보니 루트를 활용하면 된다고 하는데 ... 이해가 잘안되서 일단은 넘겼습니다 ㅠㅠ

'IOS > Swift Algorithm Level 1' 카테고리의 다른 글

Swift. 자릿수 더하기  (0) 2020.10.22
Swift. 이상한 문자 만들기  (0) 2020.10.21
Swift. 시저 암호  (0) 2020.10.19
Swift. 문자열을 정수로 바꾸기  (0) 2020.10.18
Swift. 수박수박수...  (0) 2020.10.17