[프로그래머스 알고리즘] k진수에서 소수 개수 구하기 (Level 2)

Seongho·2023년 4월 25일
0

문제


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

풀이

처음에는 k진수로 만들고, 맨 앞부터 탐색하며 0이 아닌 수가 나오면 문자열에 + 하고, 0이 오면 이제까지 더한 문자열을 isPrime함수에 넣어 소수인지 판별하려 했으나, 생각해보니, 이런식이면 그냥 0을 기준으로 스라이싱하면 되는 문제였다. 따라서 0을 기준으로 슬라이싱 하는데, 이상한 에러가 나서 찾아보니,

String str = "1230456";
String[] strArr = str.split("0"); 

위와 같을 때, strArr = ["123", "", "456"] 이렇게 들어가는 것이었다.
이 부분에 대한 처리를 해주었다.

import java.util.*;
//
class Solution {
//    
    public static boolean isPrime(String str){
        long num = Long.parseLong(str);
//
        if(num == 1) return false;
        for(int i = 2; i <= Math.sqrt(num); i++){
            if(num % i == 0){
                return false;
            }
        }
        return true;
    }
 //   
    public int solution(int n, int k) {
        int answer = 0;
        String str = "";        //k진수 저장하는 문자열
//
        //k진수 만들기 
        while(n > (k - 1)){
            str = Integer.toString(n % k) + str;
            n /= k;
        }
        str = n + str;
//        
        String[] strArr = str.split("0");
//        
        for(String data : strArr){
            System.out.println(data);
            if(data.equals("")) continue;
//
            if(isPrime(data)){
                answer++;
            }
        }     
//        
        return answer;
    }
}
profile
Record What I Learned

0개의 댓글