NIRVANA
[level 1] 약수의 합 본문
문제
정수 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))
이렇게 한 줄로 끝낼 수 있다는 점이 인상 깊었다.
리스트 컴프리헨션 연습 많이 해봐야쥐..
'Coding test(Python3) > Programmers' 카테고리의 다른 글
[level 1] x만큼 간격이 있는 n개의 숫자 (0) | 2023.07.06 |
---|---|
[level 1] 평균 구하기 (0) | 2023.07.06 |
[level 1] 짝수와 홀수 (0) | 2023.07.05 |
[level 1] 자릿수 더하기 (0) | 2023.07.05 |
[level 1] 나머지가 1이 되는 수 찾기 (0) | 2023.07.04 |