본문 바로가기
코딩 테스트 연습

[알고리즘] 프로그래머스 - 약수의 개수와 덧셈

by 코드뭉치 2023. 5. 4.

약수의 개수와 덧셈

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

1. 구해야 하는 것
    # l부터 r까지 (약수의 개수가 짝수인 수의 합) - (약수의 개수가 홀수인 수의 합)
        # for i in range)
2. 1을 구하기 위해 필요한 것
    # 약수의 개수가 짝수인지 홀수인지 판별 
        # 해당 수의 약수의 개수
            # for문으로 a%b == 0인 약수 개수를 세기?
    # 약수의 개수를 저장한 자료형 
        # 1. 딕셔너리?
        # 2. cnt = 0?
    # if 약수의 개수 % 2 == 0: 짝수
    # else: 홀수
3. 그 외 고려사항
    # 약수의 개수는 기본적으로 1:j 2: j/2 이런식으로 페어가 있음.
    # 그런데 홀수라는 것은 제곱수라는 것.
    # if  i**(1/2) == int(i**(1/2))면 약수의 개수는 홀수
    # 위 식으로 판별 시 약수의 개수를 구할 필요가 없음.

 

 

l부터 r까지의 수들 중에서 만약 i**(1/2) == int(i**(1/2))라면

해당 수는 제곱수이므로 약수의 개수가 홀수, 그 외에는 약수의 개수가 짝수이다.

약수의 개수가 홀수인 수는 answer에서 빼주고 나머지는 더해준다.

def solution(l, r):
    answer = 0 
    for i in range(l,r+1):
        answer = answer - i if i**(1/2) == int(i**(1/2)) else answer + i
    return answer

 

댓글