알고리즘/프로그래머스

[프로그래머스 | Lv2] k진수에서 소수 개수 구하기 (Python) - 2022 KAKAO BLIND RECRUITMENT

sssbin 2023. 3. 1. 14:23

 

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

 

프로그래머스

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

programmers.co.kr

 

n을 k진수로 변환하고(n이 0이 될 때까지 k로 나눈다.),

0을 포함하지 않는 수만 분리하여(split('0'))

소수인지 판별해주면 된다. 

 

처음엔 findPrime에서 반복문의 범위를 (2, num//2)로 설정해줬었는데, tc1에서 시간 초과가 났다. 

그래서 범위를 다시 (2, 제곱근+1)로 설정해줬다.

 

# 프로그래머스 92335: k진수에서 소수 개수 구하기 (2022 KAKAO BLIND RECRUITMENT)

def findPrime(num): # 소수 찾기
    if num == 1:
        return False
    for i in range(2, int(num**(1/2))+1):
        if num % i == 0:
            return False
    return True

def solution(n, k):
    s = ''
    while n > 0: # k진수로 변환
        s = str(n % k) + s
        n //= k
    
    answer = 0
    for i in s.split('0'):
        if i != '':
            if (findPrime(int(i))):
                answer += 1
            
    return answer