알고리즘/카카오기출
[Python] programmers k진수에서 소수 개수 구하기
정찡이
2022. 1. 22. 12:54
728x90
1. 문제 링크
https://programmers.co.kr/learn/courses/30/lessons/92335
2. 문제 요약
진수 변환 후 0을 기준으로 나눠서 소수의 개수를 출력하기
3. 아이디어 정리
- 진수 변환
- 0을 기준으로 쪼갠다
- 각 쪼갠 수에 대해 소수 판별 진행
4. 문제 풀이
4-1. 내 풀이
import string
import math
tmp = string.digits+string.ascii_lowercase
def convert(num, base) :
"""
진수 변환 후 0을 기준으로 나눠서 소수 판별
:param num:
:param base:
:return:
"""
q, r = divmod(num, base)
if q == 0 :
return tmp[r]
else :
return convert(q, base) + tmp[r]
def is_prime_number(x):
"""
소수 판별
:param x:
:return:
"""
for i in range(2, int(math.sqrt(x)) + 1):
if x % i == 0:
return False
return True
def solution(n, k):
answer = 0
convert_num = convert(n, k)
for i in convert_num.split('0'):
if i: # 빈값이 아닌 경우
if int(i) == 1:
continue
elif is_prime_number(int(i)): # 소수인 경우 + 1
answer += 1
return answer
print(solution(n=110011,k=10))
5. 결론
- 구현