문제 풀이
[python] k진수에서 소수 개수 구하기
_tera_
2022. 9. 18. 16:58
https://school.programmers.co.kr/learn/courses/30/lessons/92335
에라스토테네스의 체와 n진수 변환 방법을 알고 있다면 대체적으로 풀이는 떠올리기 쉬운듯 하다
split('0') 후에 '~~00~~'의 경우 '00' 사이에 빈 문자열인 ""가 발생할 수 있음을 캐치하지 못해서 value 에러가 뜬 건 if num 조건 추가해서 풀었다
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
def base(n,k): # n진수로 변환하는 함수
base = ''
while n >0:
n, mod = divmod(n,k)
base += str(mod)
return base[::-1]
def prime(n): # 소수 판별 함수
if n == 1 :
return False
for i in range(2, int(n**0.5)+1):
if n%i == 0:
return False
return True
def solution(n, k):
base_n = base(n,k)
lst = base_n.split('0') # 문제 조건에 따라 n진수로 변환된 값을 0을 기준으로 쪼갠다
answer = 0
for num in lst:
if num and prime(int(num)): # 비어있는 문자열 "" 빼고 소수 판별
answer += 1
return answer
|
cs |
빈 문자열 발생하는 경우