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

일단 해볼게·2023년 3월 27일
0

프로그래머스

목록 보기
61/106

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

내 풀이

import math
def solution(left, right):
    result = 0
    for num in range(left, right + 1): 
        if num == 1: # 숫자가 1일 때 약수 = 1
            answer = [1]
        else:
            answer = [1, num] # 1과 자기자신 추가
        
        for i in range(2, int(num ** 0.5) + 1): # 1과 자기자신을 제외한 약수들 구하기
            if num % i == 0: # 약수 구하기
                answer.append(i)
                if num // i != i: # 약수일 경우 거기에 맞는 몫이 i가 아닐 때 
                    answer.append(num // i)
                    
        if len(answer) % 2 == 0:
            result += num
        else:
            result -= num
    
    return result
  1. 숫자가 1인 경우 answer = [1] 아니면 1과 자기자신 추가
  2. 2부터 num의 제곱근의 범위까지 약수를 구한다.
    • 약수를 구하고 num // i 일 때 거기에 맞는 몫이 i가 아닌 경우 answer에 추가한다.
  3. answer의 개수를 파악한다.

다른사람 풀이

def solution(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

제곱수일 때 약수의 개수가 홀수, 제곱수가 아니면 약수의 개수가 짝수이다.

무조건 구하려고 하지 말고 좀 더 생각해봐야겠다.

profile
시도하고 More Do하는 백엔드 개발자입니다.

0개의 댓글