반응형
[문제링크]
https://programmers.co.kr/learn/courses/30/lessons/92335
[설명]
이 문제는 조금 헤매고 풀었습니다.
평소에 자주 사용하던 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 |
---|
댓글