chyam

[프로그래머스 Lv2, python] - 숫자 블록 본문

프로그래머스/LV2

[프로그래머스 Lv2, python] - 숫자 블록

chyam_eun 2025. 5. 7. 11:14

https://school.programmers.co.kr/learn/courses/30/lessons/12923

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

def solution(begin, end):
    answer = []

    for p in range(begin, end + 1):
        if p == 1:
            answer.append(0)  # 1은 항상 0
            continue
            
        divisor = 1 # 기본값은 1

        # 가장 큰 약수 찾기 (1을 제외한 최대 약수는 p // j)
        for j in range(2, int(p ** 0.5) + 1):
            if p % j == 0:
                divisor = p // j
                # 블록 번호는 10^7 이하로 제한 (메모리 절약)
                if divisor <= 10**7:
                    break
                divisor = j

        # 블록이 너무 큰 경우 기본값 1 사용
        if divisor > 10**7:
            divisor = 1
            
        answer.append(divisor)
    
    return answer