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

 

프로그래머스

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

programmers.co.kr

 

import math
def solution(n, k):
    answer = 0
    
    # 형변환
    new_n = ''
    while(n > 0):
        new_n = str(n%k) + new_n
        n = n//k
    
    # 0으로 구분짓고 공백과 1 제거
    nums = new_n.split('0')
    remove = ['', '1']
    nums = [int(i) for i in nums if i not in remove]
    
    # 소수 판별 코드
    def p_num(x):
        for i in range(2, int(math.sqrt(x)+1)):
            if x % i == 0:
                return False
        return True

    for i in nums:
        if p_num(i):
            answer += 1
    
    return answer

 

# n을 k진법으로 나타낸 문자열 반환
def conv(n, k):
    s = ''
    while n:
        s += str(n%k)
        n //= k
    return s[::-1]

# n이 소수인지 판정
def isprime(n):
    if n <= 1: return False
    i = 2
    while i*i <= n:
        if n%i == 0: return False
        i += 1
    return True

def solution(n, k):
    s = conv(n,k)
    cnt = 0
    for num in s.split('0'):
        if not num: continue # 빈 문자열에 대한 예외처리
        if isprime(int(num)): cnt += 1
    return cnt

+ Recent posts