SMALL
[문제]
문제 설명
두 정수 left와 right가 매개변수로 주어집니다.
left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고,
약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.
제한사항
1 ≤ left ≤ right ≤ 1,000
[답안]
def solution(left, right):
answer = 0
for i in range(left, right + 1):
divisor = 0
for j in range(1, i + 1):
divisor += 1 if i % j == 0 else 0
if divisor % 2 == 0:
answer += i
else:
answer -= i
return answer
[풀이]
left를 시작값, right를 마지막 값으로 하는 for문을 만들고 각 값의 약수의 개수를 구하기 위해
내부에 for문을 하나 더 만들어 divisor약수의 개수를 구하고.
divisor 값이 짝수일 경우에는 더하고 홀수인 경우에는 빼는 if문을 만들어 답을 구하였다.
[맘에 드는 답안]
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
제곱수를 제외한 모든 정수들의 약수의 개수는 무조건 짝수라는 공식을 통해서 i의 값이 제곱근을 구하여 약수의 홀짝 여부를 판단했다.
[문제 풀어보기]
https://school.programmers.co.kr/learn/courses/30/lessons/77884
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
LIST
'develop > Python' 카테고리의 다른 글
[프로그래머스/파이썬] 부족한 금액 계산하기 (0) | 2024.08.09 |
---|---|
[프로그래머스/파이썬] 문자열 내림차순으로 배치하기 (1) | 2024.08.02 |
[프로그래머스/파이썬] 내적 (0) | 2024.08.02 |
[프로그래머스/파이썬] 수박수박수박수박수박수? (0) | 2024.08.02 |
[프로그래머스/파이썬] 가운데 글자 가져오기 (0) | 2024.08.02 |