[프로그래머스] Level1 - 약수의 합

ERror.ASER·2020년 7월 20일
0

프로그래머스

목록 보기
6/54
post-thumbnail

프로그래머스(Level1) - 약수의 합


문제 설명

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

제한사항

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

입출력 예

입출력 예 #1

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

입출력 예 #2

5의 약수는 1, 5입니다. 이를 모두 더하면 6입니다.


풀이

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

주어진 정수 n과 임의의 숫자 i를 나누었을 때, 나머지가 0이면 i는 약수인 것을 알 수 있다. 그래서 i를 1부터 n까지 될때까지 (1과 자기자신은 항상 약수이기 때문이다) 1씩 증가시키면서 n % 1이 0인지 확인한다. 만약 0이라면 answer에 해당 수(i)를 더해준다. O(n)으로 문제를 풀 수 있다.

profile
지우의 블로그

0개의 댓글