Coding Test/프로그래머스(Python)
[프로그래머스/Python] Level 2_k진수에서 소수 개수 구하기 (2022 KAKAO BLIND RECRUITMENT)
syunze
2023. 11. 12. 19:27
📌문제 유형
2022 KAKAO BLIND RECRUITMENT
📌문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
📌나의 문제풀이
import math
# 10진수 -> k진수
def change(n,k):
tmp = ''
while n > 0:
n, mod = n//k, n%k
tmp += str(mod)
return tmp[::-1]
# 소수 구별(에라토스테네스의 체)
def prime(x):
# 1인 경우는 여기서 판단
if x <= 1:
return False
for i in range(2,int(math.sqrt(x)+1)):
if x % i == 0:
return False
return True
def solution(n, k):
answer = 0
change_n = change(n,k)
check = ''
for num in change_n:
if num != '0':
check += num
else:
if check != '':
ans = prime(int(check))
if ans == True:
answer += 1
check = ''
continue
if check != '':
ans = prime(int(check))
if ans == True:
answer += 1
return answer
📌다른 사람들의 풀이
# n을 k진법으로 나타낸 문자열 반환
def conv(n, k):
s = ''
while n:
s += str(n%k)
n //= k
return s[::-1]
# n이 소수인지 판정
def isprime(n):
if n <= 1: return False
i = 2
while i*i <= n:
if n%i == 0: return False
i += 1
return True
def solution(n, k):
s = conv(n,k)
cnt = 0
for num in s.split('0'):
if not num: continue # 빈 문자열에 대한 예외처리
if isprime(int(num)): cnt += 1
return cnt
📌리뷰
- 1은 소수에 포함하지 않도록 소수 코드에서 걸러내기
- 기억해야할 코드
- N을 K진법으로 바꾸기
def change(n,k):
tmp = ''
while n > 0:
n, mod = n//k, n%k
tmp += mod
return tmp[::-1]
- 에라토스테네스의 체
def prime(x):
if x <= 1:
return False
for i in range(2,int(math.sqrt(x)+1)):
if x % i == 0:
return False
return True
728x90