문제.
정수 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 |