소개
순열과 조합은 서로 다른 두 가지 수학적 개념입니다. 순열 (Permutation) 은 특정 순서로 객체를 배열하는 것을 의미합니다. 조합 (Combination) 은 선택된 객체의 순서에 관계없이 집합에서 객체를 선택하는 것을 의미합니다. 이 랩에서는 C 언어를 사용하여 순열과 조합을 계산하는 방법을 배웁니다.
순열과 조합은 서로 다른 두 가지 수학적 개념입니다. 순열 (Permutation) 은 특정 순서로 객체를 배열하는 것을 의미합니다. 조합 (Combination) 은 선택된 객체의 순서에 관계없이 집합에서 객체를 선택하는 것을 의미합니다. 이 랩에서는 C 언어를 사용하여 순열과 조합을 계산하는 방법을 배웁니다.
먼저, ~/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);
}
}
이 함수는 정수를 인수로 받아 해당 팩토리얼을 반환합니다.
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 의 팩토리얼의 곱으로 나누어 계산합니다.
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) 도 작성했습니다. 위 단계를 따르면 사용자 입력에 대한 순열과 조합을 계산할 수 있습니다.