본문 바로가기

학습 노트/알고리즘 (Python)

99클럽 - n^2 배열 자르기, k진수에서 소수 개수 구하기

n^2 배열 자르기

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

아이디어

(작성중)

풀이

def solution(n, left, right):
    result = []
    for idx in range(left, right + 1):
        row = idx // n
        col = idx % n

        if col <= row:
            result.append(row + 1)
        else:
            result.append(col + 1)
            
    return result

 

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

아이디어

(작성중)

풀이

def convert_to_base_k(n, k):
    if n == 0:
        return "0"
    digits = []
    while n:
        digits.append(str(n % k))
        n //= k
    return ''.join(digits[::-1])

def is_prime(num):
    if num <= 1:
        return False
    if num <= 3:
        return True
    if num % 2 == 0 or num % 3 == 0:
        return False
    i = 5
    while i * i <= num:
        if num % i == 0 or num % (i + 2) == 0:
            return False
        i += 6
    return True

def solution(n, k):
    base_k_representation = convert_to_base_k(n, k)
    
    potential_primes = base_k_representation.split('0')
    
    prime_count = 0
    for segment in potential_primes:
        if segment.isdigit() and is_prime(int(segment)):
            prime_count += 1
            
    return prime_count