[level 1] 약수의 개수와 덧셈

2022. 1. 28. 11:56·알고리즘/JavaScript

문제

 

풀이 코드

function solution(left, right) {
  let sum = 0;

  for (let num = left; num <= right; num++) {
    if (primeCount(num)) sum += num;
    else sum -= num;
  }
  return sum;
}

function primeCount(n) {
  let prime = [];

  if (n % Math.sqrt(n) === 0) {
    prime.push(Math.sqrt(n));
  }

  for (let i = 1; i < Math.sqrt(n); i++) {
    if (n % i === 0) {
      prime.push(i);
      prime.push(n / i);
    }
  }
  return prime.length % 2 === 0;
}

 

풀이 과정

약수를 구하는 함수를 따로 만들어, left 부터 right 까지 해당 함수로 보내고,

각 수의 약수를 구한뒤, 약수를 담은 배열의 길이가 짝수이면 true, 홀수이면 false 를 반환하게 했다.

 

간단한 문제지만 조금더 간단히 구현할 수 있지 않을까? 생각이 들었다.

그래서 다른사람의 풀이를 봤는데

 

다른사람의 풀이

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

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

내가 너무 깊게 생각을 했다.

 

약수를 구하는 함수에서도 sqrt 를 적용하여 계산했는데, 

사실 모든 약수의 원소를 구할 필요는 없었다.

해당 수의 약수가 짝구인지 홀수인지만 파악 하면 되는 문제였고,

 

해당수의 제곱근이 정확히 정수로 나오면 홀수이고, 정수가 아니라면 짝수가된다,

모쪼록 아쉬운 솔루션이였다.

'알고리즘/JavaScript' 카테고리의 다른 글
  • [level 1] 내적
  • [level 1] K번째수
  • [level 1] 두 개 뽑아서 더하기
  • [level 1] 2016년
Jeohong
Jeohong
기억 보단 기록을
  • Jeohong
    Chikong Devlog
    Jeohong
  • 전체
    오늘
    어제
    • 분류 전체보기 (186)
      • ---- 개발 컨텐츠 ---- (0)
      • iOS (30)
        • Swift 문법 (1)
        • iOS 개념 (12)
        • HIG (5)
        • SwiftUI (7)
        • UIKit (4)
      • Side Project (0)
      • 개발서적 (4)
        • 객체지향 사실과 오해 (4)
      • 알고리즘 (74)
        • 자료구조 개념 (2)
        • Swift (25)
        • JavaScript (47)
      • ---- 회고 계획 컨텐츠 ---- (0)
      • 계획 및 일기 (10)
      • 회고록 (1)
      • 컨퍼런스 탐방 (1)
      • 미드로 영린이 탈출하기 (1)
      • ---- Previous content ---- (0)
      • Frontend (2)
        • HTML & CSS (2)
      • KITRI 수업 (17)
        • 리눅스 (14)
        • 네트워크 (2)
      • 42seoul (17)
        • Bonr2code (9)
        • 넋두리 (7)
        • 멘토특강 (1)
      • 해킹 실습 (20)
        • 해커스쿨 - F.T.Z (19)
        • WebGoat (1)
      • Tensorflow로 시작하는 NLP (1)
        • 예제 (1)
      • 자연어처리 입문 (1)
        • 이론 (1)
      • 텐서플로로 배우는 딥러닝 (7)
        • 이론 (2)
        • 예제 (5)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    개발자
    42서울
    javascript
    hig
    swift
    IOS
    본과정
    스위프트
    42seoul
    1서클
    라피신
    boj
    SwiftUI
    Algorithm
    백준
    프로그래머스
    네트워크
    코딩
    자료구조
    알고리즘
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
Jeohong
[level 1] 약수의 개수와 덧셈
상단으로

티스토리툴바