약수의 개수와 덧셈
2024. 9. 4. 14:00ㆍ프로그래머스-코딩테스트/Lv.1
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제
두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.
코드
def solution(left, right):
answer = 0
# 약수들을 담는 리스트 만들기
for num in range(left, right+1):
li = []
for i in range(1, int(num**0.5)+1):
if num % i == 0:
li.append(i)
if num // i > i:
li.append(num//i)
# 약수의 개수 따라 덧셈 뺄셈
if len(li)%2:
answer -= num
else:
answer += num
return answer
노트
포인트는 짝수개 홀수개
약수의 개수를 세서 짝홀수를 판단할 필요 없음
제곱수만이 약수의 개수가 홀수. 나머지는 전부 짝수개의 약수를 가짐
def solution(left, right):
answer = 0
for num in range(left, right+1):
if int(num**0.5) == num**0.5:
answer -= num
else:
answer += num
return answer
- 제곱근을 씌운 값이 int() 함수 값이랑 같으면 제곱수 라는 소리
참조
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
'프로그래머스-코딩테스트 > Lv.1' 카테고리의 다른 글
부족한 금액 계산하기 (1) | 2024.09.04 |
---|---|
문자열 내림차순으로 배치하기 (0) | 2024.09.04 |
내적 (0) | 2024.09.04 |
수박수박수박수박수박수? (0) | 2024.09.04 |
핸드폰 번호 가리기 (1) | 2024.09.04 |