174. 약수의 합
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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를 통하여 더 심플하게 적은 것을 보았다.
공부할것이 또 생겼다.
다른코드
1
2
3
func solution(_ n:Int) -> Int {
return n != 0 ? (1...n).filter{n % $0 == 0}.reduce(0){$0 + $1} : 0
}
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.