만족은 하되 안주하지는 말자

기록해야 기억한다

프로그래밍/programmers&bj

[python] k진수에서 소수 개수 구하기

D36choi 2022. 3. 22. 23:35
728x90

문제

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

 

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

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

programmers.co.kr

내 풀이

import math
import re

prime_list = set()

def solution(n, k):
    answer = 0
    num = modify(n, k)

    split = re.split('0+', num)
    for num in split:
        if not num:
            continue
        i = int(num)
        if isprime(i):
            answer += 1

    return answer
def modify(n, k):
    rev_base = ''

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

    return rev_base[::-1]

def isprime(num):
    a=2
    if num in prime_list:
        return True

    while a<=math.sqrt(num):
        if num%a<1:
            return False
        a=a+1

    if num>1:
        prime_list.add(num)
        return True
    return False

알게 된 것

n진법 메서드와 isPrime 메서드는 기록해두는 것이 좋겠다

re.split() 을 통해 원하는 문자열을 쪼갤 수 있도록 공부하자

divmod() 에 대해 리마인드하자

피드백

empty 문자열을 리스트에서 필터링해 제거하려면 아래의 filter() 를 활용하면 된다.

split = filter(None, split)

 

'프로그래밍 > programmers&bj' 카테고리의 다른 글

[JAVA] 길 찾기 게임  (0) 2022.04.12
[JAVA] 다단계 칫솔 판매  (0) 2022.03.28
[JAVA] 뉴스 클러스터링  (0) 2022.03.18
[python] 메뉴 리뉴얼  (0) 2022.03.13
[JAVA] 카카오프렌즈 컬러링북  (0) 2022.03.06