프로그래머스(Level1) - 약수의 합
정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.
12의 약수는 1, 2, 3, 4, 6, 12입니다. 이를 모두 더하면 28입니다.
5의 약수는 1, 5입니다. 이를 모두 더하면 6입니다.
#include <string>
#include <vector>
using namespace std;
int solution(int n) {
int answer = 0;
for(int i=1; i<=n;i++)
if(n % i == 0) answer += i;
return answer;
}
주어진 정수 n과 임의의 숫자 i를 나누었을 때, 나머지가 0이면 i는 약수인 것을 알 수 있다. 그래서 i를 1부터 n까지 될때까지 (1과 자기자신은 항상 약수이기 때문이다) 1씩 증가시키면서 n % 1이 0인지 확인한다. 만약 0이라면 answer에 해당 수(i)를 더해준다. O(n)으로 문제를 풀 수 있다.