문제 설명
정수 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
'Code KATA > 알고리즘 코드카타' 카테고리의 다른 글
[2024.12.17] x만큼 간격이 있는 n개의 숫자 (0) | 2024.12.17 |
---|---|
[2024.12.16] 나머지가 1이 되는 수 찾기 (1) | 2024.12.16 |
[2024.12.14] 자릿수 더하기 (0) | 2024.12.16 |
[2024.12.13] 평균 구하기 (0) | 2024.12.13 |
[2024.12.12] 짝수와 홀수 (0) | 2024.12.12 |