C_C++

(C언어) 합집합 구하기

고니자니 2023. 5. 28. 17:45
반응형

다음 코드는 C언어로 합집합(union)을 구하는 코드입니다.

#include <stdio.h>

#define MAX_SIZE 100

void printArray(int arr[], int size) {
    for (int i = 0; i < size; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
}

int unionArrays(int arr1[], int size1, int arr2[], int size2, int result[]) {
    int i, j, k;

    // arr1의 요소들을 결과 배열에 복사
    for (i = 0; i < size1; i++) {
        result[i] = arr1[i];
    }
    k = size1;  // 결과 배열의 마지막 인덱스

    // arr2의 요소들을 결과 배열에 추가 (중복 요소는 제외)
    for (i = 0; i < size2; i++) {
        int duplicate = 0;
        for (j = 0; j < size1; j++) {
            if (arr2[i] == arr1[j]) {
                duplicate = 1;
                break;
            }
        }
        if (!duplicate) {
            result[k] = arr2[i];
            k++;
        }
    }
    return k;
}

int main() {
    int arr1[] = { 1, 2, 3, 4, 5 };
    int size1 = sizeof(arr1) / sizeof(arr1[0]);

    int arr2[] = { 4, 5, 6, 7, 8 };
    int size2 = sizeof(arr2) / sizeof(arr2[0]);

    int result[MAX_SIZE];

    int n = unionArrays(arr1, size1, arr2, size2, result);

    printf("A: ");
    printArray(arr1, size1);
    
    printf("B: ");
    printArray(arr2, size2);

    printf("A+B: ");
    printArray(result, n);

    return 0;
}

합집합

반응형