본문 바로가기
알고리즘 공부하기

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

by 코딩 척척학사 2022. 11. 21.
728x90

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

🍞 문제 설명

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


🍞 제한 조건

1 ≤ left ≤ right ≤ 1,000


🍞 입출력 예

left right result
13 17 43
24 27 52


🍞 문제 풀이

반복문과 삼항연산자를 사용하여 left부터 right까지의 수와 그 약수를 구하고, 짝수인 경우 더하고, 아닌 경우엔 빼주었습니다.

function solution(left, right) {
  var answer = 0;
  for( let i=left; i<=right; i++){
      let num = 0;
      for(let j=i; j>0; j--){
          i%j == 0 ? num++ : num;
      }
      num%2==0 ? answer += i : answer -= i;
  }
  return answer;
}

🍞 다른 이의 풀이

i의 값의 제곱근이 정수인 경우 약수가 홀수개이며, 반대의 경우에는 약수가 짝수개인가 봅니다. 알고리즘을 잘 하려면 수학을 잘 해야 한다.

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

댓글


HTML이 적힌 썸네일 이미지
CSS가 적힌 썸네일 이미지
JAVASCRIPT가 적힌 썸네일 이미지

JAVASCRIPT

자세히 보기