문제) 약수의 합
코딩테스트 연습 - 약수의 합
정수 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)))
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
| [프로그래머스] [Level 1] 시저 암호 (0) | 2022.02.21 |
|---|---|
| [프로그래머스] [Level 1] 예산 (0) | 2022.02.21 |
| [프로그래머스] [Level 1] 이상한 문자 만들기 (0) | 2022.02.21 |
| [프로그래머스] [Level 1] 자릿수 더하기 (0) | 2022.02.21 |
| [프로그래머스] [Level 1] 자연수 뒤집어 배열로 만들기 (0) | 2022.02.19 |