알고리즘/문자열

2022 KAKAO BLIND RECRUITMENT - k진수에서 소수 개수 구하기

naksnaks 2022. 6. 5.
반응형

[문제링크]

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

 

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

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

programmers.co.kr


[설명]

이 문제는 조금 헤매고 풀었습니다.

평소에 자주 사용하던 split을 사용하면 0과 0이 붙어있을 때, st 배열에 공백이 들어가는 것을 확인할 수 있습니다. 이를 StringTokenizer를 사용하면 해결되는 것을 확인하였고, 이를 적용하여 해결하였습니다.

 

1) n을 k진법으로 바꿉니다.

2) 그 수를 "0"을 기준으로 자릅니다.

3) 해당 숫자가 소수인지 확인합니다.

 

 

프로그래머스 2022 KAKAO BLIND RECRUITMENT - k진수에서 소수 개수 구하기 JAVA풀이

 

import java.util.*;
class Solution {
    public int solution(int n, int k) {
        int answer = 0;
        String s = run(n,k);
        StringTokenizer st = new StringTokenizer(s,"0");
        //String[] st = s.split("0");
        Long[] longlist = new Long[st.countTokens()];
        int index=0;
        while(st.hasMoreTokens()){
            longlist[index++]=Long.parseLong(st.nextToken());
        }
        
        for(int i=0;i<longlist.length;i++){
            if(isPrime(longlist[i])){
                answer++;
            }
        }
        
        return answer;
    }
    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;
    }
    public String run(int n, int k){
        String temp="";
        List<String> list = new LinkedList<>();
        while(true){
            if(n<k){
                list.add(Integer.toString(n));
                break;
            }else{
                int a=n/k;
                int b=n%k;
                list.add(Integer.toString(b));
                n=a;
            }
        }
        for(int i=0;i<list.size();i++){
            temp+=list.get(list.size()-i-1);
        }
        return temp;
    }
}

 

 

 

궁금하신 부분이나 부족한 점은 댓글로 알려주시면 감사하겠습니다.

반응형

'알고리즘 > 문자열' 카테고리의 다른 글

BJ_G4_5052_전화번호목록 - Java  (0) 2022.06.08

댓글

💲 추천 글