Coding Test

[Coding Test] 프로그래머스 1단계 - 기사단원의 무기

한비Skyla 2024. 10. 31. 17:30

📚 문제

✏️ 메모 

약수의 개수 구하기

제곱근 사용

 

[Java] 약수의 개수 구하기

방법1 N의 약수 개수 구하는 방법을 생각했을 때 바로 떠오르는 방법은 N을 1부터 N까지의 숫자로 나눠 약수인지 판별하여 카운트를 해주는 방법이다. 코드로 구현해보면 아래와 같다. int N = 100000

chwan.tistory.com

 

🔎 문제해결

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

        int[] diversors = new int[number];
        // number를 보면서, number 까지의 모든 숫자들의 약수를 파악해야 함.
        // 약수를 구해서 약수 배열에다가 담음.
        for (int i = 1; i <= number; i++) {
            int count = 0;
            for (int j = 1; j * j <= i; j++) {
                if (j * j == i) count++;
                else if (i % j == 0) count += 2;
            }
            diversors[i - 1] = count;
        }
        
        // 그리고 limit 의 숫자를 보면서 limit를 초과하면 power의 숫자를 넣어서
        // 새로운 배열을 만들어 줌.
        int[] diversorsLimit = new int [number];
        for (int i = 0; i < diversors.length; i ++) {
            if(diversors[i] > limit) {
                diversorsLimit[i] = power;
            }
            else diversorsLimit[i] = diversors[i];
        }
        
        // 새로운 배열의 합을 answer 에 넣어줌. 
        for (int value : diversorsLimit) {
            answer += value;
        }

        return answer;
    }
}