알고리즘/프로그래머스
[프로그래머스] 약수의 개수와 덧셈
BaGyun
2022. 7. 29. 20:09
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
나의 풀이
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;
}
베스트 풀이를 봤는데 진짜 간단하게 푼걸보고 약간의 허탈감과 신기했다.
제곱근이 정수면 약수의 개수가 홀수다