반응형
문제 설명
정수 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레벨의 문제이지만 연습문제 수준의 내용이다.
어렵지 않게 풀었지만 한 개의 케이스에서 계속 실패하는 문제가 발생한다.
가설
- n이 0 이하가 들어갔나?
- Swift 실행 환경의 문제인가?
- 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
}
반응형