문제 설명
정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.
제한 사항
n은 0 이상 3000이하인 정수입니다.
func solution(_ n:Int) -> Int {
guard n > 0 else {
return 0
}
var sum = 0
for number in 1...n {
if n % number == 0 {
sum += number
}
}
먼저 정수인 0부터 n까지의 수를 for 반복문을 사용하여 값을 구한 뒤 if 문을 사용하여 약수를 구했다.
약수는 정수가 나눠질 수 있는 최소한의 수 이므로, number에 나온 값에 n을 나눴을때 나머지가 0인 수들을 저장하였고
그렇게 나온 약수들의 합을 구해야 하므로, number에 약수들의 합을 sum에 저장하였다.
이렇게 식을 출력하였더니 n이 0이였을때 오류가 발생하였다.
다시 한번 for 문을 살펴보니 해당 수는 1...n으로 되어있어 0의 정수는 받지 못하도록 설정되어 있었고 해당 이유 때문에 오류가 났을 것이라 판단했다.
그렇기 때문에 한가지 더 조건을 넣어 n이 0일 경우 0을 반환하는 guard 문을 추가하니 문제가 해결 되었다.
갈수록 알고리즘이 어려워지고 있는 것 같아 머리가 아프다.. 하지만 하나씩 쌓이다 보면 점차 실력이 늘것이다
'◽️ Programming > ◽️ Algorithm' 카테고리의 다른 글
x만큼 간격이 있는 n개의 숫자 (0) | 2024.03.02 |
---|---|
나머지가 1이 되는 수 찾기 (0) | 2024.03.02 |
자릿수 더하기 (0) | 2024.03.02 |
짝수와 홀수 , 평균 구하기 (0) | 2024.03.02 |
배열의 평균값 (0) | 2024.03.02 |