파이썬 코드카타

약수의 개수와 덧셈

여연찌 2024. 4. 16. 11:40
  • 두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.
def solution(left, right):
    answer = 0
    for i in range(left,right+1):
        count = 0
        for n in range(1,i+1):
            if i%n == 0:
                count += 1
        if count %2 == 0:
            answer += i
        else:
            answer -= i 
    return answer

 

① for i in range(left,right+1):

# left 부터 right 까지의 수를 반복하는 i 를 생성

# left = 13 right = 17 이라면

13,14,15,16,17

 

② count = 0

# 변수를 만들어준다

 

③ for n in range(1,i+1):

# 1부터 i 까지의 수를 반복하는 n

# 1,2,3,4,5,6,7,8,9,10,11,12,13

# 1,2,3,4,5,6,7,8,9,10,11,12,13,14

# 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15

# 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16

# 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17

 

④ if i%n == 0:
                count += 1

# i 를 n 으로 나누어 주었을 때 0이 된다면 count 에 1을 더해준다.

# 13%1 == 0 이므로 count 에 1이 더해진다.

# 13%13 == 0 이므로 count 에 1이 더해진다.

 

⑤ if count %2 == 0:
            answer += i

# 변수 count 가 짝수일 때 answer 에 i 를 더해준다

 

 

 


for 반복절 안에 for 문을 써서 풀이한 방법