티스토리 뷰

약수의 합

문제 설명

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


제한 사항

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

 

 

문제 풀이

약수를 구하는 방법으로 for-in 루프를 사용해 나머지가 0 이면 배열에 추가해주었다.

배열 reduce 메소드를 사용해 합을 구해주었다

제한 사항에 따라 n 이 0 일 때 예외처리를 해주었다.

 

 

 

코드

import Foundation

func solution(_ n:Int) -> Int {
    
    if (n == 0) { return 0 }
    
    var divisor:[Int] = []
    
    for i in 1...n {
        if(n % i == 0){
            divisor.append(i)
        }
    }  
    let result = divisor.reduce(0) {$0 + $1}
    
    return result
}

처음에 n은 0일 때를 추가안해서 테스트 케이스 하나를 실패했다.

그래서 for-in 루프 범위를 0...n으로 바꿨는데 그러면 n % 0 이 실행되기 때문에 런타임 에러가 발생했다.

그래서 n==0 일 때의 예외처리를 해주었다.

 

 

 

후기

예외처리를 잘하자

특히 0이 범위에 포함되면 항상 예외를 생각하자

 

 

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함