첫번째 코드
약수를 구하는 방법에 대해서 이전에 GPT와 상담한 적이 있어서 그걸 이용해서 풀어보자! 라는 생각이었다.
n까지 숫자가 있으면 1~n까지 값을 n에 나누어보고 나누어지면 해당 값은 약수이므로 그 값을 더하자!
def solution(n):
answer = 0
for i in range(1, n+1):
if n % i == 0:
answer += i
return answer
통과!
두번째 코드
사실 위 코드도 맞게 돌아가는데, 이전에 용량 문제로 돌아가지 않는 문제가 있었다.
그때 해결했던 방법을 이용해서 문제를 풀어보려고 한다!
1~n까지 값을 모두 나누어보는 것이 아니라 sqrt(n)까지만 나누어보고 약수는 하나가 존재하면 다른 하나가 존재한다고 생각하면 되므로 그 값을 구해 더하는 것이다.
import math
def solution(n):
answer = 0
for i in range(1, int(math.sqrt(n)+1)):
if i**2 == n:
answer += i
elif n % i == 0:
answer += i
answer += n//i
return answer
통과
이전에 사용해본 것들을 기억해서 사용한 나자신 칭잔해!
링크
programmers/프로그래머스/1/12928. 약수의 합 at main · ornni/programmers
repository for recording Programmers Algorithm problem solving - ornni/programmers
github.com