본문 바로가기
개발/알고리즘

[C#] 부분 집합 유무 확인

by MNMNMNMN 2020. 8. 20.
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

댓글