[프로그래머스] 2022 KAKAO BLIND RECRUITMENTk진수에서 소수 개수 구하기 - Java

문제링크 🚩

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

📕 문제 접근 📕

  • k 진수로 변환하기
  • 진수의 길이만큼 돌면서 패턴에 맞는 형식을 찾아 해결하기
  • => 즉 패턴에 맞는 소수를 찾는 문제

진수 구하는 2가지 방법

Integer.toString(n, k);

  • N을 K 진수로 변환해줌
  • 만약 K 진수를 10진수로 돌리고 싶다면 Integer.parseInt(n,k); 를 활용하면 된다.

코드로 직접 구현

 public String to_Knum(int n, int k) {
        String res = "";
        while(n > 0) {
            res = n % k + res;
            n /= k;
        }
        return res;
    }

 

💻 Code 💻

class Solution {
    public int solution(int n, int k) {
        int answer = 0;

        //진수 전환
        // 10 -> k 진수
        //Integer.toStirng(n,k)
        // k진수 -> 10진수 
        // Integer.parseInt(n,k)

        //1. 현재 수를 k 진수로 변환하기

        String nowNum = Integer.toString(n,k);

        int i , j ;
        for(i = 0; i < nowNum.length(); i = j) {
            for(j = i + 1; j < nowNum.length() && nowNum.charAt(j) != '0'; j++);
            if(isprime(Long.parseLong(nowNum.substring(i,j))))
                answer++;
        }
        return answer;
    }

    public static  boolean isprime(long n){
        if(n <= 1) return false;
        else if(n == 2) return true;
        for(int i = 2; i <= Math.sqrt(n); i++)
            if(n % i == 0) 
                return false;
        return true;
    }
}