코딩 테스트/프로그래머스
[Swift] 프로그래머스(lv.1) 06 - 약수의 개수와 덧셈
말차프라푸치노
2022. 2. 26. 16:10
약수의 개수와 덧셈
문제 설명
두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ left ≤ right ≤ 1,000
문제 풀이
- left...right 까지 for-in 루프를 돌며 약수의 개수를 확인한다.
- 1부터 해당 숫자 (코드 상에서는 num)까지 for-in 루프를 돌며 약수의 개수를 센다.
- 약수의 개수가 짝수면 result에 해당 숫자를 더해주고, 홀수면 빼준다.
코드
내 코드
import Foundation
func solution(_ left:Int, _ right:Int) -> Int {
var result = 0
for num in left...right {
var count = 0;
for divisor in 1...num {
if(num % divisor == 0){
count += 1
}
}
result = (count % 2 == 0) ? result + num : result - num
}
return result
}
깔끔한 코드
func solution(_ left: Int, _ right: Int) -> Int {
return (left...right).map { i in (1...i).filter { i % $0 == 0 }.count % 2 == 0 ? i : -i }.reduce(0, +)
}
map, filter, reduce를 사용해 한 줄로 코드를 작성했다.
후기
문제를 이해하기만 하면 구현하는데 큰 어려움이 없는 문제였다.