본문 바로가기
Python/코테 연습

[월간 코드 챌린지 시즌2] 약수의 개수와 덧셈

by soojitasan 2024. 8. 19. 18:22
## 🔒 문제. 약수의 개수와 덧셈
def solution(left, right):
    answer = 0
    
    ## key: 대상 숫자, value : 약수
    num_div = {i: [] for i in range (left, right+1)}
    ## key: 대상 숫자, value : 약수 갯수
    num_div_cnt = {i: int() for i in range (left, right+1) }  

    ## 약수 구하기 ... 나머지 % == 0인 값들을 num_div에 저장
    for i in range (left, right+1):  ## 대상 숫자에 대해서 반복
        for j in range (1, i+1):  ## 1~대상 숫자에 대해서 반복
            if i % j == 0:   ## 대상 숫자 / j의 나머지가 0인 값에 대해 딕셔너리 추가
                num_div[i].append(j)
 
    ## 약수 갯수 구하기 ... num_div_cnt에 저장
    for i in range (left, right+1):
        num_div_cnt[i] = len(num_div[i])

    ## 약수 갯수 홀짝 판별 
    for i in range (left, right+1):
        if num_div_cnt[i] % 2 == 0:  ## 짝수이면 +
            answer += i
        else:  ## 홀수이면 -
            answer -= i
 
    return answer


## print(solution(13, 17))
## print(solution(24, 27))