약수의 합
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