본문 바로가기
코딩 테스트/코딩 테스트 - 문제

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

by 안스 인민군 2023. 2. 8.
 

프로그래머스

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

programmers.co.kr

이 문제는 내가 왜 틀렸는지 솔직히 모르겠다.... (알려줄 사람....)

내가 푼 풀이는 에라토스테네스 체를 이용한 풀이이여서 이것이 더 빠른걸로 알고 있지만...

흐음,,,,내생객에는 소수범위를 어디까지 구해야 하는지 몰라서 그러는거 같다.

내가 푼 풀이

def sol1(number):
    for i in range(2,len(number)):
        if number[i] != 0:
            for j in range(2*i,len(number),i):
                number[j] = 0
    
def solution(n, k):
    str1 = ''
    number = list(range(100001))
    number[1] = 0
    while True:
        if n == 0: break
        str1 = str(n%k)+str1
        n = n//k
    
    result = 0
    arr = str1.split('0')
    for a in arr:
        if a != '' and number[int(a)] != 0:
            result += 1
    
    return result

풀이

def sol1(number):
    for i in range(2,len(number)):
        if number[i] != 0:
            for j in range(2*i,len(number),i):
                number[j] = 0
    
def solution(n, k):
    str1 = ''
    number = list(range(100001))
    number[1] = 0
    while True:
        if n == 0: break
        str1 = str(n%k)+str1
        n = n//k
    
    result = 0
    arr = str1.split('0')
    for a in arr:
        if a == '' or a == '1': continue
        sosu=True
        for i in range(2,int(int(a)**0.5)+1): # 소수찾기
            if int(a)%i==0:
                sosu=False
                break
        
        if sosu == True:
            result += 1
    
    return result