자바/코딩테스트

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

대전집주인 2024. 3. 28. 17:50
728x90
SMALL

 

문제 이해

  • 정수 n을 k진수로 변환시켜야 한다.
  • n은 1,000,000 으로 int형으로 처리 불가 long 타입으로 변환처리 해야한다.
  • String 변수 temp에 k진수로 바꾸어서 만든다.
  • 0이 앞뒤로 존재하면 소수인지 체크해야함으로 split("0") 으로 배열 생성
  • 0000 0이 연속으로 나오면 배열에 "" 공백이 들어감으로 공백체크 필수
  • 소수 판단하는 함수에도 long타입으로 변경후 소수 판단
class Solution {
    public int solution(long n, int k) {
        int answer = 0;
        String temp = "";
        while(n > 0){
            temp = Long.toString(n%k) + temp;
            n /= k;            
        }
        
        String[] num = temp.split("0");
        for(int i = 0; i<num.length; i++){
            if("".equals(num[i])){
                continue;
            }
            
            if(prime(Long.parseLong(num[i]))){
                answer++;
            }
        }
        
        return answer;
    }
    
    //소수 판단
	static boolean prime(long n) {
		if(n<2) return false;
		
		for(long i=2; i*i<=n; i++) {
			if(n % i == 0) return false;
		}
		
		return true;
	}
}
728x90
LIST