![]()
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; } }