티스토리 뷰

728x90
반응형

 

https://programmers.co.kr/learn/courses/30/lessons/77884

 

코딩테스트 연습 - 약수의 개수와 덧셈

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

programmers.co.kr

 

 


 

 

<나의 풀이>

def divisor(num) :
    cnt = 1
    for i in range(1, (num//2)+1):
        if num % i == 0:
            cnt += 1    
    return cnt

def solution(left, right):
    answer = 0
    for i in range(left, right+1) :
        if divisor(i) % 2 == 0 :
            answer += i
        else :
            answer -= i
    return 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
반응형
댓글