Python/Programmers

Lv.1-약수의 개수와 덧셈

JAEJUNG 2021. 7. 10. 18:01
문제

두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.

 

내 코드
def find(n):
    cnt = 0
    for w in range(2, n+1):
        if n % w == 0:
            cnt += 1
    return cnt

def solution(left, right):
    result = 0
    for n in range(left, right+1):
        if find(n) % 2 == 1:
            result += n
        else:
            result -= n
    return result

 

문제 풀이

find() -> n을 2 이상의 수로 나누었을 때 나머지가 0인 개수를 찾는 함수

find 함수에서 return 받은 수를 짝수/홀수로 나누어 +- 연산을 통해 result return

 

고수 풀이

제곱수는 약수의 개수가 홀수인 것을 이용.

제곱수가 아닌 애들은 다 짝수!

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

'Python > Programmers' 카테고리의 다른 글

Lv.1-숫자 문자열과 영단어  (0) 2021.07.08
Lv.1-키패드 누르기  (0) 2021.07.08
Lv.1-내적 구하기  (0) 2021.07.07
Lv.1-크레인 인형뽑기  (0) 2021.07.07
Lv.1-모의고사  (0) 2021.07.07