반응형

출처: 프로그래머스 코딩 테스트 연습 문제

정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.

제한 사항

  • n은 0 이상 3000이하인 정수입니다.

입출력 예 설명

입출력 예 #112의 약수는 1, 2, 3, 4, 6, 12입니다. 이를 모두 더하면 28입니다.

입출력 예 #25의 약수는 1, 5입니다. 이를 모두 더하면 6입니다.

 

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

n = 12
solution(n)

결과:

테스트 1 통과 (0.01ms, 10.2MB)
테스트 2 통과 (0.01ms, 10.2MB)
테스트 3 통과 (0.08ms, 10.2MB)
테스트 4 통과 (0.04ms, 10.2MB)
테스트 5 통과 (0.15ms, 10.2MB)
테스트 6 통과 (0.06ms, 10.2MB)
테스트 7 통과 (0.23ms, 10.2MB)
테스트 8 통과 (0.05ms, 10.1MB)
테스트 9 통과 (0.20ms, 10.2MB)
테스트 10 통과 (0.35ms, 10.3MB)
테스트 11 통과 (0.20ms, 10.2MB)
테스트 12 통과 (0.33ms, 10.2MB)
테스트 13 통과 (0.02ms, 10.2MB)
테스트 14 통과 (0.20ms, 10.2MB)
테스트 15 통과 (0.20ms, 10.2MB)
테스트 16 통과 (0.01ms, 10.2MB)
테스트 17 통과 (0.34ms, 10.2MB)

 

다른 사람의 풀이로 계선하였다.

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

n = 12
solution(n)

n // 2 으로 하고 마지막에 자기 자신을 더해주니깐 확실히 성능이 확 좋아졌다.

테스트 1 통과 (0.01ms, 10.3MB)
테스트 2 통과 (0.01ms, 10.2MB)
테스트 3 통과 (0.04ms, 10.2MB)
테스트 4 통과 (0.02ms, 10.2MB)
테스트 5 통과 (0.07ms, 10.1MB)
테스트 6 통과 (0.03ms, 10.2MB)
테스트 7 통과 (0.21ms, 10.2MB)
테스트 8 통과 (0.04ms, 10.2MB)
테스트 9 통과 (0.09ms, 10.2MB)
테스트 10 통과 (0.21ms, 10.2MB)
테스트 11 통과 (0.08ms, 10.3MB)
테스트 12 통과 (0.12ms, 10.2MB)
테스트 13 통과 (0.01ms, 10.3MB)
테스트 14 통과 (0.11ms, 10.2MB)
테스트 15 통과 (0.11ms, 10.2MB)
테스트 16 통과 (0.00ms, 10.2MB)
테스트 17 통과 (0.19ms, 10.3MB)
반응형

'문제 > 프로그래머스' 카테고리의 다른 글

문자열을 정수로 바꾸기  (0) 2021.08.20
시저 암호  (0) 2021.08.20
이상한 문자 만들기  (0) 2021.08.14
자릿수 더하기  (0) 2021.08.13
자연수 뒤집어 배열로 만들기  (0) 2021.08.11

+ Recent posts