C 언어로 순열과 조합 계산하기

CBeginner
지금 연습하기

소개

순열과 조합은 서로 다른 두 가지 수학적 개념입니다. 순열 (Permutation) 은 특정 순서로 객체를 배열하는 것을 의미합니다. 조합 (Combination) 은 선택된 객체의 순서에 관계없이 집합에서 객체를 선택하는 것을 의미합니다. 이 랩에서는 C 언어를 사용하여 순열과 조합을 계산하는 방법을 배웁니다.

main 함수 작성

먼저, ~/project/ 디렉토리에 main.c라는 새 파일을 생성하고 헤더 파일을 포함하고 main 함수를 초기화하는 코드를 작성합니다.

#include <stdio.h>

int main() {
    printf("C 언어에서의 순열과 조합\n\n");
    // 순열 및 조합 계산을 위한 코드가 여기에 추가될 것입니다.
    return 0;
}

팩토리얼 함수 작성

순열과 조합을 계산하기 위해, 우리는 숫자의 팩토리얼 (factorial) 을 계산해야 합니다. 팩토리얼은 재귀적으로 계산할 수 있습니다. main 함수 외부에서 다음 코드를 추가합니다.

long factorial(int num) {
    if (num == 0) {
        return 1;
    }
    else {
        return num * factorial(num - 1);
    }
}

이 함수는 정수를 인수로 받아 해당 팩토리얼을 반환합니다.

nCr 계산 함수 작성

main 함수 외부에서 nCr 을 계산하기 위해 다음 함수를 추가합니다.

long nCr(int n, int r) {
    if (n < r) {
        return -1;
    }
    else {
        return factorial(n) / (factorial(r) * factorial(n - r));
    }
}

이 함수는 두 개의 정수 n 과 r 을 인수로 받아 nCr 값을 반환합니다. nCr 값은 n 의 팩토리얼을 r 의 팩토리얼과 n-r 의 팩토리얼의 곱으로 나누어 계산합니다.

nPr 계산 함수 작성

main 함수 외부에서 nPr 을 계산하기 위해 다음 함수를 추가합니다.

long nPr(int n, int r) {
    if (n < r) {
        return -1;
    }
    else {
        return factorial(n) / factorial(n - r);
    }
}

이 함수는 두 개의 정수 n 과 r 을 인수로 받아 nPr 값을 반환합니다. nPr 값은 n 의 팩토리얼을 n-r 의 팩토리얼로 나누어 계산합니다.

프로그램 드라이버 코드 작성

main 함수 내부에 다음 코드를 추가하여 입력을 받고 결과를 표시합니다.

int main()
{
    int n, r;

    printf("Enter the value of n:");
    scanf("%d", &n);
    printf("Enter the value of r:");
    scanf("%d", &r);

    printf("nCr is %ld\n", nCr(n, r));
    printf("nPr is %ld\n", nPr(n, r));

    return 0;
}

이 코드는 사용자로부터 n 과 r 에 대한 입력 값을 받아 nCr() 및 nPr() 함수를 호출하여 각 값을 계산한 다음 표시합니다.

전체 코드

최종 코드는 다음과 같습니다.

#include <stdio.h>

long factorial(int num) {
    if (num == 0) {
        return 1;
    }
    else {
        return num * factorial(num - 1);
    }
}

long nCr(int n, int r) {
    if (n < r) {
        return -1;
    }
    else {
        return factorial(n) / (factorial(r) * factorial(n - r));
    }
}

long nPr(int n, int r) {
    if (n < r) {
        return -1;
    }
    else {
        return factorial(n) / factorial(n - r);
    }
}

int main()
{
    int n, r;

    printf("Enter the value of n:");
    scanf("%d", &n);
    printf("\nEnter the value of r:");
    scanf("%d", &r);

    printf("nCr is %ld\n", nCr(n, r));
    printf("nPr is %ld\n", nPr(n, r));

    return 0;
}

요약

이 랩에서는 C 언어로 순열 (permutation) 과 조합 (combination) 을 계산하는 방법을 배웠습니다. 팩토리얼 (factorial), nCr, nPr 을 계산하는 함수를 작성했습니다. 또한 프로그램의 드라이버 코드 (driver code) 도 작성했습니다. 위 단계를 따르면 사용자 입력에 대한 순열과 조합을 계산할 수 있습니다.