[프로그래머스] 약수의 개수와 덧셈

Larry·2021년 5월 19일
0
post-thumbnail

문제

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

제한사항

1 ≤ left ≤ right ≤ 1,000

입출력

입출력의 예

다음 표는 13부터 17까지의 수들의 약수를 모두 나타낸 것입니다.

따라서, 13 + 14 + 15 - 16 + 17 = 43을 return 해야 합니다.

def solution(left, right):
    answer = 0

    for i in range(left, right + 1): # left ~ right까지를 반복한다.
        tes = 0
        for a in range(1, i + 1): # 약수의 개수를 구하는 반복문
            if i % a == 0:
                tes += 1

        if tes % 2 == 0:
            answer += i
        else:
            answer -= i

    return answer


print(solution(13, 17)) # 43
print(solution(24, 27)) # 52

풀이

해당 코드는 반복문과 조건문을 조합하였으며 첫번째 반복문은 13 ~ 17까지 반복을 하도록 하였고, 다음 반복문은 약수의 개수를 구하도록 하였다.
이후 구해지는 약수의 개수를 통해서 조건문을 이용하여 tes의 값이 짝수의 경우 더하고, 홀수의 경우 빼도록 함으로써 answer의 값이 구해진다.

어려웠던 점

해당 코드를 짜기 위해서 알아야 했던 것이 2가지가 있다.
약수의 개수를 구하는 것과 그 약수의 개수를 통해서 answer의 값을 구하는 것이다.
약수의 개수를 구하는 코드를 만들고 최종적인 answer의 값을 구하는 공식을 세우기까지 많은 시간이 걸렸다.
tes = 0의 위치와 두번째 (answer의 값을 구하는)조건문의 위치를 설정하는 구간에서 많은 실수가 있었으며 이를 통해서 for문과 if문을 적절한 부문에 설정할 수 있도록 추가적인 복습이 필요하다.

profile
Be yourself, no matter what they say

0개의 댓글

관련 채용 정보