소소한 컴퓨터 이야기

약수의 합

by Cori

문제

정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.

 

제한사항 

· n은 0 이상 3000이하인 정수입니다.

 

입출력 예

n return
12 28
5 6

풀이

1. Me

def solution(n):
    answer = 0
    for i in range(1, n + 1):
        if n % i == 0:
            answer += i
    return answer

1 ~ (n+1) 까지 순회하며, n이 나누어 떨어지면 합을 구함.. 다음과 같이 작성하면 더 간결하다. 

def solution(n):
    return sum([x for x in range(1, n+1) if n % x == 0])

2. Others

def sumDivisor(num):
    return num + sum([i for i in range(1, (num // 2) + 1) if num % i == 0])

리스트 표현식을 이용해 한 줄로 표현했다. sum + 리스트 표현식을 함께 사용하여 코드를 간결하게 작성하셨다.

* num // 2 만큼의 숫자를 검사하면, 절반만큼 검사하기 때문에 성능이 향상됨

'CS > Coding Test' 카테고리의 다른 글

수박수박수박수박수 ?  (0) 2021.08.21
시저 암호  (0) 2021.08.21
자릿수 더하기  (0) 2021.08.21
자연수 뒤집어 배열로 만들기  (0) 2021.08.21
정수 내림차순으로 배치하기  (0) 2021.08.21

블로그의 정보

코딩하는 오리

Cori

활동하기