새소식

⌨️ Algorithms/프로그래머스

[Python] 프로그래머스 Lv1_약수의 개수와 덧셈

2023. 5. 24. 21:09

  • -

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

 

프로그래머스

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

programmers.co.kr

 

  • 두 정수 left와 right가 매개변수로 주어짐
  • left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return

제한사항

  • 1 ≤ left ≤ right ≤ 1,000

 

"""
입출력 예시)

left = 13, right = 17 -> 43
left = 24, right = 27 -> 52
"""

 

# 입출력 예 #1
# left = 13, right = 17 -> 43

# => 13 + 14 + 15 - 16 + 17 = 43

 

 

# 입출력 예 #2
# left = 24, right = 27 -> 52

# => 24 - 25 + 26 + 27 = 52

 

 

 

## 의사코드 ##

# 약수 구하기 
# def get_divisor(n):
#     data = set()
      # 1부터 n의 양의 제곱근까지 n과 나눠지는지 확인
#     for i in range(1, int(n ** (1 / 2)) + 1):
#         if n % i == 0:
#             data.add(i)
#             data.add(n // i)
#     return sorted(data)

# 약수의 개수가 짝수이면 더하고 홀수이면 빼기
# for i in range(left, right+1):
#     if len(get_divisor(i)) % 2 == 0:
#         answer += i
#     else:
#         answer -= i

 

 

 

 

def get_divisor(n):
    # 약수 구하기
    data = set()
    # 1부터 n의 양의 제곱근까지 n과 나눠지는지 확인
    for i in range(1, int(n ** (1 / 2)) + 1):
        if n % i == 0:
            data.add(i)
            data.add(n // i)
    return sorted(data)

def solution(left, right):
    answer = 0
    for i in range(left, right+1):
        # 약수의 개수가 짝수이면 더하기
        if len(get_divisor(i)) % 2 == 0:
            answer += i
        # 약수의 개수가 홀수이면 빼기
        else:
            answer -= i
    return answer

 

 

 

 

 

 

https://computer-science-student.tistory.com/580

 

[파이썬, Python] 약수 구하기

Python 약수 구하기 파이썬으로 약수를 구하는 함수를 다양하게 정리해보았다. 기본적인 방법 1부터 입력한 수(n)까지 다 나눠지는지 확인하면서 약수를 구하는 방법이다. def get_divisor(n): data = [] fo

computer-science-student.tistory.com

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다!