[프로그래머스] 기사단원의 무기

홈런볼·2023년 6월 29일
0

프로그래머스

목록 보기
3/36

문제링크

https://school.programmers.co.kr/learn/courses/30/lessons/136798

문제접근

단순하게 약수의 갯수를 구한 후 limit 이내면 값을 더하고, limit 벗어나는 경우에는 power 값을 구하도록 로직을 구현했다.
약수의 갯수는 시간복잡도를 최소화 하기 위해 숫자의 제곱근으로 접근하고, 약수를 나눴을 때 나오는 값이 약수라는 특징을 사용해 약수의 갯수를 구했다.

문제풀이

class Solution {
    public int solution(int number, int limit, int power) {
        int answer = 0;

        for(int i=1;i<=number;i++){
            int cnt = 0;
            for(int k=1;k<=Math.sqrt(i);k++){
                if(i % k == 0){
                    cnt++;
                    if(i / k != k) cnt++;
                }
            }
            if(cnt <= limit) answer+=cnt;
            else answer+=power;
        }

        return answer;
    }
}

정확성 테스트


  • 정확성 테스트 중 통과는 되었지만, 이전과 말도 안되게 큰 차이를 보이는 테스트 케이스 11, 12, 13, 14, 15, 16, 18, 23, 24 의 시간테스트 결과를 개선해야 할 필요가 있음

0개의 댓글