DHistory

[Programmers] Level 1 - 약수의 개수와 덧셈 본문

Computer Science/Algorithm

[Programmers] Level 1 - 약수의 개수와 덧셈

ddu0422 2023. 8. 3. 10:38

문제

 

프로그래머스

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

programmers.co.kr

 

풀이

"""
약수의 개수가 짝수인 경우 => +
약수의 개수가 홀수인 경우 => -
"""

def solution(left, right):
    answer = 0
    
    for number in range(left, right + 1):
        count = count_divisor(number)
        if count % 2 == 0:
            answer += number
        else:
            answer -= number

    return answer


def count_divisor(number):
    count = 0
    
    for i in range(1, int(number**(1/2)) + 1):
        if number % i == 0:
            if i == number**(1/2):
                count += 1
            else:
                count += 2

    return count

 

채점 결과

 

풀이 (리팩토링)

def solution(left, right):
    return sum(
        [-number if int(number**(1/2)) == number**(1/2) else number for number in range(left, right + 1)]
    )

 

채점 결과