본문 바로가기
지난 학기들의 기록/C 기초

[C실습] 배열 예제- 배열의 원소 중복 검사하기

by 아메리카노와떡볶이 2020. 5. 31.
728x90

 

이번 포스트에서 다룰 예제 유형은 배열의 중복된 숫자 검사입니다. 간단한 알고리즘 2가지를 통해 구현해보았습니다.

바로 코드를 참고해주세요.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#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++) {
        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]);
    }// 완성된 배열 출력파트입니다.
}
cs

 

 

 

728x90

댓글