https://programmers.co.kr/learn/courses/30/lessons/92335
코딩테스트 연습 - k진수에서 소수 개수 구하기
문제 설명 양의 정수 n이 주어집니다. 이 숫자를 k진수로 바꿨을 때, 변환된 수 안에 아래 조건에 맞는 소수(Prime number)가 몇 개인지 알아보려 합니다. 0P0처럼 소수 양쪽에 0이 있는 경우 P0처럼 소
programmers.co.kr
저는 먼저 수를 k진수의 String 값으로 변경하였습니다.
(k진수로 변환은 수를 계속 k로 모듈러연산을 하고 이 값을 reverse하였습니다.)
이 결과값(String)을 0 을 기준으로 나누고 각각의 값이 소수인지를 판별하여 문제를 풀었습니다.
package Programmers.KAKAO_2022;
import java.util.*;
class Solution {
private static String numberToK(int n , int k){
StringBuilder sb = new StringBuilder();
while(n > 0){
sb.append(n%k);
n /= k;
}
sb = sb.reverse();
return sb.toString();
}
private static int countPrime(String number){
int result = 0;
String[] temps = number.split("0");
for(String temp : temps){
// System.out.println(temp);
if(!"".equals(temp) && !" ".equals(temp) && isPrime(temp)){
result++;
}
}
return result;
}
private static boolean isPrime(String number){
long num = Long.parseLong(number);
if(num == 1){
return false;
}
for(long i = 2 ; i <= Math.sqrt(num) ; i++){
if(num % i == 0){
return false;
}
}
return true;
}
public int solution(int n, int k) {
int answer = -1;
String number = numberToK(n,k);
answer = countPrime(number);
return answer;
}
}
'알고리즘' 카테고리의 다른 글
백준 16172번 나는 친구가 적다 (JAVA) (0) | 2022.02.22 |
---|---|
백준 1719번 택배 (JAVA) (0) | 2022.02.21 |
프로그래머스 신고 결과 받기(JAVA) (0) | 2022.02.20 |
백준 17141번 연구소 2 (JAVA) (0) | 2022.02.19 |
백준 16194번 카드 구매하기2 (JAVA) (0) | 2022.02.18 |