728x90
집합 A={....,};
집합 B={....,};
A가 B에 부분집합인지 확인하는 코드를 작성하시오.
1번 코드
bool isSubset(int[] A, int[] B)
{
if(A == null || B == null)
return false;
if (A.Length > B.Length) //불필요한 연산을 제거한다.
return false;
for (int i = 0,j = 0; i < A.Length; ++i)
{
for (; j < B.Length; ++j)
{
if (A[i] == B[j])
{
j++;
break;
}
}
if (j >= B.Length)
return false;
}
return true;
}
2번 코드
bool isSubset(int[] A,int[] B)
{
if(A == null || B == null)
return false;
if(A.Length > B.Length) //불필요한 연산을 제거한다.
return false;
int[] orderA = Sort(A); //정렬 함수가 있다는 가정
int[] orderB = Sort(B);
for(int i = 0, int j = 0; i < orderA.Length; ++i)
{
for(;j<orderB.Length; ++j) //이미 검사한 B집합의 값은 사하지 않는다.
{
if(orderA[i] == orderB[j])
{
break;
}
}
if(j>=orderB.Length)
return false;
}
return true;
}
728x90
반응형
'개발 > 알고리즘' 카테고리의 다른 글
전위,중위,후위 표기법 (0) | 2020.12.29 |
---|---|
[C#] 배열의 총합 (0) | 2020.08.20 |
댓글