[프로그래머스] 약수의 개수와 덧셈

ppyororong_0_0·2022년 1월 13일
0

프로그래머스

목록 보기
4/19

[프로그래머스 - 1단계] 약수의 개수와 덧셈 문제

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

📝 문제 설명

left부터 right까지의 모든 수들 중에서,
그 숫자의 약수의 개수가 짝수면 더해야 하고 홀수면 빼야 한다.

그렇게 해서 구한 left부터 right까지의 숫자들의 합을 return

💡 풀이

1. left부터 right까지 반복문을 돌면서 해당 숫자의 약수가 몇 개인지 확인하기

  • 매번 반복문을 돌기 전에 cnt = 0으로 초기화: left~right가 몇 개의 약수를 가지고 있는지 확인하기 위함.
  • 약수구하기: 1부터 해당 숫자까지 반복문을 돌려서(이중 for문) i로 나누어떨어지면 약수라는 뜻이기 때문에 cnt의 값을 증가시켜줌.

2. cnt의 값이 짝수이면 answer에 해당숫자를 더해주고, 홀수면 answer에서 해당숫자를 빼준다

🖥️ 코드

function solution(left, right) {
    let answer = 0;
    for (let num = left; num <= right; num++) {
        let cnt = 0;
        for (let i = 1; i <= num; i++) {
            if (num % i === 0) cnt++;
        } 
        if (cnt % 2 === 0) answer += num;
        else answer -= num;
    }
    
    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;
}

....수학을 잘하시나보다....

profile
안녕하세요!

0개의 댓글