Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 프로그램으로 배열에서 고유한(중복 없는) 요소 찾기

문제 개요

배열에서 중복되지 않는 고유한 요소를 찾으려면 두 개의 루프를 사용합니다. 외부 루프는 현재 요소를 하나씩 선택하고, 내부 루프는 해당 요소와 같은 값이 배열의 다른 위치에 이미 존재하는지 검사합니다.

예시

다음 예시를 살펴보겠습니다.

15, 15, 16, 15, 13, 15

위 배열에서 중복되지 않는 요소는 1613입니다.

알고리즘

배열에서 고유한(중복되지 않는) 요소를 찾는 알고리즘은 다음과 같습니다.

  1. 배열을 선언하고, 실행 시점에 사용자로부터 배열 요소를 입력받습니다.
  2. 배열을 순회하면서 현재 요소가 배열의 다른 위치에 이미 존재하는지 확인합니다.
  3. 이미 존재한다면 다음 요소로 이동하여 계속 진행합니다.
  4. 존재하지 않는다면 해당 요소를 중복되지 않는 요소로 출력합니다.

동작 원리

내부 루프가 배열의 끝까지(j == n) 완료되었다는 것은 현재 요소와 동일한 값이 배열에 없다는 의미이므로, 그 요소를 고유한 요소로 출력합니다. 이 방법의 시간 복잡도는 O(n²)으로, 작은 크기의 배열에 적합합니다.

C 프로그램 예제

다음은 배열에서 고유한 요소를 찾는 C 프로그램입니다.

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

int uniqueEle(int array[], int n){
    int i, j;
    int count = 1;
    for(i = 0; i < n; i++){
        for(j = 0; j < n; j++){
            if(array[i] == array[j] && i != j)
                break;
        }
        if(j == n){
            printf("\nunique elements in an array is [%d] : %d \n", count, array[i]);
            ++count;
        }
    }
    return -1;
}

int main(){
    int n, i;
    printf("\nEnter no: of elements : ");
    scanf("%d", &n);
    int array[n];
    printf("\nenter the array elements : ");
    for(i = 0; i < n; i++){
        scanf("%d", &array[i]);
    }
    uniqueEle(array, n);
    return 0;
}

실행 결과

위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.

Run 1:
Enter no: of elements: 5
enter the array elements :
11
11
15
16
13
unique elements in an array is [1] : 15
unique elements in an array is [2] : 16
unique elements in an array is [3] : 13

Run 2:
Enter no: of elements: 4
enter the array elements :
11
12
11
11
unique elements in an array is [1] : 12