중복 검사 알고리즘 - jungbog geomsa algolijeum

#pragma warning(disable:4996)

#include <stdio.h>

/* 문제 5-2 */

int main() {

int A[100];//A 원소 값들을 입력받는 배열 선언

int B[100];//B 원소 값들을 입력받는 배열 선언

int sum_ab[200]; // A와 B 원소들을 합친 배열

int a = 0;

int samecntA = 0, samecntB = 0;

int j = 0;

while (1) {// A배열에 원소들을 담습니다

scanf("%d"&A[a]);

if (A[a] < 0break;

a++;//A배열의 크기를 알기 위해 변수 a를 사용합니다

}

int b = 0;

while (1) {// B배열에 원소들을 담습니다

scanf("%d"&B[b]);

if (B[b] < 0break;

b++;//B배열의 크기를 알기 위해 변수 b를 사용합니다

}

int k = 0;

//중복검사 알고리즘 1

for (int i = 0; i < a; i++) { // A배열에 대하여 중복이 없는 것들만 sum_ab배열에 담습니다.

int p = 0;

//중복검사파트

while (p < i && A[p] != A[i]) p++;

if (p == i) {//중복이 없다면

sum_ab[k] = A[i];

k++;

}

}

//중복검사 알고리즘2

for (int i = 0; i < b; i++) {// B배열에 대하여 중복이 없는 것들만 sum_ab배열에 담습니다.

samecntB = 0;

for (int p = 0; p < k; p++) {

if (sum_ab[p] == B[i]) samecntB++;// sum_ab배열의 k인덱스 이전에 중복이 있으면 카운트합니다.

}

if (samecntB == 0) {//중복이 없다면 

sum_ab[k] = B[i];// sum_ab배열에 A값을 추가합니다.

k++;// 기존의 k인덱스에 값을 넣었으므로 1 추가합니다.

}

}

// 삽입정렬알고리즘을 통해 오름차순 정렬하는 과정입니다

for (int y = 0; y < k - 1; y++) {

= y;

while (j >= 0 && sum_ab[j] > sum_ab[j + 1]) {// j가 j+1보다 크다면 반복합니다

int temp = sum_ab[j];

sum_ab[j] = sum_ab[j + 1];

sum_ab[j + 1= temp;// j와 j+1을 바꾸어줍니다.

j--// j 인덱스를 줄입니다. 

}

}

for (int y = 0; y < k; y++) {

printf("%d ", sum_ab[y]);

}// 완성된 배열 출력파트입니다.

}