문제: 자연수 n 을 입력받고 그 n 의 약수를 모두 더한 값을 리턴 (프로그래머스)
n | return |
12 | 28 ( 1 + 2 + 3 + 4 + 6 + 12) |
■ range 의 범위를 1부터 n+1 까지 for loop 문을 실행하여, n 의 나머지가 0일 때(true) answer += i
def solution(n):
answer = 0
for i in range(1, n+1):
if n % i == 0:
answer += i
return answer
■ 리스트 컴프리헨션과 sum 함수를 사용하여 구현
def solutions(n):
return sum([i for i in range(1, n+1) if n % i == 0])
■ 최종 answer 값에 n 을 넣어두고, n 의 몫을 구해서 범위를 반으로 줄여냄
def solution(n):
answer = n
for i in range(1, (n // 2) + 1):
if n % i == 0:
answer += i
return answer
■ 리스트 컴프리헨션 버전
def soution(n):
return n + sum([i for i in range(1, (n // 2)) if n % 1 == 0])
'기초지식 > 알고리즘' 카테고리의 다른 글
문자열 다루기 기본 (0) | 2019.03.18 |
---|---|
이상한 문자 만들기 (0) | 2019.03.14 |
str 타입의 '-12345' 를 int 타입으로 변환 (0) | 2019.01.21 |
가운데 글자 가져오기 (0) | 2019.01.19 |
전화번호 뒷 4자리를 제외한 나머지 숫자 전부를 * 로 표시 (0) | 2019.01.18 |