Algorithm

[카카오 코테 2022 | python] k진수에서 소수 개수 구하기

삐롱K 2025. 6. 17. 15:26

 

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

 

[추천 강의]

https://inf.run/7TU84

 

38군데 합격 비법, 2025 코딩테스트 필수 알고리즘| 딩코딩코 - 인프런 강의

현재 평점 5.0점 수강생 2,019명인 강의를 만나보세요. 초보자도 쉽게 이해하는 단계별 설명으로, 막연했던 코딩 테스트가 명확해집니다. 필요한 것만 배우고 바로 실전에 적용하세요! 알고리즘,

www.inflearn.com

 

https://inf.run/jzapB

 

6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법| 딩코딩코 - 인

현재 평점 5.0점 수강생 457명인 강의를 만나보세요. 모든 이력서가 비슷해 보이는 세상, ‘차별화’가 합격을 만듭니다. 6주간, 백엔드 실무자가 직접 전하는 실전 이력서 전략 4가지를 배우세요.

www.inflearn.com

 

728x90
반응형