코딩테스트(7) - 약수의 개수와 덧셈

GAHEE KIM·2022년 2월 24일
0

문제링크: https://programmers.co.kr/learn/courses/30/lessons/77884

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

생각의 흐름

1) 제공 받는 두 숫자 범위를 기준으로 잡기
2) 해당 범위 내 숫자들의 약수찾기
3) 찾은 약수들의 갯수가 짝수면 숫자를 더하고 홀수면 빼서 결과 리턴하기

function solution(left, right) {
  // 결과값을 리턴 받기위한 초기값 설정
  let res = 0;
  /**
  숫자 범위 (ex: left=13, right = 17인경우 13~17)
  	= for문을 돌리는 범위는 left부터 right까지
  **/
  for (let index = left; index <= right; index++) {
    // 해당 숫자의 약수를 찾으면 배열에 넣기위한 배열설정( ex: [1,2,7,14])
    let divisors = [];
    for (let temp = 1; temp <= index; temp++) {
     /**
  	 숫자를 1부터 나누면서 나머지가 0인 경우가 약수이므로 약수일 경우 count 배열에 넣어 보관
     **/
      if (index % temp === 0) {
        divisors.push(temp);
      }
    }
    const len = divisors.length; 
    const num = divisors[len - 1];
    if (len % 2 === 0) {
      // 약수배열이 짝수인 경우 더하기
      res += num;
    } else {
      // 약수배열이 홀수인 경우 빼기
      res -= num;
    }
  }
  // 결과값 리턴
  return res;
}

profile
티끌모아 찐개발자되기

0개의 댓글