728x90

문제


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

 

코딩테스트 연습 - 약수의 개수와 덧셈

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

programmers.co.kr

 

코드


const getYakSu = (num) => {
    let yaksu = [];
    for (let i=1; i<=num; i++) { //1부터 num까지
        if (num % i === 0) yaksu.push(i); //나누어 떨어지면 약수에 추가
    }
    for (let i=0; i<yaksu.length; i++) {
        if (yaksu.length % 2 === 0) return true; //약수의 개수가 짝수라면 true
        else return false; //아니면 false
    }
};

function solution(left, right) {
    let answer = 0;
    for (let i=left; i<=right; i++) { //left부터 right까지 (둘다 포함)
        if (getYakSu(i) === true) answer += i; //약수개수가 짝수라면 더하기
        else answer -= i; //아니면 빼기
    }
    return answer;
}

 

후기


  • solution함수에 코딩을 다 해볼까 하다가 함수를 따로 만들어서 코딩해보았다
  • 자바스크립트 문제를 풀다가 종종 "const 변수명 = (매개변수) => {};" 형태의 함수인지 객체인지 모를 것들을 많이 보곤했는데 이 문제를 풀면서 해당 문법에 대해 찾아보게 되었고, ES6문법에서 새로 추가된 Arrow Function (애로우 함수)이란 것을 알게 되었다
  • 찾아보니 일반 function과의 차이점은 크게 다를 것은 없으나 몇 가지 차이점이 있긴 있었다. 나중에 이에 대해 자세히 포스팅해봐야겠다!

+ Recent posts