동캄의 코딩도장

프로그래머스 level1 [기사단원의 무기] 파이썬 본문

코테/프로그래머스

프로그래머스 level1 [기사단원의 무기] 파이썬

동 캄 2025. 4. 26. 03:36
반응형

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

 

프로그래머스

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

programmers.co.kr

 

def solution(number, limit, power):
    answer = 0  # 최종 결과를 저장할 변수

    # 1부터 number까지 반복
    for num in range(1, number + 1):
        temp = 0  # num의 약수 개수를 세기 위한 변수

        # 1부터 sqrt(num)까지 약수를 찾는다
        for div in range(1, int(num**0.5) + 1):
            if num // div == div and num % div == 0:
                temp += 1  # 약수가 하나 (div가 제곱근일 때)
            elif num % div == 0:
                temp += 2  # 약수가 두 개 (div와 num//div)

            # 약수 개수가 limit을 초과하면
            if temp > limit:
                answer += power  # 정해진 power 값을 더하고
                break  # 더 이상 검사하지 않고 다음 num으로 넘어감
        else:
            # 약수 개수가 limit 이하라면 temp를 그대로 더함
            answer += temp

    return answer  # 최종 결과 반환

약수의 개수를 구하는 문제다.

반응형