본문 바로가기
코딩테스트/C언어

[Level1] 약수의 합 답안 및 풀이

by SRin23 2021. 6. 8.

◇ 문제 설명

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

 

◇ 제한 조건

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

 

◇ 입출력 예시

n return
12 28
5 6

 

◇ 예시 설명

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

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

 

◇ 초기 내용

※ [출처] 프로그래머스-코딩테스트 연습-문제명

※ 초기 내용을 참고하여 문제에 맞는 코드를 작성하세요.

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

int solution(int n) {
    int answer = 0;
    return answer;
}

 


◇ 답안

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

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

 

◇ 답안 힌트

    ▶ n이 어떤값으로 나누어 떨어질때, 어떤값이 n의 약수가 됩니다.

    ▶ 약수는 무조건 n보다 작거나 같습니다.

 

◇ 답안 풀이

(※ 실행 흐름 순으로 해석됩니다.)

int solution(int n) {
    int answer = 0;

    //0은 약수로 들어가지 않음 주의!!

    //1~n까지 for반복문을 돌림
    for(int i = 1; i<=n; i++){

        // n/i에서 n이 딱 나누어 떨어진다면 i는 n의 약수이므로 answer에 i를 더함

        if(n%i==0){
            answer += i;
        }
    }
    return answer;
}

 

 

◇ 실행결과

약수의 합 실행결과

 

 

◇ 출처

https://programmers.co.kr/learn/challenges

 

코딩테스트 연습

기초부터 차근차근, 직접 코드를 작성해 보세요.

programmers.co.kr

 

댓글