티스토리 뷰

728x90
 

코딩테스트 연습 - k진수에서 소수 개수 구하기

문제 설명 양의 정수 n이 주어집니다. 이 숫자를 k진수로 바꿨을 때, 변환된 수 안에 아래 조건에 맞는 소수(Prime number)가 몇 개인지 알아보려 합니다. 0P0처럼 소수 양쪽에 0이 있는 경우 P0처럼 소

programmers.co.kr

풀이

1.

  • 0P0처럼 소수 양쪽에 0이 있는 경우
  • P0처럼 소수 오른쪽에만 0이 있고 왼쪽에는 아무것도 없는 경우
  • 0P처럼 소수 왼쪽에만 0이 있고 오른쪽에는 아무것도 없는 경우
  • P처럼 소수 양쪽에 아무것도 없는 경우
  • 단, P는 각 자릿수에 0을 포함하지 않는 소수입니다.

-> 이말은 0으로 구분되는 소수를 구하라는 말이다 220033300 이 있다면 0으로 s.split("0") 

2. 소수구하기

3. k 진수로 변환

 

package programmers.level2;

import org.junit.Test;

public class P92335 {
    @Test
    public void 정답() {
        System.out.println(solution(437674, 3));
        System.out.println(solution(110011, 10));

    }

    public int solution(int n, int k) {
        int answer = 0;
        String convertNum = kBinary(n, k);
        String[] str = convertNum.split("0");
        for (int i = 0; i < str.length; i++) {
            if (str[i].equals("")) {
                continue;
            }
            if (isPrime(Long.parseLong(str[i]))) answer++;
        }
        return answer;
    }

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

    public boolean isPrime(long num) {
        if (num <= 1) return false;
        for (int i = 2; i <= Math.sqrt(num); i++) {
            if (num % i == 0) return false;
        }
        return true;
    }
}
댓글
최근에 달린 댓글
최근에 올라온 글
Total
Today
Yesterday
«   2025/10   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31