알고리즘/프로그래머스
[프로그래머스][자바스크립트][Level1] 약수의 개수와 덧셈
Benjamin_Choi
2022. 1. 9. 18:29
풀이
/**
* 약수의개수와덧셈.js
* Level1
* https://programmers.co.kr/learn/courses/30/lessons/77884
*/
function solution(left, right) {
var answer = 0;
for (let i = left; i <= right; i++) {
let yaksuNum = 0;
for (let j = 1; j <= i; j++) {
if (i % j === 0) yaksuNum++;
}
yaksuNum % 2 === 1 ? answer -= i : answer += i;
}
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;
}
제곱근을 활용해서, 제곱근이 약수로 존재하는 경우에만 약수의 개수가 홀수임을 이용해서 처리하는 방식을 모든 약수를 확인할 필요가 없어 더 효율적이다.