[Codetest] 프로그래머스 Lv1 - 약수의 개수와 덧셈

그냥·2022년 8월 8일
0

codetest

목록 보기
5/9

문제

약수의 개수와 덧셈



조건 정리

1) 인자로 양의 정수 2개를 받는다.
2) 2개의 양의 정수 사이의 숫자에 대해서 약수의 갯수를 구한다.
3) 약수의 갯수가 짝수면 숫자를 더하고, 아니면 숫자를 뺀다.
4) 그 합을 반환한다.


풀이

from collections import defaultdict

def nums(left, right):
    num_even = defaultdict(int)
    for num in range(left, right+1):
        for i in range(1, num+1):
            if num % i == 0:
                num_even[num] += 1
    return num_even

def solution(left, right):
    answer = 0
    num_even = nums(left, right)
    for key, value in num_even.items():
        if value % 2 == 0:
            answer += key
        else:
            answer -= key

    return answer
  • nums 함수는 left, right에 대해서 약수의 개수를 구하는 함수이다. num_even은 defaultdict(int)를 사용하여 정수형 딕셔너리를 선언하였다. num_even의 key 값은 정수값, value는 정수의 약수의 갯수이다.
  • solution 함수는 nums 함수에서 반환된 num_even에서 value 값이 짝수면 answer += key, 아니면 answer -= key를 해준다. 그리고 answer를 반환해준다.
  • defaultdict를 사용하여 조금 더 쉽게 코드를 만들 수 있었다.

0개의 댓글