프로그래머스 < 기사단원의 무기 > JavaScript

2022. 6. 10.·☕️ 커리어 & 인터뷰 준비/코딩 테스트

📍문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/136798

 

📍알고리즘 분류

- 수학

- 구현

 

📍문제 풀이

1 ~ N까지 각 자연수의 모든 약수의 갯수를 빠르게 구하는 문제

 

약수의 갯수를 빠르게 구하려면, 제곱근을 사용하면 된다

 

예를 들어, 100의 약수를 구한다고 생각해보면, 100의 제곱근은 10이다.

전체 약수는 1, 2, 4, 5, 10, 20, 25, 50, 100 인데

1, 2, 4, 5, 10 까지만 구해도 나머지 약수를 계산할 수 있다

 

이를 잘 구현하면 된다

 

📍코드 (JavaScript)

function solution(number, limit, power) {
  const answer = [1]; // 1의 약수는 1이므로 미리 넣어줌
  // 2부터 number 까지 순회
  for (let i = 2; i <= number; i++) {
    const sqrt = Math.sqrt(i); // number의 제곱근
    let count = 0;
    for (let j = 1; j <= sqrt; j++) {
      if (i % j === 0) {
        if (j === sqrt) count++; // 제곱근을 경우 자기 자신과 짝지어지므로 1만 더해줌
        else count += 2; // 나머지 경우는 2 더해줌 (구하지 않을 수까지)
      }
    }
    if (count > limit) answer.push(power);
    else answer.push(count);
  }
  return answer.reduce((acc, cur) => acc + cur, 0);
}

 

'☕️ 커리어 & 인터뷰 준비/코딩 테스트' 카테고리의 다른 글
  • [프로그래머스] 등굣길 - Python
  • 프로그래머스 < 2016년 > Python
  • [프로그래머스] SQL 코딩테스트 연습 03. 우유와 요거트가 담긴 장바구니
  • [프로그래머스] SQL 코딩테스트 연습 02. 입양 시각 구하기(2)
지식물원
지식물원
지식이 자라는 식물원!
  • 지식물원
    지식물원
    지식물원
  • 전체
    오늘
    어제
    • 분류 전체보기 (510)
      • 🎨 프론트엔드 공부 (247)
        • JS & TS (86)
        • HTML & CSS (22)
        • React & Next (49)
        • Vue & Nuxt (22)
        • 기타 (68)
      • 🤓 기술 학습 & 공부 기록 (116)
        • Node.js (0)
        • Python (37)
        • 백엔드 (0)
        • 딥러닝 (1)
        • 컴퓨터 일반 (72)
        • 개발 인프라 (6)
      • 👨‍💻 프로젝트 경험 (6)
        • Work (0)
        • Toy (6)
      • ⚙️ 개발 팁 & 노하우 (21)
        • 프론트엔드 (6)
        • 기타 (15)
      • ☕️ 커리어 & 인터뷰 준비 (88)
        • 코딩 테스트 (88)
      • 📰 기술 트렌드 & 생각 정리 (4)
      • 📚 기타 (25)
        • 마케팅 (15)
        • 비개발서적 (10)
  • 블로그 메뉴

    • 태그
  • 링크

  • 공지사항

    • 모바일 접속 시 코드 하이라이팅 깨질 때
  • 인기 글

  • hELLO· Designed By정상우.v4.10.3
지식물원
프로그래머스 < 기사단원의 무기 > JavaScript
상단으로

티스토리툴바