Search

PGS k진수에서 소수 개수 구하기

태그
수학
구현

문제 설명

양의 정수 nnkk진수로 변환했을 때, 숫자 0을 기준으로 분리된 부분들 중 소수의 개수를 구하는 문제

예제 입력/출력

n
k
result
437674
3
3
110011
10
2

제약 조건

1n1,000,0001 ≤ n ≤ 1,000,000
3k103 ≤ k ≤ 10

문제 풀이

브루트 포스 - O(1000)O(1000만)
문제에서 시키는 대로 구현하면 되는 단순 구현 문제에 해당
필요한 함수
1) kk진수로 변환하는 함수 - O(logk(n))O(log_k(n))
2) 소수(Prime Number) 판별 함수 - O(n)O(\sqrt n)
3) 0을 기준으로 split 하는 함수 - O(n)O(|n|)

풀이 코드

from math import sqrt def convert(num, k): ret = [] while num != 0: ret.append(str(num % k)) num //= k return ''.join(ret[::-1]) if ret else '0' def is_prime(n): if n == 1: return False for i in range(2, int(sqrt(n)) + 1): if n % i == 0: return False return True def solution(n, k): num_string = convert(n, k) nums = num_string.split("0") ans = 0 for num in nums: if num != '': ans += is_prime(int(num)) return ans
Python
복사