카테고리 없음

[프로그래머스] 약수의 합

Devleoper_yh 2025. 4. 27. 17:39
반응형

문제 설명

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

제한 사항

  • n은 0 이상 3000이하인 정수입니다.
입출력 예
n return
12 28
5 6
입출력 예 설명

입출력 예 #1

12의 약수는 1, 2, 3, 4, 6, 12입니다. 이를 모두 더하면 28입니다.

 

입출력 예 #2

 

5의 약수는 1, 5입니다. 이를 모두 더하면 6입니다.

제출 답안

func solution(_ n:Int) -> Int {
    var result = 0
    
    // 1부터 n까지 반복
    for i in 1...n {
        // n을 i로 나눈 나머지가 0이면
        if n % i == 0 {
            // result에 더한다
            result += i
        }
    }
    return result
}

 

난이도 1레벨의 문제이지만 연습문제 수준의 내용이다.

어렵지 않게 풀었지만 한 개의 케이스에서 계속 실패하는 문제가 발생한다.

실패

가설

  1. n이 0 이하가 들어갔나?
  2. Swift 실행 환경의 문제인가?
  3. n이 너무 큰 값이 들어가나?

n이 0 이하인 경우, 미리 방어하는 코드를 추가해보았다.

// n이 0또는 0보다 작으면 0을 리턴, 정상 입력된 양수 값만을 계산
if n <= 0 { return 0 }

 

정답 확인

func solution(_ n:Int) -> Int {
    if n <= 0 { return 0 }
    
    var result = 0
    
    // 1부터 n까지 반복
    for i in 1...n {
        // n을 i로 나눈 나머지가 0이면
        if n % i == 0 {
            // result에 더한다
            result += i
        }
    }
    return result
}

 

반응형