[프로그래머스 - Level 1] 약수의 개수와 덧셈 JavaScript

soo054141·2021년 7월 24일
0

algorithm

목록 보기
4/8
post-thumbnail

문제 링크

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

문제 설명

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

제한사항

1 ≤ left ≤ right ≤ 1,000

입출력 예시

나의 풀이

left부터 right까지 약수가 있으면 tmp 배열에 담고,
tmp의 길이에 따라 count에 해당 값을 더하거나 빼줬다.
function solution(left, right) {
    let count = 0;

    for(let num = left; num <= right; num++){
        const tmp = [];
        for(let i = 1; i <= num; i++){
            if(num % i == 0){
               tmp.push(i)
            }
        }
        if(tmp.length % 2 == 0){
            count += num;
        } else {
            count -= num;
        }
    }

    return count;
}

다시 푼 풀이

생각해보니 약수들을 굳이 배열에 담을 필요가 없었다. 
그냥 약수가 있으면 count++를 하고, 
count가 짝수인지 홀수인지만 삼항 연산자로 판별하여 더하거나 빼줬다.
function solution(left, right) {
    let answer = 0;
    
    for(let num = left; num <= right; num++){
        let count = 0;
        
        for(let i = 1; i <= num; i++){
            if(num % i == 0){ count++ }
        };
      
        (count % 2 == 0) ? answer += num : answer -= num;
    }
    
    return answer;
}
profile
Front-end

0개의 댓글

관련 채용 정보