- 두 정수 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 문을 써서 풀이한 방법
'파이썬 코드카타' 카테고리의 다른 글
행렬의 덧셈 #list(map(lambda 매개변수:표현식),반복) (0) | 2024.04.24 |
---|---|
문자열 다루기 기본 # isdigit() (0) | 2024.04.23 |
내적 # zip() (0) | 2024.04.11 |
가운데 글자 가져오기 # 슬라이싱 (0) | 2024.04.09 |
제일 작은 수 제거하기 # del , remove(), min() (0) | 2024.04.09 |