프로그래머스/Lv1

[프로그래머스/Javascript] Lv.1 기사단원의 무기

woo.oing 2026. 1. 28. 13:58

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

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

✓ 문제

 

기사들은 번호가 지정되어 있으며(1~number) 기사는 자신의 번호의 약수 개수에 해당하는 공격력을 가진 무기를 구매
단, 공격력 제한수치(limit)가 있으며 이거보다 크면 협약기관에서 정한 공격력(power)을 가진 무기를 구매
무기 공격력 1 당 철 1kg로 계산해서 모든 기사들의 무기를 제작하는데 필요한 철 무게를 반환

 

 

✓ 풀이과정

 

1. 모든 기사번호(1~number)를 순회하며 기사번호의 약수의 개수를 저장하여 구매할 무기의 공격력 계산(cnt)

2. 해당 기사 무기의 공격력(cnt)이 공격력 제한수치(limit)보다 크다면 협약기관 공격력(power)으로 계산하고 아니라면 약수의 개수로 공격력을 계산하여 합산(weight)

3. 모든 기사의 무기 공격력을 더한 값(weight)이 무기를 제작하는데 필요한 철 무게

 

 

참고. 약수를 구할때 제곱근까지만 확인하는 이유

 

[코딩테스트/Javascript] 약수와 약수 찾기

코딩테스트를 풀면서 약수를 찾아야하는 문제가 자주 출제되어 활용할 수 있는 코드를 정리했습니다 약수란 어떤 수를 나누어 떨어지게 하는 수를 의미합니다1의 약수 → 110의 약수 → 1, 2, 5, 10

woooing.tistory.com

 

 

 최종코드

function solution(number, limit, power) {
  let weight = 0;

  for (let i = 1; i <= number; i++) {
    let cnt = 0;

    for (let j = 1; j * j <= i; j++) {
      if (i % j === 0) {
        cnt++;

        if (j !== i / j) cnt++;
      }
    }

    weight += cnt > limit ? power : cnt;
  }

  return weight;
}