[Algorithm🧬] 약수의 개수와 덧셈

또상·2022년 1월 7일
0

Algorithm

목록 보기
29/133
post-thumbnail

문제 / 풀이.py

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

그냥 for문을 돌리는 방법으로 풀었다. 시간 복잡도 검사도 없고 1도 껴있어서 그냥 저렇게 풀었는데,

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

이런식으로 num == 1 일때 1로 빼버리고, 나머지는 1과 자기자신은 무조건 들어가니까 두개 줄이면... 지금 생각해보니 시간 복잡도가 비슷할 것 같네...



다른 사람의 풀이

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

찢었네.. 제곱수만 홀수라고 생각은 했는데 for문으로 그걸 가려낼 방법이 있나 싶었는데.... 그냥 저렇게 하면 되는구나...

profile
0년차 iOS 개발자입니다.

0개의 댓글