[Programmers] - 약수의 합

오동훈·2021년 3월 13일
0

Programmers

목록 보기
6/64
post-thumbnail

1. Problem 📃

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

정수 N을 입력받았을 때, N의 약수의 합을 구하는 문제이다.

2. Logic 👨‍🏫

  1. N이 어떤 숫자에 의해 나눠졌을때 나머지가 0이 되면 약수되는것을 이용해보자!
  2. 1번에서 약수라는 것이 구해진다면 list에 추가해준다.
  3. list에 있는 원소들의 합을 구해준다.

3. Code 💻

1. 내가 푼 코드

def solution(n):
    list = []
    i = 1
    while (i <= n):
        if (n % i == 0):
            list.append(i)
        i += 1
    return sum(list)

2. 다른 분이 푼 코드

def sumDivisor(num):  # 다른사람 코드
    # num / 2 의 수들만 검사하면 성능 약 2배 향상잼
    return num + sum([i for i in range(1, (num // 2) + 1) if num % i == 0])

4. Feedback 📚

위의 다른 분이 푼 코드에서 파라미터로 입력받은 숫자의 1/2 수들만 검사하면 된다는 방법이 정말 놀라웠다. 자기 자신은 무조건 약수에 포함되므로 그 숫자만 포함시켜주고, 나머지 1/2만 검사하는 이 방법..!! 이게 약수든 소수를 구하는 문제든 앞으로 이 방법을 이용하면 시간복잡도에서 정말 유용하게 활용될 수 있을 것 같다.

profile
삽질의 기록들🐥

0개의 댓글