
func solution(_ n:Int) -> Int {
var answer = 0
if n >= 0 && n <= 3000 {
if n == 0 {
answer = 0
} else {
for i in 1 ... n {
if n % i == 0 {
answer += i
}
}
}
}
return answer
}
이렇게 작성한 이유
처음에 코드를 n == 0인 조건을 하지않고 작성하고 제출을 하니 에러가 났다. 생각해보니 n = 0일때는 for문이 1부터 시작이라 논리적으로 맞지 않다는것을 확인했다.
그래서 n = 0일때 결과값이 0이라는걸 미리 설정하고 그다음에 else를 걸어서 1이상의 값을 계산하게 만들었다.
다른 풀이를 보니
이번에는 filter와 reduce를 통하여 더 심플하게 적은 것을 보았다.
공부할것이 또 생겼다.
func solution(_ n:Int) -> Int {
return n != 0 ? (1...n).filter{n % $0 == 0}.reduce(0){$0 + $1} : 0
}