개발자 되는 법.../코딩테스트...
[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값으로 설정합니다.
그리고 반복을 중단합니다.