Programmers 기사단원의 무기

홍왕열·2023년 5월 24일
0

코테연습

목록 보기
4/4

내가 푼 방법

function solution(number, limit, power) {
 
 let result = 0;
 let divisorsCount = new Array(number + 1).fill(0); // 약수 개수를 저장할 배열

  // 각 숫자에 대한 약수 개수 계산
  for (let i = 1; i <= number; i++) {
    for (let j = i; j <= number; j += i) {
      divisorsCount[j]++;
    }
  }
    
    for (let i = 1; i < divisorsCount.length; i++) {
        if (divisorsCount[i] > limit) {
            result = result + power
        } else {
            result = result + divisorsCount[i]
        }
    }
   
    
    return result
}

남들이 한 방법

function solution(number, limit, power) {
    var answer = 0;
    let iron = 1;
    for(let i=2; i<=number; i++) {
        let checkMax = Math.sqrt(i);
        let weapon = 0;
        for(let j=1; j<=checkMax; j++) {
            if(j * j === i) {
                weapon++;
            } else if(i % j === 0) {
                weapon += 2;
            }
        }
        weapon = weapon <= limit ? weapon : power;
        iron += weapon;
    }

    answer = iron;
    return answer;
}
}

처음에는 그냥 이중배열로 했더니 시간 초과.
다른 사람들이 푼 것을 보니 제곱근을 이용해서 시간을 줄임.

하나씩 하나씩 하면서 익히자

profile
코딩 일기장

0개의 댓글