본문 바로가기
Programming/Programmers

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

by 데이터현 2022. 1. 19.

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

 

코딩테스트 연습 - k진수에서 소수 개수 구하기

문제 설명 양의 정수 n이 주어집니다. 이 숫자를 k진수로 바꿨을 때, 변환된 수 안에 아래 조건에 맞는 소수(Prime number)가 몇 개인지 알아보려 합니다. 0P0처럼 소수 양쪽에 0이 있는 경우 P0처럼 소

programmers.co.kr

처음에 문제를 제대로 이해 못 해서 당황했다

그냥 해당 진수로 변경하고, 0이 나올 때마다 그 앞자리가 소수인지 확인하면 된다.

 

나의 풀이

import math
def is_prime_number(x):
    if x < 2 :
        return False
    for i in range(2, int(math.sqrt(x)) + 1):
        if x % i == 0:
            return False
    return True
def change(n, q):
    rev_base = ''
    while n > 0:
        n, mod = divmod(n, q)
        rev_base += str(mod)
    return rev_base[::-1]

def solution(n, k):
    answer = 0
    n = change(n, k)
    prime = ''
    for num in n:
        if num == '0':
            if prime != '' and is_prime_number(int(prime)):
                answer += 1
            prime = ''
        else:
            prime += num
    if prime != '' and is_prime_number(int(prime)):
                answer += 1
    return answer

댓글