코딩테스트

프로그래머스_1단계_약수의 합 C++

코딩기계 2024. 4. 23. 00:59

 

문제풀이:

첫번째풀이는 n이클경우 비효율적일수있다 2번째방법으로 구해보자

#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;
}

 

 

2.

#include <string>
#include <vector>
#include <cmath>

using namespace std;

int solution(int n) {
    int answer = 0;
    
    // 1부터 n의 제곱근까지만 순회하며 약수를 구함
    for(int i = 1; i <= sqrt(n); i++) {
        if(n % i == 0) {
            answer += i; // 약수
            if(i != n / i) {
                answer += n / i; // 대칭적인 약수
            }
        }
    }
    
    return answer;
}