「 배열·반복문을 활용한 합집합, 교집합, 차집합 출력 」
언어를 공부하다보면 배열 및 반복문 파트에서 자주 출제되는 예제중 하나가 합집합, 교집합, 차집합을 구하는 프로그램입니다.
이러한 예제는 기본적인 입·출력을 바탕으로 배열에 대한 이해와 반복문, 조건문 등을 모두 활용해 볼 수 있는 좋은 예제입니다.
초보자도 쉽게 알 수 있도록 직관적이고 쉬운 코드로 작성하였으니, 참고하여 작성 해 보시기 바랍니다.
「 예제 문제 」
Q. 5개의 정수를 두 번 입력하여 A[5]와 B[5]에 저장한 후, A와 B의 합집합(A∪B), 교집 합(A∩B), 차집합(A-B)을 출력. 단, 동일한 수가 A에 여러 번 입력되지는 않음. (B도 마찬가지)
「 기본적인 변수선언 및 배열 입력 」
#include <stdio.h>
void main()
{
int A[5];
int B[5];
int ans[10];
int i;
int j=0;
int k = 5;
printf("A 집합의 원소 5개 입력: ");
for (i = 0; i < 5; i++)
scanf_s("%d", &A[i]);
printf("B 집합의 원소 5개 입력: ");
for (i = 0; i < 5; i++)
scanf_s("%d", &B[i]);
합집합, 차집합, 교집합을 구할 A,B 두 배열을 선언하고, 이에 들어갈 원소 5개를 입력 받습니다.
「 합집합 」
//합집합
for (i = 0; i < 5; i++)
{
ans[i] = A[i];
}
for (j = 0; j < 5; j++)
{
for (i = 0; i < 5; i++)
{
if (B[j] == A[i])
break;
if (i == 4)
{
ans[k] = B[j];
k++;
}
}
}
printf("A와B의 합집합: ");
for (i = 0;i < k; i++)
printf("%d ", ans[i]);
printf("\n");
A와B 집합에 대하여 반복문을 통해 중복 된 값은 한 번만 출력되도록 코드를 구성하여 합집합을 구합니다.
「 교집합」
//교집합
k = 0;
for (i = 0; i < 5; i++)
{
for (j = 0; j < 5; j++)
{
if (A[i] == B[j])
{
ans[k] = A[i];
k++;
}
}
}
printf("A와B의 교집합: ");
for (i = 0; i < k; i++)
printf("%d ", ans[i]);
printf("\n");
A와B 집합에 대하여 반복문을 통해 중복 된 값을 구한 뒤 출력되도록 코드를 구성하여 교집합을 출력합니다.
「 차집합 」
//차집합
k = 0;
for (i = 0; i < 5; i++)
{
for (j = 0; j < 5; j++)
{
if (A[i] == B[j])
break;
if (j == 4)
{
ans[k] = A[i];
k++;
}
}
}
printf("A와B의 차집합: ");
for (i = 0; i < k; i++)
printf("%d ", ans[i]);
printf("\n");
}
A와B 집합에 대하여 반복문을 통해 중복된 값을 구한 뒤 차집합이 출력되도록 코드를 구성합니다.
아래는 해당 프로그램을 실행한 결과화면입니다.
직관적으로 이해하실 수 있도록 코드를 구성하였으니, 천천히 읽어보신 후 직접 코드를 짜보시기 바랍니다.
전체 코드파일은 첨부해 두겠습니다.
'IT > 기술(C,C++,JAVA)' 카테고리의 다른 글
지그비 프로토콜(Zigbee Protocol) 상세분석 - PHY Layer 편 (0) | 2020.10.15 |
---|---|
c언어로 두 개의 연결리스트를 하나의 정렬된 연결리스트로 합병하는 프로그램 (0) | 2020.09.27 |
Shell/Merge Sort(TopDown/BottomUp) 실행시간 비교(코드첨부) (0) | 2020.09.20 |
JAVA를 이용한 간단한 슬롯머신 게임 만들기 (0) | 2020.09.13 |
정말 쉬운 JAVA를 활용한 좌석 예약 프로그램 만들기 (3) | 2020.08.20 |
댓글