코딩테스트/프로그래머스

[프로그래머스] [Level 1] 약수의 합

박소민 2022. 2. 21. 19:53
문제) 약수의 합
 

코딩테스트 연습 - 약수의 합

정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요. 제한 사항 n은 0 이상 3000이하인 정수입니다. 입출력 예 n return 12 28 5 6 입출력 예 설명 입출력 예 #1 12의 약수

programmers.co.kr

 

  • 내 풀이
def solution(n):
    answer=0
    for i in range(1,n+1):
        if n%i==0:
            answer+=i
    return answer
    
12
#결과 12의 약수: 1,2,3,4,6,12
28

 

  • 다른 사람 풀이 1

- 약수 검사는 n//2 위로는 검사 할 필요 없음 → 성능 향상!!

- for문과 if문 한 줄에 한 번에 작성 

 

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

 

  • 다른 사람 풀이 2

- lambda 함수 사용

- filter 함수 사용

- sum( filter( lambda ~) ) )

def solution(n):
  return sum(filter(lambda x: n%x==0, range(1,n+1)))