코딩테스트
프로그래머스_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;
}