#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] < 0) break; a++;//A배열의 크기를 알기 위해 변수 a를 사용합니다 } int b = 0; while (1) {// B배열에 원소들을 담습니다 scanf("%d", &B[b]); if (B[b] < 0) break; 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++) { j = 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]); }// 완성된 배열 출력파트입니다. } |