728x90
반응형
문제 출처: https://school.programmers.co.kr/learn/courses/30/lessons/92335
풀이:
실패 코드
def sosu(k):
if k < 2:
return 0
else:
for i in range(2, k):
if k%i == 0:
return 0
return 1
def solution(n, k):
change_n = ""
while n: # 숫자를 k진법으로 변환
change_n = str(n%k) +change_n
n = (n//k)
count = 0
list = map(int,change_n.split('0'))
for prime_number in list:
count += sosu(prime_number)
return count
72.6 / 100
런타임 에리가 난다
이유는 '' 이 들어갔을때
72.6점 코드 런타임 에러가 몇개 난다
def sosu(k):
if k < 2:
return 0
else:
for i in range(2, k):
if k%i == 0:
return 0
return 1
def solution(n, k):
change_n = ""
while n: # 숫자를 k진법으로 변환
change_n = str(n%k) +change_n
n = (n//k)
count = 0
lst = change_n.split('0')
for prime_number in lst:
if len(prime_number) == 0 :
continue
count += sosu(int(prime_number))
return count
1문제가 시간초과 나옴
88.1 / 100
소수 구하는 방법을 제곱근을 이용하여 바꿔준다.
def sosu(k):
for i in range(2,int(int(k) ** 0.5)+1): # 소수찾기
if int(k) % i== 0:
return 0
else:
return 1
def solution(n, k):
change_n = ""
while n: # 숫자를 k진법으로 변환
change_n = str(n%k) +change_n
n = (n//k)
count = 0
lst = change_n.split('0')
for prime_number in lst:
if len(prime_number) == 0 :
continue
if int(prime_number) < 2:
continue
count += sosu(int(prime_number))
return count
진수 변환하는법은
이걸 보고 이해 하면 될것같다.
그리고 문제대로 0 을 기준으로 짤라주고 lst에 담아서 소수인지 아닌지 판별해서 맞으면 1을 리턴 틀리면 0 을 리턴해서
총 합을 구해주면 된다
반응형
댓글