몽상실현개발주의

[프로그래머스] level1 / 약수의 개수와 덧셈 / Python 파이썬 본문

Algorithm PS/프로그래머스

[프로그래머스] level1 / 약수의 개수와 덧셈 / Python 파이썬

migrationArc 2021. 11. 16. 17:57

[프로그래머스] level1 / 약수의 개수와 덧셈 / Python 파이썬

[프로그래머스] level1 / 약수의 개수와 덧셈 / Python 파이썬

 

https://programmers.co.kr/learn/courses/30/lessons/77884

 

코딩테스트 연습 - 약수의 개수와 덧셈

두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주

programmers.co.kr

 

풀이

 

def get_n(N):
    cnt = 0
    for i in range(1, N+1):
        if N % i:
            continue
        cnt += 1
    return cnt


def solution(left, right):
    answer = 0

    for i in range(left, right+1):
        N = get_n(i)
        if N % 2:
            answer -= i
        else:
            answer += i
    return answer

 

 

더 좋은 풀이

"약수의 개수가 홀수개인 모든 수는 제곱수" 를 이용하여 구분하였다.

# 약수가 홀수개인 모든 수는 제곱수
def solution2(left, right):
    answer = 0
    for i in range(left, right+1):
        if int(i**0.5) == i**0.5:
            answer -= i
        else:
            answer += i
    return answer
Comments