정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.
n은 0 이상 3000이하인 정수입니다.
def solution(n):
i = 1
answer = 0
while 1:
if n==i:
answer += i
break
elif n % i == 0:
answer += i
i+=1
return answer
코드실행까진 ok... but
이유 : n=0일때....!
그렇다.. n=0이 될 수도 있다는 것..
🔨 내가 수정한 코드
def solution(n):
i = 1
answer = 0
while 1:
if n==0:
answer = n
break
elif n==i:
answer += i
break
elif n % i == 0:
answer += i
i+=1
return answer
그냥 n==0일 때를 추가..
너무 단순한가..? 싶긴했지만
완료는 했음..
왜 보는데 눈물이 나지..
이렇게 간단하게 쓸 수 있다는 것인가..
한줄 코드가 이렇게 많을 수가..
딴사람들이 쓴거보고 진짜 눈물을 광광
일단 약수는 n/2
값보다 클수는 없음
같을 순 있지만 클 수는 없다
여기서 시간을 확 줄일 수 있다!!...
그리고 어차피 자기자신은 더하게 됨
파이썬엔 sum함수가 있음!!!
.... 충격을 받았음
앞으로 이거 하면서 더 충격을 받겠지요?
그래서 보고난 후 다시 짠 코드
😎 물론 다른사람 코드지만...
n+sum([i for i in range(1,n//2+1) if n%i==0])
문제를 더 열심히보고..
문해력을 늘리고..
한줄로 줄이는 연습도 하고..
해야겠다~!