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

K진수에서 소수 개수 구하기

by 신재권 2023. 1. 25.
package programmers;

import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;

public class K진수에서소수개수구하기 {

   public static int solution(int n, int k) {
      List<String> nums = init(n, k);
      int answer = 0;

      for (String s : nums) {
         if (isPrime(Long.parseLong(s))) {
            answer++;
         }
      }

      return answer;
   }

   private static boolean isPrime(long num) {
      if (num == 1) {
         return false;
      }

      for (int i = 2; i <= (int)Math.sqrt(num); i++) {
         if (num % i == 0) {
            return false;
         }
      }

      return true;
   }

   private static String toBinary(int n, int k) {
      StringBuilder sb = new StringBuilder();
      while (n > 0) {
         sb.append(n % k);
         n /= k;
      }
      return sb.reverse().toString();
   }

   private static List<String> init(int num, int binary) {
      StringTokenizer st = new StringTokenizer(toBinary(num, binary), "0");
      List<String> nums = new ArrayList<>();

      while (st.hasMoreTokens()) {
         nums.add(st.nextToken());
      }

      return nums;
   }

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

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

압축  (0) 2023.01.27
연속 부분 수열 합의 개수  (0) 2023.01.26
타겟 넘버  (0) 2023.01.23
귤 고르기  (0) 2023.01.22
전화번호 목록  (0) 2023.01.21