Algorithm
[카카오 코테 2022 | python] k진수에서 소수 개수 구하기
삐롱K
2025. 6. 17. 15:26
- 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/92335
- level2
- 2022 KAKAO BLIND RECRUITMENT
Q1) 문제를 어떻게 이해하셨나요?
A1) 이 문제는 양의 정수 n을 k진수로 바꾼 후, 그 안에 0을 기준으로 나뉜 연속된 숫자들 중 소수인 수의 개수를 구하는 문제입니다. 여기서 주의할 점은, 10진수로 해석해서 소수인지 판단해야 한다는 점입니다.
Q2) 풀이 계획
A2) 먼저 n을 k진수 문자열로 변환합니다. 변환된 문자열을 '0'을 기준으로 분할합니다. 각 토큰에 대해 비어 있지 않고 10진수로 변환했을 때 소수이면 결과에 포함시킵니다. 최종적으로 소수 개수를 리턴합니다.
💡 최적화된 코드
# k진수는 숫자를 k개의 숫자(기호)를 사용해 표현하는 방식
def to_k_base(n, k):
result = ''
while n > 0:
result = str(n % k) + result # 가장 낮은 자리수부터
n //= k
return result
# 소수는 1과 자기 자신만을 약수로 가지는 자연수
def is_prime(n):
if n < 2:
return False
for i in range(2, int(n**0.5) + 1): # 약수는 √n을 기준으로 대칭이기 때문에
if n % i == 0:
return False
return True
def solution(n, k):
k_base = to_k_base(n, k)
parts = k_base.split('0')
result = 0
for p in parts:
if p == '':
continue
if is_prime(int(p)):
result += 1
return result
✅ 내장함수
bin(10) # 2진수 '0b1010'
oct(10) # 8진수 '0o12'
hex(255) # 16진수 '0xff'
# 역변환
int('1010', 2) # 10
int('12', 8) # 10
int('ff', 16) # 255
[추천 강의✨]
38군데 합격 비법, 2025 코딩테스트 필수 알고리즘| 딩코딩코 - 인프런 강의
현재 평점 5.0점 수강생 2,019명인 강의를 만나보세요. 초보자도 쉽게 이해하는 단계별 설명으로, 막연했던 코딩 테스트가 명확해집니다. 필요한 것만 배우고 바로 실전에 적용하세요! 알고리즘,
www.inflearn.com
6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법| 딩코딩코 - 인
현재 평점 5.0점 수강생 457명인 강의를 만나보세요. 모든 이력서가 비슷해 보이는 세상, ‘차별화’가 합격을 만듭니다. 6주간, 백엔드 실무자가 직접 전하는 실전 이력서 전략 4가지를 배우세요.
www.inflearn.com
728x90
반응형