Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

주어진 소수 배열에서 중복을 제거하는 프로그램을 C++로 작성하십시오.

<시간/>

모든 소수로 구성된 N 크기의 배열이 주어졌다고 가정해 봅시다. 작업은 주어진 배열에서 중복을 찾아 제거하는 것입니다. 예를 들어,

입력-1 -

N = 8
arr[ ] = { 2 ,2 ,2 ,3 ,3 ,3 ,5 ,7 }

출력 -

2 3 5 7

설명 − 주어진 소수 배열에서 '2'와 '3'의 일부 중복이 있습니다. 중복을 제거하면 출력은 2 3 5 7이 됩니다.

입력-2 -

N = 5
arr[ ] = { 3, 2, 7, 5, 5}

출력 -

3 2 7 5

설명 − 주어진 소수 배열에서 '5'의 일부 중복이 중복을 제거한 후 출력은 3 2 7 5가 됩니다.

이 문제를 해결하기 위한 접근 방식

이 문제에서는 배열에서 방문했는지 여부를 확인하는 숫자 배열을 사용합니다. 배열 요소를 방문하지 않으면 '1'로 만들고 결과에 삽입하지 않으면 요소를 삽입할 필요가 없습니다.

  • 요소가 있는 벡터 배열의 N 크기를 입력합니다.

  • 배열과 그 크기를 입력으로 사용하는 정수 벡터 배열 removeDuplicates(vector&arr, int size)입니다.

  • 현재 요소를 방문했는지 여부를 감지하고 확인하는 데 사용하는 정수 배열입니다. 삽입하는 동안 배열에서 요소(즉, '1')를 방문하면 해당 요소를 벡터로 푸시하지 않습니다. 그렇지 않으면 벡터 배열의 요소를 푸시합니다.

  • 결과 벡터에는 고유한 소수만 포함됩니다.

예시

#include<bits/stdc++.h>
using namespace std;
vector<int>removeDuplicates(vector<int>&arr, int size){
   int num[100] ={0};
   vector<int> vec;
   for(int i=0;i<size;i++){
      if(num[arr[i]] ==0){
         num[arr[i]]=1;
         vec.push_back(arr[i]);
      }
   }
   return vec;
}
int main(){
   int N= 8;
   vector<int>arr={2,2,2,3,3,3,5,7};
   vector<int>answer= removeDuplicates(arr,N);
   for(int i=0;i<answer.size();i++){
      cout<<removeDuplicates(arr,N)<<endl;
   }
   return 0;
}

출력

위의 코드를 실행하면 출력이 다음과 같이 인쇄됩니다.

2 3 5 7

중복을 제거하면 출력은 2 3 5 7이 됩니다.