본문 바로가기
Coding Test/Python

[프로그래머스] 약수의 개수와 덧셈 Python Code

by giem 2022. 8. 17.
반응형

 

프로그래머스 약수의 개수와 덧셈을 파이썬으로 풀어보겠다.

2022.08.17 - [Coding Test/JavaScript] - [프로그래머스] 약수의 개수와 덧셈 JavaScript Code

2022.08.17 - [Coding Test/C++] - [프로그래머스] 약수의 개수와 덧셈 C++ Code

2022.08.17 - [Coding Test/Go] - [프로그래머스] 약수의 개수와 덧셈 Go Code

다른 언어 풀이는 위 링크를 참고하길 바란다.


문제


구현

range를 이용해서 left부터 right까지 돌며

약수의 개수가 홀수인 경우는 완전 제곱수이기 때문에

제곱수를 판별한 후

해당 숫자를 정답에서 빼거나 더한다.


코드
def solution(left, right):
    answer = 0
    for num in range(left,right+1):
        if int(num**0.5)**2 == num:
            answer -= num
        else:
            answer += num
    return answer

완전제곱수를 판별한 방법은 위 코드와 같다.

루트를 취한 다음 int로 형 변환을 하고

그것을 제곱해서 num과 같아지는지 확인했다.


다른 풀이

이번 코드는 좋아요를 가장 많이 받은 풀이와 매우 비슷하다.

하지만 조금 더 변경된 로직이 보였다. (+숏 코딩)

def solution(left, right):
    return sum(n if (n ** 0.5) % 1 else -n for n in range(left, right + 1))

이렇게 그 숫자를 1로 mod 연산하면 완전 제곱수 인지를 판별할 수 있다.

 

다음 포스트에는 C++로 풀어보겠다.

반응형

댓글