level1_약수의 개수와 덧셈
2024. 2. 1. 22:50ㆍ파이썬_알고리즘(코딩테스트)/level1


내가 제출한 코드
def solution(left, right):
answer = 0
for i in range(left, right+1):
count = 0
for j in range(1,i+1):
if i % j == 0:
count += 1
if count % 2 == 0: # count가 짝수이면
answer += i
else: # count가 홀수라면
answer -= i
return answer
유형이 level1에서 풀었던 약수의 합에서 힌트를 얻어서 코드를 짰던거 같다.
다른 사람이 제출한 코드
def solution(left, right):
answer = 0
for i in range(left, right+1):
# 제곱근이 정수이면 약수의 개수가 홀수임
if int(i**0.5) == i**0.5:
answer -= i
else: # 짝수 개의 약수를 가지면
answer += i
return answer
if int(i**0.5) == i ** 0.5는 약수의 개수를 판단하는 조건문이다.
- i**0.5는 i의 제곱근을 구하는 것이다.
- int(i**0.5)는 이 제곱근을 정수로 변환한다.
만약 이 두 값이 같다면, i는 완전제곱수이며 홀수 개의 약수를 가지고 있다.
예를 들면 16(4*4)을 보면, 16의 약수는 1,2,4,8,16이다. 여기서 4는 자기 자신과 쌍을 이루기 때문에 한 번만 계산되고
완전 제곱수는 홀수 개의 약수를 가진다.
'파이썬_알고리즘(코딩테스트) > level1' 카테고리의 다른 글
| level1_부족한 금액 계산하기 (0) | 2024.02.03 |
|---|---|
| level1_문자열 내림차순으로 배치하기 (0) | 2024.02.01 |
| level1_수박수박수박수박수박수? (0) | 2024.01.31 |
| level1_가운데 글자 가져오기 (0) | 2024.01.30 |
| level1_내적 (0) | 2024.01.30 |