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) 입니다.(아마도 맞을겁니다.)
[code]
$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
[/code]
댓글 5개
Innisfree
5년 전
명랑폐인 님 덕분에 항상 많이 배우고 있네요~
파이썬으로 한 번 작성해보았습니다 ^^
[http://sir.kr/data/editor/2001/aada0c6ce4d6abd313e6f910e9fb5a67_1578834950_7192.png]
파이썬으로 한 번 작성해보았습니다 ^^
[http://sir.kr/data/editor/2001/aada0c6ce4d6abd313e6f910e9fb5a67_1578834950_7192.png]
5년 전
파이썬은 수학함수가 많이 준비되어 있는 언어니까,,, 이미 있을거 같네요. (numpy에 있는것 같음)
위의 방법도 직관적입니다.
위의 방법도 직관적입니다.
Innisfree
5년 전
앗 위 댓글에서 '차집합'이 아니라 '여집합'인데 제가 잘못 적었네요.
파이썬에 수학이나 문자열 조작과 관련된 함수 또는 메서드가 많은 것 같아요~
set 자료형에 대해서 교집합을 위한 .intersection() 메서드, 합집합을 위한 .union() 메서드, 차집합을 위한 .difference() 메서드가 존재합니다.
말씀하신 numpy는 제가 사용빈도가 낮아서 관련된 함수로서 어떤 것이 있는지 잘 모르겠네요 ㅠㅠ
그럼 편안한 밤 되시고 안녕히 주무세요!
파이썬에 수학이나 문자열 조작과 관련된 함수 또는 메서드가 많은 것 같아요~
set 자료형에 대해서 교집합을 위한 .intersection() 메서드, 합집합을 위한 .union() 메서드, 차집합을 위한 .difference() 메서드가 존재합니다.
말씀하신 numpy는 제가 사용빈도가 낮아서 관련된 함수로서 어떤 것이 있는지 잘 모르겠네요 ㅠㅠ
그럼 편안한 밤 되시고 안녕히 주무세요!
5년 전
명량폐인님의 자료나 팁은 매우 신박함. 암튼 대단하십니다. 좋은 팁 감사드립니다. ^^
5년 전
감사합니다~
게시판 목록
개발자팁
개발과 관련된 유용한 정보를 공유하세요.
질문은 QA에서 해주시기 바랍니다.
질문은 QA에서 해주시기 바랍니다.
| 번호 | 분류 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|---|
| 5366 | 기타 |
nekoieye
|
1년 전 | 1107 | |
| 5365 | PHP | 1년 전 | 769 | ||
| 5364 | JavaScript | 1년 전 | 519 | ||
| 5363 | JavaScript | 1년 전 | 984 | ||
| 5362 | 1년 전 | 1222 | |||
| 5361 | JavaScript | 1년 전 | 1230 | ||
| 5360 |
그누보드이해하기
|
1년 전 | 769 | ||
| 5359 | 1년 전 | 1084 | |||
| 5358 | 1년 전 | 1089 | |||
| 5357 | 1년 전 | 802 | |||
| 5356 | 1년 전 | 363 | |||
| 5355 |
|
1년 전 | 581 | ||
| 5354 | 1년 전 | 1053 | |||
| 5353 |
|
1년 전 | 699 | ||
| 5352 |
|
1년 전 | 632 | ||
| 5351 | PHP | 1년 전 | 801 | ||
| 5350 | PHP | 1년 전 | 567 | ||
| 5349 | OS | 1년 전 | 642 | ||
| 5348 | 기타 | 1년 전 | 446 | ||
| 5347 | 기타 | 1년 전 | 624 | ||
| 5346 | 기타 | 1년 전 | 502 | ||
| 5345 | 기타 | 1년 전 | 392 | ||
| 5344 | JavaScript |
|
1년 전 | 422 | |
| 5343 | PHP |
|
1년 전 | 492 | |
| 5342 | jQuery | 1년 전 | 568 | ||
| 5341 | PHP |
|
1년 전 | 869 | |
| 5340 | Mobile |
슈퍼스타맨
|
1년 전 | 543 | |
| 5339 | 기타 |
|
1년 전 | 542 | |
| 5338 |
멀티트리플
|
2년 전 | 1285 | ||
| 5337 | 기타 |
슈퍼스타맨
|
2년 전 | 1777 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기