Code KATA/알고리즘 코드카타

[2024.12.15] 약수의 합

iiblueblue 2024. 12. 16. 17:03

문제 설명

정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.

 

 

제한사항

  • n은 0이상 300이하인 정수입니다.

 

 

입출력 예

n return 설명
12 28 12의 약수는 1, 2, 3, 4, 6, 12입니다.
5 6 5의 약수는 1, 5입니다. 이를 모두 더하면 6입니다.

 

 

문제 풀이

풀이 언어 : C++

#include <string>
#include <vector>

using namespace std;

int solution(int n) {
    int answer = 0;
    for(int i=1; i<n+1; i++)
    {
        if(n%i==0)
        {
            answer+=i;
        }
    }
    return answer;
}

나누기 나머지를 사용해야 한다는 것을 알았기 때문에 금방 풀 수 있었다.

n이 12일 때를 예로 들어보자. 간단히 12를 1부터 12까지의 수로 나누어 나머지를 살펴본다고 생각하면 된다.

12%1=0

12%2=0

12%3=0

...

12%5=2

12%6=0

12%7=5

...

이렇게 나머지가 0인 수들은 모두 약수라고 할 수 있다.

 

따라서 for문을 이용하여 i를 1부터 n+1까지하여 반복하고 n을 i로 나누어 나머지가 0인 경우만 answer에 i를 더해주면 된다.

 

 

문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/12928

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr