NIRVANA

[level 1] 약수의 합 본문

Coding test(Python3)/Programmers

[level 1] 약수의 합

녜잉 2023. 7. 4. 16:07

문제

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

 

문제 풀이 접근법1

 

약수는 n으로 나눌 때, 나누어 떨어지는 자연수 x를 의미함으로 다음과 같이 해당 문제를 풀 수 있다. 

 

1) N을 입력 받음

2) 반복문으로 N % i == 0 인 i를 리스트에 저장. 

3) 다시 반복문을 통해 리스트의 i를 더한 뒤, sum값을 return 

 

def solution(n):
    
    divisor = []
    answer = 0
    
    for i in range(1, n+1):
        if n % i == 0:
            divisor.append(i)
            
    for i in range(len(divisor)):
        answer = answer + divisor[i]
    return answer

계속 틀렸다고 해서 다시 확인하니까... range함수에서 범위를 그냥 n으로 설정해놨었다. ^_^

 

 


 

다른 분들 풀이

def sumDivisor(num):
    return sum([i for i in range(1,num+1) if num%i==0])

# 아래는 테스트로 출력해 보기 위한 코드입니다.
print(sumDivisor(12))

이렇게 한 줄로 끝낼 수 있다는 점이 인상 깊었다. 

리스트 컴프리헨션 연습 많이 해봐야쥐.. 

https://wonhwa.tistory.com/3

 

[Python] List comprehension(리스트 컴프리헨션)

List Comprehension이란? List Comprehension(리스트 컴프리헨션)은 리스트를 한 줄의 코딩으로 빠르게, 효율적으로 만들 수 있는 파이썬 문법이다. 예를 들어 1~10까지의 정수를 가지는 리스트를 만들어 보

wonhwa.tistory.com