Algorism
알고리즘 - 프로그래머스 약수의 합 (Swift)
codinglearn
2020. 7. 2. 10:28
반응형
정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.제한 사항
- n은 0 이상 3000이하인 정수입니다
약수의 합 구하는 공식은 간단합니다.
1 부터 n까지의 값들중 나누어서 나머지가 0이 되는값이 약수입니다.
추가로 n의 약수는 n의 제곱근 보다 클 수가 없기 때문에 이 값까지 나누어서 더해주면 됩니다.
(코드상에서는 n/2의 절반 값으로 진행 하였습니다.)
n/2까지의 값으로 나누기를 진행 하였기 때문에 n값은 포함되지 않기 때문에 마지막에 추가해줍니다.
func solutionA(_ n:Int) -> Int {
var answer = 0
for a in stride(from: 1, through: n/2, by: 1) {
if n % a == 0 {
// [1, 2, 3, 4, 6]
answer += a
}
}
answer += n
return answer
}
print(solution(12))
// 28
고차함수를 사용하여 더욱 간단하게 표현하면 아래와 같습니다.
func solution(_ n:Int) -> Int {
return Array(1...n/2).filter { n % $0 == 0 }.reduce(0, +) + n
}
반응형