알고리즘/그 외

프로그래머스 - k진수에서 소수 개수 구하기 (자바)

ummchicken 2022. 12. 19. 21:59

문제 링크
풀이 출처 1
풀이 출처 2

에라토스테네스의 체

import java.util.*;

class Solution {

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

        StringBuilder sb = new StringBuilder();
        int num = n;
        while(num > 0) {
            sb.append(num % k);
            num /= k;
        }
        String s = String.valueOf(sb.reverse());

        int j = 0;
        for (int i = 0; i < s.length() - 1; i = j) {
            for (j = i + 1; j < s.length() && s.charAt(j) != '0'; j++) {
                continue;
            }
            if (isPrime(Long.parseLong(s.substring(i, j))))
                answer++;
        }

        return answer;
    }

    public boolean isPrime(long n) {
        if(n <= 1) return false;

        for(int i = 2; i <= Math.sqrt(n); i++) {
            if(n % i == 0) return false;
        }

        return true;
    }

}
import java.util.*;

class Solution {

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

        StringBuilder sb = new StringBuilder();
        int num = n;
        while(num > 0) {
            sb.append(num % k);
            num /= k;
        }
        String s = String.valueOf(sb.reverse());

        String[] arr = s.split("0");
        for(String str : arr) {
            if(str.equals("")) continue;

            if(isPrime(Long.parseLong(str))) answer++;
        }

        return answer;
    }

    public boolean isPrime(long n) {
        if(n <= 1) return false;

        for(int i = 2; i <= Math.sqrt(n); i++) {
            if(n % i == 0) return false;
        }

        return true;
    }

}
  • split()
String str = "abcdef@gaaadfwef@@fadsafgh";
String[] strAry = str.split("@");

System.out.println(strAry.length);
for(String s : strAry) {
     System.out.println(s);
 }


//  출력
/*
4
abcdef
gaaadfwef

fadsafgh
*/
//빈칸 생김?