문제 설명
두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.
제한사항
1 ≤ left ≤ right ≤ 1,000
function solution(left, right) {
let arr = [];
let arrLength = [];
let leftRight = [];
let answer = 0;
for (let i=left; i<=right; i++){
leftRight.push(i)
for (let j=1; j<=i; j++) {
i % j == 0 && arr.push(i)
}
arrLength.push(arr.filter(item => i===item).length)
}
for (let z = 0; z < arrLength.length; z++){
arrLength[z] % 2 === 0 ? answer += leftRight[z] : answer -= leftRight[z]
console.log(answer)
}
return answer;
}
function solution(left, right) {
var answer = 0;
for (let i = left; i <= right; i++) {
if (Number.isInteger(Math.sqrt(i))) {
answer -= i;
} else {
answer += i;
}
}
return answer;
}
어찌 문제를 풀긴했지만 수학적으로 접근해야하는 프로그램을 짤땐 좀더 생각을 해보고 프로그램을 만드는것이 좋겠다 단순히 계산을 해서 여러 변수에 담아서 답을 추출하니 좀 너저분하게 풀이가 된것같고 함수를 제대로 활용하지 못한것같은점이 좀 많이 아쉽고 앞으론 무작정 만들지 않고 생각을 좀더 해보고 문제를 풀어나가야겠다👊🏻✊🏻