개발자 되는 법.../코딩테스트...

[JS] 기사단원의 무기

개발_자 2024. 8. 19. 09:41

function solution(number, limit, power) {
    var answer = 0;
    for (let i = 1; i <= number; i++) {
        let count = 0;
        for (let j = 1; j <= Math.sqrt(i); j++) {
            if(i % j === 0) {
                if(i / j === j) count += 1;
                else count += 2;
            }
            if(count > limit) {
                count = power;
                break;
            }
        }
        answer += count;
    }
    return answer;
}

i를 1부터 number까지 반복하는 루프를 실행합니다. 이 루프는 각 정수 i에 대해 특정 계산을 수행합니다.

count는 현재 숫자 i의 약수의 개수를 저장합니다.

j를 1부터 i의 제곱근까지 반복하는 내부 루프를 실행합니다. 이 루프를 통해 i의 약수를 계산합니다.

만약 i가 j로 나누어 떨어지면, 즉 i % j === 0 이면 j는 i의 약수입니다.

i / j가 j와 같다면, 즉 j가 i의 제곱근이라면 count를 1증가시킵니다.

그렇지 않다면 i / j 둘다 i의 약수이므로 count를 2증가시킵니다.

만약count가 limit을 초과하면, 더이상 정확한 약수의 개수를 계산하지 않고 count를 power값으로 설정합니다.

그리고 반복을 중단합니다.