나의 풀이
function solution(left, right) {
var answer = 0;
let arr = []
for(i=left; i<=right; i++){
arr.push(i)
}
for(j=0; j<arr.length; j++){
answer += divisors(arr[j])
}
return answer;
}
function divisors(integer) {
let result = 0;
let count = 0;
for(var i=1; i<=integer; i++) {
if (integer % i === 0) {
count++
}
}
if(count % 2 === 0){
result = integer
} else {
result = -integer
}
return result
}
약수의 개수를 구해주는 함수를 따로 만들고, 그 함수에서 홀수개와 짝수개를 구한다음 들어간 값을 반환해주는 식으로 적었는데 참 어렵게도 푼 거 같다.
베스트 풀이
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;
}
베스트 풀이를 봤는데 진짜 간단하게 푼걸보고 약간의 허탈감과 신기했다.
제곱근이 정수면 약수의 개수가 홀수다
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 예산 (0) | 2022.08.02 |
---|---|
[프로그래머스] 3진법 뒤집기 (0) | 2022.08.02 |
[프로그래머스] 실패율 (0) | 2022.07.29 |
[프로그래머스] 모의고사 (0) | 2022.07.29 |
[프로그래머스] 폰켓몬 (0) | 2022.07.28 |