카카오 2022 블라인드 기출 - k 진수에서 소수 개수 구하기

고장난 고양이·2022년 9월 13일
0

알고리즘_python

목록 보기
68/84
post-thumbnail

문제

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

코드

import math

def convert(n,k):
    rev_base = ''

    while n > 0:
        n, mod = divmod(n, k)
        rev_base += str(mod)

    return rev_base[::-1] 

def isPrime(q):
    if q=="":
        return False
    
    tmp=int(q)
    if tmp==1:
        return False
    elif tmp==2:
        return True
    
    for i in range(2,int(math.sqrt(tmp))+1):
        if tmp%i==0:
            return False
    return True
        
def solution(n, k):
    converted=convert(n,k)
    
    l=list(converted.split('0'))
    count=0
    for i in l:
        if isPrime(i):
            count+=1

    return count
  • k진수로 만들고 나서 0으로 쪼갠다.
  • 쪼갠후 int로 바꿔서 소수인지 확인한다.
  • 소수 확인시에 1부터 자기자신을 제외한 약수가 존재하는지 확인하려면, 자기자신의 루트까지만 확인하면 더빠르게 확인할수있다.
    ex) 8 -> 2.8 2까지 확인하면 알수있다.
profile
개발새발X발일지

0개의 댓글