Python - 약수의 개수와 덧셈

Minseok Jeon·2024년 6월 28일

문제

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

제한사항

  • 1 ≤ left ≤ right ≤ 1,000

입출력 예

leftrightresult
131743
242752

입출력 예 설명

입출력 예 #1

  • 다음 표는 13부터 17까지의 수들의 약수를 모두 나타낸 것입니다.
약수약수의 개수
241, 2, 3, 4, 6, 8, 12, 248
251, 5, 253
261, 2, 13, 264
271, 3, 9, 274
  • 따라서, 24 - 25 + 26 + 27 = 52를 return 해야 합니다.

문제 풀이

def solution(left, right):
	result = 0
    for i in range(left, right + 1):
    	count = 0
        for j in range(1, i + 1):
        	if i % j == 0:
            	count += 1
        if count % 2 == 0:
        	result += i
        else:
        	result -= i
     return result

코드 설명

  1. 첫번째 for문에서 매개변수 left 부터 right까지 반복해준다.

  2. 약수의 개수를 담을 count 변수 선언해준다.

  3. 두번째 for문에서 1부터 i까지 반복해준다.

  4. 두번째 for문 안에 있는 if문에서 i를 j로 나눈 나머지가 0이면, 즉 약수이면 count 해준다.

  5. 첫번째 for문 안에 있는 if문에서 약수의 개수가 짝수이면 result 변수에 i를 더하면서 담고 짝수가 아니면 빼주고 result 변수를 반환해준다.

0개의 댓글