풀이
/**
* 약수의개수와덧셈.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;
}
제곱근을 활용해서, 제곱근이 약수로 존재하는 경우에만 약수의 개수가 홀수임을 이용해서 처리하는 방식을 모든 약수를 확인할 필요가 없어 더 효율적이다.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스][자바스크립트][Level2] 위장 (0) | 2022.01.10 |
---|---|
[프로그래머스][자바스크립트][Level1] 최소 직사각형 (0) | 2022.01.09 |
[프로그래머스][자바스크립트][Level1] 나누어 떨어지는 숫자 배열 (0) | 2022.01.09 |
[프로그래머스][자바스크립트][Level1] 같은 숫자는 싫어 (0) | 2022.01.09 |
[프로그래머스][자바스크립트][Level1] 두 정수 사이의 합 (0) | 2022.01.09 |
댓글