[프로그래머스][LV.1] 약수의 합 | python3
2025. 1. 15. 10:41ㆍ프로그래머스/LV.1
문제 링크: 약수의 합
문제 설명
문제 설명
정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.
제한사항
- n은 0 이상 3000이하인 정수입니다.
문제 풀이
n까지의 수를 루프해 나머지가 0인 수(약수이기 때문에)들의 합을 구했다.
내코드
def solution(n):
answer = 0
for i in range(1,n+1):
if n%i==0:
answer+=i
return answer
더보기
다른사람풀이
def sumDivisor(num):
# num / 2 의 수들만 검사하면 성능 약 2배 향상잼
return num + sum([i for i in range(1, (num // 2) + 1) if num % i == 0])
여기서 무릎을 팍 쳤다. 수의 반 이상이 되는 약수는 없으니 이걸 코드에 넣으면 시간도 절약되고 성능도 향상된다. 여기에 자기자신인 n만 더해주면 된다. 코드를 한줄로 간결하게 짜는 것도 배우자.
그리고 댓글에 n**0.5를 해줘도 된다는 말이 있던데 이 부분은 더 봐야 할 것 같다. 댓글은 캡처로 가지고 왔다.
def sumDivisor(num):
return sum([i for i in range(1,num+1) if num%i==0])
한 줄로 하는 코드
'프로그래머스 > LV.1' 카테고리의 다른 글
[프로그래머스][LV.1] x만큼 간격이 있는 n개의 숫자 | python3 (0) | 2025.01.15 |
---|---|
[프로그래머스][LV.1] 평균 구하기 | python3 (0) | 2025.01.15 |
[프로그래머스][LV.1] 짝수와 홀수 | python3 (0) | 2025.01.15 |
[프로그래머스][LV.1] 자릿수 더하기 | python3 (0) | 2025.01.15 |
[프로그래머스][LV.1] 문자열을 정수로 바꾸기 | python3 (0) | 2025.01.15 |