본문 바로가기
알고리즘 & 자료구조/프로그래머스

기사단원의 무기

by 신재권 2022. 12. 20.
package programmers;

public class 기사단원의무기 {

   public static int solution(int number, int limit, int power) {
      int[] powerOfNumbers = new int[number + 1];
      int sum = 0;

      for (int num = 1; num <= number; num++) {
         int divisor = countOfDivisor(num);
         powerOfNumbers[num] = divisor > limit ? power : divisor;
         sum += powerOfNumbers[num];
      }

      return sum;
   }

   // 약수 개수 구하기
   private static int countOfDivisor(int num) {
      int divisorCount = 0;

      // 절반까지만 계산
      for (int i = 1; i * i <= num; i++) {
         if (i * i == num) {
            divisorCount++;
         } else if (num % i == 0) {
            divisorCount += 2;
         }
      }

      return divisorCount;
   }

   public static void main(String[] args) {
      System.out.println(solution(5, 3, 2));
      System.out.println(solution(10, 3, 2));
   }
}

'알고리즘 & 자료구조 > 프로그래머스' 카테고리의 다른 글

문자열 나누기  (1) 2022.12.22
옹알이 (2)  (0) 2022.12.21
명예의 전당 (1)  (0) 2022.12.16
과일 장수  (0) 2022.12.14
가장 가까운 같은 글자  (0) 2022.12.13