반응형

문제 설명

정수 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입니다.


solution.c

static int *num_divisor;

int GetDivisorCount(int num)
{
    int divisor_count = 0;

    if (num <= 0)
        return 0;

    for (int i = 1; i <= num / 2; i++)
        if (num % i == 0)
            divisor_count++;

    return divisor_count + 1;
}

int *GetDivisor(int num)
{
    int divisor_count = 0;
    num_divisor = (int *)malloc(GetDivisorCount(num) * sizeof(int));

    if (num <= 0)
        return 0;

    for (int i = 1; i <= num; i++)
    {
        if (num % i == 0)
            num_divisor[divisor_count++] = i;
    }

    return num_divisor;
}

int solution(int n)
{
    int sum = 0;
    int *n_divisor = GetDivisor(n);

    for (int i = 0; i < GetDivisorCount(n); i++)
    {
        sum += n_divisor[i];
    }

    free(num_divisor);

    return sum;
}

분할 구현 습관 들이려고 하고 있는데 여기서 분할 구현의 단점(?)이 보이네

main 함수 안에 구현하면 소스 몇줄 안되는데 분할하려고 하니 많이 늘어나네

반응형
반응형

문제 설명

정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요.

 

제한 사항

  • arr은 길이 1 이상, 100 이하인 배열입니다.
  • arr의 원소는 -10,000 이상 10,000 이하인 정수입니다.

입출력 예

arr return
[1,2,3,4] 2.5
[5,5] 5

solution.c

double GetAverage(int array[], size_t array_len)
{
    double sum = 0;

    for (int i = 0; i < array_len; i++)
        sum += array[i];

    return sum / array_len;
}

// arr_len은 배열 arr의 길이입니다.
double solution(int arr[], size_t arr_len)
{
    return GetAverage(arr, arr_len);
}

 

반응형
반응형

문제 설명

자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.

예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.

 

제한 사항

  • N의 범위 : 100,000,000 이하의 자연수

입출력 예

N answer
123 6
987 24

 

입출력 예 설명

입출력 예 #1

문제의 예시와 같습니다.

 

입출력 예 #2

9 + 8 + 7 = 24이므로 24를 return 하면 됩니다.


solution.c

int GetFirstDigit(int num)
{
    return num % 10;
}

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

    while (n)
    {
        answer += GetFirstDigit(n);
        n /= 10;
    }

    return answer;
}

 

반응형
반응형

문제 설명

정수 num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 반환하는 함수, solution을 완성해주세요.

 

제한 조건

  • num은 int 범위의 정수입니다.
  • 0은 짝수입니다.

입출력 예

num return
3 "Odd"
4 "Even"

 


solution.c

int GetRightEvenNum(int num)
{
    if (num %2 == 0)
        return 1;

    return 0;
}

char *solution(int num)
{
    if (GetRightEvenNum(num))
        return "Even";
    else
        return "Odd";
}

 

반응형

+ Recent posts