본문 바로가기
알고리즘/문제 풀이

프로그래머스: k진수에서 소수 개수 구하기

by 위대한초밥V 2023. 10. 11.

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

이 문제의 제한사항을 보면 1 <= n <= 1,000,000이다.

이것을 진수로 바꾸면 자릿수가 더 늘어나므로 int 형으로 다룰 수 없다!

따라서 이 문제의 예외 케이스는 long으로 변환하는 것이다!(parseLong이 생각안났음...)

코드

다른 사람들의 코드가 더 간결해서 첨부한다.

import java.util.*;

class Solution {
    public int solution(int n, int k) {
        int answer = 0;
        String[] temp = Integer.toString(n, k).split("0");	// 진수로 바꾸고, 0으로 나눈다.
        
        for(String t : temp) {
            if(t.length() == 0) continue;
            long a = Long.parseLong(t);
            if(a == 1) continue;
            boolean isPrime = true;
            // 소수 판별한다. 제곱근까지만 확인하면 된다. 전체 확인하면 시간초과 발생!
            for(int i = 2; i <= Math.sqrt(a); i++) {
                if(a % i == 0) {
                    isPrime = false;
                    break;
                }
            }            
        }      
        return answer;
    }    
}
반응형