Algorithm/프로그래머스
[Python] 프로그래머스 Lv2 - k진수에서 소수 개수 구하기 (2022 KAKAO BLIND RECRUITMENT)
떵호
2022. 6. 19. 15:02
728x90
🔗 문제링크
코딩테스트 연습 - k진수에서 소수 개수 구하기
문제 설명 양의 정수 n이 주어집니다. 이 숫자를 k진수로 바꿨을 때, 변환된 수 안에 아래 조건에 맞는 소수(Prime number)가 몇 개인지 알아보려 합니다. 0P0처럼 소수 양쪽에 0이 있는 경우 P0처럼 소
programmers.co.kr
📂 분류
구현
💡 풀이
단순 구현 문제였는데 에라토스테네스의 체를 이용해 소수를 구하려고 했으나 범위를 얼마나 지정해야 줘야 알 수 없기에 단순하게 소수를 구하는 로직을 구현했다.
에라토스테네스의 체를 이용하면 1번과 11번이 런타임 오류가 발생한다.
접근 방식
- n을 k진수로 바꿔준다.
- 문제 설명에 나와있는 조건에 따라 소수는 '0'을 split 한 숫자이다.
💻 코드
def convert(num, base):
if base == 10:
return str(num)
code = "0123456789"
ret = ''
while True:
if num < base:
ret += str(code[num])
break
num, mod = divmod(num, base)
ret += code[mod]
return ret[::-1]
def isPrimeNumber(n):
if n == 1:
return False
size = int(n ** 0.5)
for i in range(2, size + 1):
if n % i == 0:
return False
return True
def solution(n, k):
answer = 0
split = convert(n, k).split('0')
for num in split:
if num == '':
continue
if isPrimeNumber(int(num)):
answer += 1
return answer
728x90