사진찍는 개발자📸👩‍💻

[프로그래머스/파이썬] 약수의 개수와 덧셈 본문

develop/Python

[프로그래머스/파이썬] 약수의 개수와 덧셈

hsleeee 2024. 8. 2. 17:33
반응형
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