문제설명
두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.
제한사항
입출력 예
| left | right | result |
|---|---|---|
| 13 | 17 | 43 |
| 24 | 27 | 52 |
| 수 | 약수 | 약수의 개수 |
|---|---|---|
| 13 | 1, 13 | 2 |
| 14 | 1, 2, 7, 14 | 4 |
| 15 | 1, 3, 5, 15 | 4 |
| 16 | 1, 2, 4, 8, 16 | 5 |
| 17 | 1, 17 | 2 |
세 정수 a,b,c에 대하여 ab = c 라면,
c 는 a, b의배수
a, b 는 c의약수
def solution(left, right):
answer = 0
for i in range(left, right+1): # i = left~right까지의 숫자
divisor_cnt = 0 # 약수의 개수를 담기 위한 변수
for j in range(1, i+1): # 1부터 i까지 증가하며 약수 찾아내기
if i % j == 0: # 나눠 떨어진다면 약수!
divisor_cnt += 1 # 나눠 떨어진다면 약수 개수 +1 씩 더해주기
if divisor_cnt % 2 == 0: # 약수 개수가 짝수인가?
answer += i # left~right 사이 어떤 i 는 양수로 더해주고
else:
answer -= i # left~right 사이 어떤 i 는 음수로 더해주자
return answer
(요상하게 고민한 흔적들..)
(이것저것 주석처리하고 프린트해보고 하느라 순서가 엉망진창이다)
a = 13
b = 17
answer = 0
ab_list = []
a_lst=[]
for i in range(a,b+1):
ab_list.append(i)
for j in range(ab_list):
if ab_list[i]
if a % i == 0:
a_lst.append(i)
if len(a_lst) % 2 == 0:
answer += len(a_lst)
else:
answer -= len(a_lst)
print(ab_list)