마니또_매칭_imp - 100-hours-a-week/12-marong-Wiki GitHub Wiki
A → B → C → A 의 순환구조로, 각 참여자는 동시에 마니또와 마니띠 역할을 수행
- 마니띠: 미션수행을 하는 사람
- 마니또: 미션 수행을 당하는 사람
- 기존 구조: 과거 매칭 기록 기반의 단방향 매칭
- 매칭 방향: 마니또 → 마니띠 (단방향)
문제 1. 단방향 매칭 → 순환구조 매칭
- 단방향 매칭의 한계
- 사용자는 오직 마니또이거나 마니띠로만 역할을 수행
- 마니띠는 미션을 받기만 하고, 아무런 행동을 하지 않게 됨
- 일주일이 무의미하게 지나가는 경우 발생 → 참여도 하락
-
모든 사용자가 동시에 마니또이자 마니띠가 되는 구조 설계
-
꼬리잡기식 순환 구조로 전환
- A → B → C → D → A 형태로 연결
- 헝가리안 알고리즘_최종 채택X
- OR Tools-Google PATH_CHEAPEST_ARC 방식-채택O
-
이를 통해 모든 유저가 미션을 주고받는 역할을 하며 참여도 향상 기대
순서 | 내용 |
---|---|
1 | 순환구조 방식 설계 및 알고리즘 조사 |
2 | Google OR Tools 방식 채택 및 적용 |
3 | 예외처리: 그룹 인원이 3명 이상인 경우에만 매칭 수행 등 |
4 | 순환 구조 매칭 시뮬레이션 실행 및 적용 |
문제 2. 랜덤 매칭 → 개인화된 매칭
- 과거에는 과거 매칭 기록만을 기반으로 무작위 매칭이 이루어짐
- 적극적인 유저와 유령 유저가 엇갈려 매칭될 경우 미션 수행률이 낮아짐
- 참여도가 높은 유저끼리 서로 매칭되어야 ‘미션 수행 → 수신’ 이 원활히 이루어짐
- 매칭 시 사용자 성향과 이력 데이터를 함께 반영하는 개인화된 구조 필요
- 고려 요소
- MBTI 궁합
- 취미 유사도 기반 친밀도 점수
- 과거 미션 수행(활동 빈도)
- 과거 매칭 이력
- 과거 미션 수행률을 통해 유령 유저는 유령 유저끼리, 활동 유저는 활동 유저끼리 매칭
- 취미와 MBTI 궁합을 통해서 자신에게 맞는 마니또, 마니띠 매칭
순서 | 내용 |
---|---|
1 | 개인화 매칭 요소 정의 (MBTI, 취미, 미션 기록, 과거 매칭 기록) |
2 | 매칭 비용 최적화 구조 설계 |
3 | 매칭 시뮬레이션 실행 및 적용 |

비교 항목 | Before | After |
---|---|---|
매칭 기준 | 과거 매칭 기록만 반영 | MBTI, 취미, 미션 이력 등 다중 요소 반영 |
활동 유저 중심 | 랜덤 매칭으로 유령 유저와 엇갈려 매칭될 가능성 높음 | 미션 수행률이 높은 사람들끼리 매칭됨으로써 활동 유저끼리 매칭되도록 조정 |
개인화 정도 | 무작위 매칭 | 성향 기반 개인화 매칭 |
미션 수행률 | 낮음(최대 수행률: 전체 유저의 1/2) | 미션을 주고받은 비율 향상 |
- 참여도 증가: 단방향 매칭의 한계를 극복하고자 순환 구조 매칭을 도입하면서, 모든 유저가 마니또/마니띠 역할을 동시에 수행하며 참여도가 크게 증가하게 되며 사용자 중심 설계 방식에 대해 생각해보게 되었습니다.
- 개인화된 매칭: 과거 매칭 기록과 더불어 MBTI, 취미, 활동 이력 등 다양한 요소를 반영하여 사용자 성향에 맞는 매칭을 구현하고, 미션 수행률과 만족도를 향상시켰습니다.
- 문제 해결 능력 강화: OR-Tools라이브러리를 활용해 최적화된 알고리즘을 설계하고, TSP를 마니또 매칭에 재해석하여 복잡한 문제를 수학적으로 추상화하는 역량을 길렀습니다.