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

/*
 * in 배열의 앞에서부터 n개의 값을 out 배열에 복사한 후
 * out 배열을 오름차순으로 정렬한다.
 *
 * 주의: 원본 배열 in의 값은 변경하지 않는다.
 */

void copyAndSort(int in[], int n, int out[])
{
    int i, j, temp;

    /* 원본 배열을 out 배열에 복사 */
    for (i = 0; i < n; i++) {
        out[i] = in[i];
    }

    /* out 배열을 오름차순으로 정렬: 버블 정렬 */
    for (i = 0; i < n - 1; i++) {
        for (j = 0; j < n - 1 - i; j++) {
            if (out[j] > out[j + 1]) {
                temp = out[j];
                out[j] = out[j + 1];
                out[j + 1] = temp;
            }
        }
    }
}

int compare(int a[], int b[], int n){
    int i, diff, *p, *q;
    if(n<=0) return 0;
    p = malloc(n*sizeof(int));
    q = malloc(n*sizeof(int));
    copyAndSort(a,n,p);
    copyAndSort(b,n,q);

    for(diff=i=0; i<n; i++)
        if(p[i] != q[i]){
            diff = p[i] - q[i];
            break;
        }
    free(p), free(q);
    return diff;
}

int uniques(int a[], int n){
    int i,count = 0;
    if(n>0){
        int *p = malloc(n*sizeof(int));
        copyAndSort(a,n,p);
        /* count=0은 사용하지않고, count++로 인해 1증가된 값부터 사용  */
        for(count++, i=1; i<n; i++)
            if(p[i-1]!= p[i])
                count++;
        free(p);
    }
    return count;
}

int main() {
    int a[] = {7,3,3,8,2,7,3,3,5,2};
    int b[] = {3,8,2,5,7,3};
    int c[] = {2,3,7,3,7,5,3,3,3,8};

    printf("%d %d\n", compare(a,b,6), uniques(a,10));
    printf("%d\n", compare(a,c,10));
}

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: