본문 바로가기
👩‍💻 Programming/Coding Test 문제 풀이

[Programmers] level 1: 약수의 개수와 덧셈 by JavaScript

by codingBear 2022. 7. 6.
728x90
반응형

 이번 문제에 대한 자세한 사항은 다음 링크를 참고하길 바란다.

 

 이번 문제는 비교적 간단히 풀었다. 나의 경우 left부터 right까지의 수가 담긴 객체를 선언하여 해결하였다.

 

  • for문을 돌면서 left부터 right까지 수를 obj의 키로 설정하고 각 키의 값으로 0을 할당
  • 이중 for문을 돌면서 1부터 i까지의 수를 i에 나누어 나머지가 0일 경우(약수) obj의 해당 키 값 ++
  • 완성된 obj를 for문으로 돌면서 약수의 개수가 짝수일 경우 정답에 더하고, 홀수일 경우 정답에서 뺌

Solutions

Solution 1.
function solution(left, right) {
  /* My Solution */
  const obj = {};
  let answer = 0;

  for (let i = left; i <= right; i++) {
    if (!obj[i]) obj[i] = 0;
    for (let j = 1; j <= i; j++) {
      if (i % j === 0) {
        obj[i]++;
      }
    }
  }

  for (const key in obj) {
    if (obj[key] % 2 === 0) answer += +key;
    else answer -= +key;
  }

  return answer;
}
Solution 2.
function solution(left, right) {
  /* Simpler Ver. */
  let answer = 0;

  for (let i = left; i <= right; i++) {
    let count = 0;
    for (let j = 1; j <= i; j++) {
      if (i % j === 0) count++;
    }
    if (count % 2) answer -= i;
    else answer += i;
  }

  return answer;
}​
728x90
반응형

댓글