[lv1] 기사단원의 무기

걸음걸음·2023년 3월 31일
0

Test

목록 보기
26/29

문제 링크

  • 1번부터 number까지의 번호 지정
  • 자신의 번호 약수 개수에 해당하는 공격력을 가진 무기
  • 제한수치보다 큰 공격력을 가지면 지정한 공격력으로 변경
  • 무기 공격력 1당 1kg 철 필요
  • 기사단원의 수를 나타내는 정수 number
  • 공격력 제한 수치 limit
  • 제한수치 초과시 지정된 공격력 power
  • 필요한 철 무게 return
function solution(number, limit, power) {
    // 1부터 number까지의 약수 구하기
    // 구한 약수가 limit보다 크면 power로 교체
    // 해당 수를 모두 모아 return
    let Fe = 0;
    for(let i = 1; i<=number; i++){
        let count = 0;
        for(let j = 1; j<=i; j++){
          	count++;
        }
        count <= limit ? Fe+=count : Fe+=power
    }
    return Fe;
}

답은 나왔지만 테스트 후반부터 시간초과 문제가 발생
제곱근 활용

function solution(number, limit, power) {
    let Fe = 0;
    for(let i = 1; i<=number; i++){
        let count = 0;
        for(let j = 1; j<=Math.sqrt(i); j++){
            if(i%j === 0){
                // i/j === j ? j가 i의 제곱근이면 1추가 : 아니면 2 추가
                i/j === j ? count += 1 : count+=2
            }
        }
        count <= limit ? Fe+=count : Fe+=power
    }
    return Fe;
}
profile
꾸준히 나아가는 개발자입니다.

0개의 댓글