더 많은 배수 구하기

Yun Young Choi·2022년 6월 22일

CodingTest-C

목록 보기
4/15
post-thumbnail


3의 배수와 5의 배수 중 어떤 수가 더 많은지 알아보기


main 함수 / 설명

int main() {
    int arr[10] = {2, 3, 6, 9, 12, 15, 10, 20, 22, 25};
    int arr_len = 10;
    char* ret = solution(arr, arr_len);

    printf("solution 함수의 반환 값은 %s 입니다.\n", ret);
}
  1. 길이가 10인 arr의 배열에 숫자 10개 할당
  2. arr_len을 10으로 할당
  3. 캐릭터형 변수 ret에 arr, arr_len을 매개변수로 갖는 solution 함수 할당

func_a 함수 / 설명

int func_a(int arr[], int arr_len){
    int count = 0;
    for(int i = 0; i < arr_len; ++i)
        if (arr[i] % 5 == 0)
            count += 1;
    return count;
}
  1. arr과 arr_len을 매개변수로 받는 func_a 함수
  2. 5의 배수를 count할 변수를 0으로 초기화
  3. arr_len의 길이만큼 arr[i]번째들이 5의 배수인지 아닌지 판단 반복
  4. 만약 5의 배수이면 count++;
  5. count 반환

func_b 함수 / 설명

문자형 함수 : 문자형 함수는 문자 데이터를 매개 변수로 받아들여서 문자나 숫자 값의 결과를 돌려주는 함수
char* func_b(int three, int five){
    if (three > five)
        return "three";
    else if (three < five)
        return "five";
    else
        return "same";
}
  1. three, five 정수형을 매개변수로 받는 문자형 func_b 함수
  2. 만약 3의 배수가 더 많다면 three 반환
  3. 만약 5의 배수가 더 많다면 five 반환
  4. 아무것도 아니라면 same 반환

func_c 함수 / 설명

int func_c(int arr[], int arr_len){
    int count = 0;
    for(int i = 0; i < arr_len; ++i)
        if (arr[i] % 3 == 0)
            count += 1;
    return count;
}
  1. arr과 arr_len을 매개변수로 받는 func_c 함수
  2. 3의 배수를 count할 변수를 0으로 초기화
  3. arr_len의 길이만큼 arr[i]번째들이 3의 배수인지 아닌지 판단 반복
  4. 만약 3의 배수이면 count++;
  5. count 반환

solution 함수 / 설명

char* solution(int arr[], int arr_len) {
    int count_three = func_(); //빈칸
    int count_five = func_(); //빈칸
    char* answer = func_(); //빈칸
    return answer;
}
  1. arr과 arr_len을 매개변수로 받는 문자형 함수 solution
  2. count_three에 3의 배수를 세는 func_c 함수 할당
  3. count_five에 5의 배수를 세는 func_a 함수 할당
  4. answer에 더 많은 배수를 세는 func_b 함수에 count_three, count_five 매개변수로 넘기기

solution 완성

char* solution(int arr[], int arr_len) {
    int count_three = func_c(arr, arr_len); //빈칸
    int count_five = func_a(arr, arr_len); //빈칸
    char* answer = func_b(count_three, count_five); //빈칸
    return answer;
}

전체 코드

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

int func_a(int arr[], int arr_len){
    int count = 0;
    for(int i = 0; i < arr_len; ++i)
        if (arr[i] % 5 == 0)
            count += 1;
    return count;
}

char* func_b(int three, int five){
    if (three > five)
        return "three";
    else if (three < five)
        return "five";
    else
        return "same";
}

int func_c(int arr[], int arr_len){
    int count = 0;
    for(int i = 0; i < arr_len; ++i)
        if (arr[i] % 3 == 0)
            count += 1;
    return count;
}

char* solution(int arr[], int arr_len) {
    int count_three = func_c(arr, arr_len);
    int count_five = func_a(arr, arr_len);
    char* answer = func_b(count_three, count_five);
    return answer;
}

int main() {
    int arr[10] = {2, 3, 6, 9, 12, 15, 10, 20, 22, 25};
    int arr_len = 10;
    char* ret = solution(arr, arr_len);

    printf("solution 함수의 반환 값은 %s 입니다.\n", ret);
}

실행 결과

profile
안냥하세요

0개의 댓글