IOS/Swift Algorithm Level 1
Swift. 약수의 합
HyeonGyu IM
2020. 10. 20. 17:14
문제.
정수 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. 좀더 찾아보니 루트를 활용하면 된다고 하는데 ... 이해가 잘안되서 일단은 넘겼습니다 ㅠㅠ