요 문제는 매개변수로 주어지는 left와 right 사이의 범위 내에서 각 숫자에 대해 약수의 개수를 구한뒤 그 수가 짝수이면 더하고 홀수이면 빼면 된다. 즉, 약수를 구하는 부분을 따로 생각하고 전체 프로그램 구조를 아래와 같이 생각하면 된다.
def solution(left, right):
def cntDivisor(number):
divisor = [i for i in range(1, number+1) if number%i==0]
if len(divisor) % 2 == 0:
return 1
else:
return -1
answer = 0
for target in range(left, right+1):
answer += cntDivisor(target)*target
return answer
'알고리즘 & 코딩테스트 > 코딩테스트' 카테고리의 다른 글
Programmers Lv.1 "문자열 다루기 기본" (0) | 2023.05.22 |
---|---|
Programmers Lv.1 "부족한 금액 계산하기" (0) | 2023.05.22 |
Programmers Lv. 1 "문자열 내림차순으로 배치하기" (0) | 2023.05.16 |
Programmers Lv.1 "내적" (0) | 2023.05.15 |
Programmers Lv.1 "수박수박수박수박수박수?" (0) | 2023.05.15 |