문제
정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.
풀이
#include <string>
#include <vector>
#include <cmath>
using namespace std;
int solution(int n) {
int answer = 0;
if(pow((int)sqrt(n),2) == n) answer+= (int)sqrt(n);
for(int i=1; i<sqrt(n); i++){
if(n%i==0){
answer += i;
answer += n/i;
}
}
return answer;
}
다른 사람 풀이
#include<iostream>
#include<cmath>
using namespace std;
int sumDivisor(int n)
{
int sum = 0;
for(int i=1; i<=sqrt(n); i++) if(n%i==0) { sum += i; if(n!=i*i) sum += n/i; }
return sum;
}
int main()
{
int testCase = 12;
int testAnswer = sumDivisor(testCase);
cout<<testAnswer;
}
if(n!=i*i)를 사용해 제곱수를 판별해주었다.
'Algorithm > Programers - C++' 카테고리의 다른 글
[프로그래머스]시저암호 (0) | 2022.02.20 |
---|---|
[프로그래머스] 문자열을 정수로 바꾸기 / stoi (0) | 2022.02.20 |
[프로그래머스]소수 찾기 / 에라토스테네스의 체 알고리즘 (0) | 2022.02.17 |
[프로그래머스]수박수박수박수박수박수? (0) | 2022.02.15 |
[프로그래머스]문자열 다루기 기본/isdigit (0) | 2022.02.14 |