크롬80버전 결제 이슈, 영카트5 주요패치 확인!

PHP로 합집합, 교집합, 여집합 구하기 > 개발자팁

컨텐츠몰 10% 할인 기간연장!
그누보드5
영카트5
매뉴얼
Q & A
제작의뢰
컨텐츠몰
부가서비스
소모임
커뮤니티

개발자팁

개발과 관련된 유용한 정보를 공유하세요.
질문은 QA에서 해주시기 바랍니다.

PHP로 합집합, 교집합, 여집합 구하기 정보

PHP PHP로 합집합, 교집합, 여집합 구하기

본문

집합처리는 데이타 처리시 빈번히 알고리즘 중에 하나입니다.

QnA에 답변한 내용이 아까워서 공유합니다.

 

만약 $a = "1,2,3"이있고

$b = "2,3,4" 가 있다면

 

2와 3을 제거하고 1,4만 남게 하려면 어떻게 해야할까요?

 

배열 $a, $b 의 여집합을 구하는 문제입니다. 

php함수중에

array_diff 는 차집합

array_intersect 는 교집합 입니다.

php에 여집합 함수는 없습니다.  집합 연산을 통해서 구할수 있습니다.

A, B의 여집합은 (A - B) + (B - A) 입니다.(아마도 맞을겁니다.)

 


$arr_a = explode(",", $a);
$arr_b = explode(",", $c);
 
//여집합 
$arr_c = array_merge(
            array_diff($arr_a, $arr_b),         // 1
            array_diff($arr_b, $arr_a)          //4
        );                              
 //  $arr_c = 1  4
 
echo implode(",", $arr_c);
//result = 1,4
 
//교집합은
$arr_d = array_intersect($arr_a, $arr_b);  //2, 3
 
//합집합은
$arr_e = array_merge(
            array_intersect($arr_a, $arr_b),   //2, 3
            array_diff($arr_a, $arr_b),         // 1
            array_diff($arr_b, $arr_a)          //4
        );   //2, 3, 1, 4 

  

 

 

 

추천2

댓글 전체

파이썬은 수학함수가 많이 준비되어 있는 언어니까,,, 이미 있을거 같네요. (numpy에 있는것 같음)
위의 방법도 직관적입니다.
앗 위 댓글에서 '차집합'이 아니라 '여집합'인데 제가 잘못 적었네요.

파이썬에 수학이나 문자열 조작과 관련된 함수 또는 메서드가 많은 것 같아요~
set 자료형에 대해서 교집합을 위한 .intersection() 메서드, 합집합을 위한 .union() 메서드, 차집합을 위한 .difference() 메서드가 존재합니다.
말씀하신 numpy는 제가 사용빈도가 낮아서 관련된 함수로서 어떤 것이 있는지 잘 모르겠네요 ㅠㅠ

그럼 편안한 밤 되시고 안녕히 주무세요!
전체 5,022
개발자팁 내용 검색

회원로그인

(주)에스아이알소프트 (06253) 서울특별시 강남구 도곡로1길 14, 6층 624호 (역삼동, 삼일프라자) 대표메일:admin@sir.kr
사업자등록번호:217-81-36347 대표:홍석명 통신판매업신고번호:2014-서울강남-02098호 개인정보보호책임자:이총

© SIRSOFT