Dragonball Online Goku Hand
본문 바로가기
알고리즘 도장깨기

프로그래머스 Lv.1 "약수의 개수와 덧셈"

by 별의 코비 2022. 11. 24.
728x90

🔥 Programmers Lv.1 : 약수의 개수와 덧셈


🔍 문제 : " 두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요. "

📎 조건 :
∙ 1 ≤ left ≤ right ≤ 1,000


👉🏻 My answer

function solution(left, right) {
    let count = 0;
    for(let i = left; i<=right; i++) {
        let arr = [];
        for(let j = 0; j <= i; j++) {
            if(i % j == 0) arr.push(j)
        }
        arr.length % 2 === 0 ? count += i : count -= i
    }
    return count
}
: count 는 약수를 가지고 있는 수들의 합 혹은 차를 구해준 값입니다.
: arr.length % 2 === 0 ? count += i : count -= i 식은 약수의 길이가 홀수일 때 짝수일 때에 따라 더해줄 것인지 빼줄 것인지를 결정짓는 식입니다.


👉🏻 Another ways

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;
}
: 제곱근이 정수면 약수의 개수가 홀수다. 를 이용한 식이라는데 천재아닌감

댓글