k진수에서 소수 개수 구하기

최민수·2023년 3월 20일
0

알고리즘

목록 보기
39/94
from collections import deque
import math

def nToK(n, k):
    result = deque()

    while(n//k):
        q = n // k
        r = n % k

        result.appendleft(str(r))
        n = q

    result.appendleft(str(n))
    return result


def isPrimeAndNoZeros(n):
    if n < 2:
        return False

    if n == 2:
        return True

    for i in range(2, math.ceil(math.sqrt(n))+1):
        if n % i == 0:
            return False

    # 자릿수에 0이 포함되면 X
    for item in str(n):
        if item == "0":
            return False

    return True


def solution(n, k):
    answer = 0

    converted = nToK(n, k)
    converted = "".join(converted)

    split = converted.split("0")
    for item in split:
        if item == '':
            continue
        if isPrimeAndNoZeros(int(item)):
            answer += 1

    return answer
  • 조건에 맞게 침착하게 따라가면 무난한 문제다.
  • 소수 판별 함수, list -> string으로 만드는 join 메서드에 대해 확실히 알아두자.

프로그래머스 연습문제, https://school.programmers.co.kr/learn/challenges

profile
CS, 개발 공부기록 🌱

0개의 댓글