본문 바로가기
코딩 테스트/프로그래머스

약수의 개수와 덧셈

by ornni 2024. 5. 8.
728x90
반응형

첫번째 코드

 

직접 해당 범위의 모든 수의 약수의 개수를 구한 후

해당 범위 안의 값이 짝수면 더하고 홀수면 뺀다.

 

def solution(left, right):
    answer = 0
    
    count = [0] * 1001

    for i in range(left, right + 1):
        for j in range(1, i+1):
            if i % j == 0:
                count[i+1] += 1

    for i in range(left, right + 1):
        if count[i+1] % 2 == 0:
            answer += i
        else:
            answer -= i

    return answer

 

오류

1번에서 오류가 나는데 왜 틀렸는지는 잘 모르겠다...


두번째 코드

 

제곱근을 제외하고 약수는 늘 짝이 존재한다.

그렇기 때문에 제곱근이 있는 숫자의 경우 약수의 개수가 홀수이고, 나머지는 짝수이다.

 

import math

def solution(left, right):
    answer = 0

    for i in range(left, right + 1):
        if int(math.sqrt(i)) ** 2 == i:
            answer -= i
        else:
            answer += i

    return answer

 

통과!


링크

https://github.com/ornni/programmers/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/1/77884.%E2%80%85%EC%95%BD%EC%88%98%EC%9D%98%E2%80%85%EA%B0%9C%EC%88%98%EC%99%80%E2%80%85%EB%8D%A7%EC%85%88

 

programmers/프로그래머스/1/77884. 약수의 개수와 덧셈 at main · ornni/programmers

repository for recording Programmers Algorithm problem solving - ornni/programmers

github.com

 

반응형

'코딩 테스트 > 프로그래머스' 카테고리의 다른 글

크기가 작은 부분 문자열  (0) 2024.05.14
추억 점수  (0) 2024.05.13
소수 만들기  (0) 2024.05.08
최소직사각형  (2) 2024.05.03
3진법 뒤집기  (0) 2024.04.30