[Programmers] JavaScript 약수의 개수와 덧셈

Kim Joy·2023년 3월 29일
0

Programmers 장인

목록 보기
54/67
post-thumbnail

약수의 개수와 덧셈

문제 설명

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

입출력 예

코드

function solution(left, right) {

    let answer = 0
    for(i=left;i<right+1;i++) {
        let count = 0
        for(j=1;j<i+1;j++) {
            if(i%j==0) {
                count++
            }           
        }
        if(count%2==0) {
            answer+=i
        } else {
            answer-=i
        }
    }
    return answer
    
}

count를 초기화하는 위치를 잘못 설정해서 원하는 값이 도출되지 않았다...!
진짜 차근차근 다시보니까 count는 for문 안에서 초기화가 되었어야하네...?

다른사람 코드


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;
}

Math.sqrt() 를 이용해서 깔-끔하게 해결한 코드가 있었다.
제곱근이 정수면 약수의 개수가 홀수란다....
코테공부를 하면서 느낀건.... 수학을 잘하면... 도움이 많이 된다는 사실

EX)
Math.sqrt(9) = 3 <- 정수O / 9의 약수의 개수는 1 3 9 총 3개, 홀수O
Math.sqrt(8) = 2.82.. <- 정수X / 8의 약수의 개수는 1 2 4 8 총 4개, 홀수X
Math.sqrt(6) = 2.44..<- 정수X / 6의 약수의 개수는 1 2 3 6 총 4개, 홀수X
Math.sqrt(4)= 2 <- 정수O / 4의 약수 개수는 1 2 4 총 3개, 홀수 O

Math.sqrt() MDN 링크
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Math/sqrt

문제링크

https://school.programmers.co.kr/learn/courses/30/lessons/77884#

profile
코딩어린이 성장중

0개의 댓글