알고리즘 - 프로그래머스 약수의 합 (Swift)
2020. 7. 2. 10:28ㆍAlgorism
반응형
정수 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
}
반응형
'Algorism' 카테고리의 다른 글
알고리즘 - 프로그래머스 자릿수 더하기 (Swift) (0) | 2020.07.02 |
---|---|
알고리즘 - 프로그래머스 문자열을 정수로 바꾸기 (Swift) (0) | 2020.07.02 |
알고리즘 - 프로그래머스 소수찾기 (Swift) (0) | 2020.07.01 |
알고리즘 - 프로그래머스 문자열 다루기 기본 (Swift) (0) | 2020.07.01 |
알고리즘 - 프로그래머스 문자열 내 p와 y의 개수 (Swift) (0) | 2020.06.30 |