자바스크립트

[JavaScript] n까지의 약수 구하기 - 기사단원의 무기 (프로그래머스)

슈크림 붕어빵 2023. 10. 30. 15:44

function solution(number, limit, power) {
    var answer = 0;
    var numbers = Array(number+1).fill(0);
    
    for (var i=1;i<=number;i++){ //주어진 숫자까지 돌아감
        var j=0; //초기는 0
        while(j<=number){ //i의 배수에 1씩 더함.    
            numbers[j]++;
            j=j+i; //i의 배수를 찾기 위해 i를 더함
        }
        
    }
    
   for (var i=1;i<=number;i++){
       if(numbers[i]<=limit){
            answer+=numbers[i];    
       }
       else{
           answer+=power;
       }
   }
    return answer;
}

처음에는 시간초과로 틀렸었다. 

해결 방법

1. n까지 돌리면서 n의 배수에 +1을 해줘 약수의 수를 한번에가 아니라 순차적으로 찾는 것이다. 

2. limit와 비교하며 answer를 더한다.