본문 바로가기

자료구조 & 알고리즘 & cs/CodingTest

프로그래머스 LEVEL1 - 약수의 개수와 덧셈

▶ 문제 설명

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

▶ 제한사항

  • 1 ≤ left  right ≤ 1,000

▶ 입출력 예

left                                                           right                                                          result

13 17 43
24 27 52

▶ 내가 짠 코드

def solution(left, right):
    answer = 0
    for i in range(left, right+1):
        if prime(i) % 2 ==0:
            answer += i
        else:
            answer -= i
    return answer

def prime(n):
    cnt = 0
    for i in range(1, n):
        if n % i == 0:
            cnt+=1
    return cnt+1

소수의 개수를 세는 함수 prime() 만들어 left부터 rignt까지 for문을 돌면서 약수의 개수를 세어 answer 값을 변경하여 리턴한다.

▶ 참고사항

다른사람의 풀이를 참고하니 역시 간단한 방법이 있었다.

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

* 제곱근이 정수로 표현이 가능한 수는 약수의 개수가 홀수개다.

728x90