1. 구해야 하는 것
# l부터 r까지 (약수의 개수가 짝수인 수의 합) - (약수의 개수가 홀수인 수의 합)
# for i in range)
2. 1을 구하기 위해 필요한 것
# 약수의 개수가 짝수인지 홀수인지 판별
# 해당 수의 약수의 개수
# for문으로 a%b == 0인 약수 개수를 세기?
# 약수의 개수를 저장한 자료형
# 1. 딕셔너리?
# 2. cnt = 0?
# if 약수의 개수 % 2 == 0: 짝수
# else: 홀수
3. 그 외 고려사항
# 약수의 개수는 기본적으로 1:j 2: j/2 이런식으로 페어가 있음.
# 그런데 홀수라는 것은 제곱수라는 것.
# if i**(1/2) == int(i**(1/2))면 약수의 개수는 홀수
# 위 식으로 판별 시 약수의 개수를 구할 필요가 없음.
l부터 r까지의 수들 중에서 만약 i**(1/2) == int(i**(1/2))라면
해당 수는 제곱수이므로 약수의 개수가 홀수, 그 외에는 약수의 개수가 짝수이다.
약수의 개수가 홀수인 수는 answer에서 빼주고 나머지는 더해준다.
def solution(l, r):
answer = 0
for i in range(l,r+1):
answer = answer - i if i**(1/2) == int(i**(1/2)) else answer + i
return answer
'코딩 테스트 연습' 카테고리의 다른 글
[알고리즘] 프로그래머스 - 연속된 수의 합 (0) | 2023.05.04 |
---|---|
[알고리즘] 프로그래머스 - 부족한 금액 계산하기 (0) | 2023.05.04 |
[알고리즘] 프로그래머스 - 내적 (0) | 2023.05.04 |
[알고리즘] 프로그래머스 - 행렬의 덧셈 (0) | 2023.05.04 |
[알고리즘] 프로그래머스 - 최대공약수와 최소공배수 (0) | 2023.05.04 |
댓글