콕 포인트 적립 대상 선정
문서 정보
- 작성일: 2026-02-26
- 최종 업데이트: 2026-02-26
- 버전: v1.1.0
콕이 생성될 때, 활성 콕의 **정확히 절반(50%)**이 포인트 적립 대상으로 선정됩니다. Hamilton's Method 알고리즘을 적용하여 전체 적립 수도, 각 타임슬롯별 적립 수도 공정하게 배분됩니다.
목차
핵심 개념
콕(Kok)과 포인트
사용자가 체육관에서 콕을 하면, 각 콕에 대해 포인트 적립 여부가 결정됩니다.
| 용어 | 설명 |
|---|---|
| 활성 콕 | 사용자에게 노출되는 콕 (패스별 개수 제한 이내) |
| 비활성 콕 | 개수 제한 초과로 보관만 되는 콕 |
| 적립 대상 콕 | 시청 완료 시 포인트를 받을 수 있는 콕 |
적립 대상 비율
- 활성 콕의 **50%**가 적립 대상으로 선정됩니다
- 홀수일 경우 올림 처리하여 사용자에게 유리하게 적용합니다
- 비활성 콕은 적립 대상이 될 수 없습니다
적립 대상 선정 방식
콕이 생성될 때 다음 순서로 적립 대상이 결정됩니다.
적립 대상 수 계산
활성 콕 수의 50%를 올림하여 적립 대상 수를 결정합니다.
적립 대상 수 = ⌈ 전체 활성 콕 수 × 0.5 ⌉
( ⌈ ⌉ = 올림 )
| 활성 콕 수 | 적립 대상 수 | 계산 |
|---|---|---|
| 10개 | 5개 | ⌈10 × 0.5⌉ = 5 |
| 7개 | 4개 | ⌈7 × 0.5⌉ = ⌈3.5⌉ = 4 |
| 3개 | 2개 | ⌈3 × 0.5⌉ = ⌈1.5⌉ = 2 |
| 1개 | 1개 | ⌈1 × 0.5⌉ = ⌈0.5⌉ = 1 |
| 0개 | 0개 | ⌈0 × 0.5⌉ = 0 |
홀수 활성 콕에서는 항상 올림하므로, 실제 적립 비율은 50% 이상입니다. 예를 들어 활성 콕 1개일 때 적립 대상도 1개 (100%)입니다.
타임슬롯별 공정 배분
왜 공정 배분이 필요한가?
콕은 여러 타임슬롯(시간대)에 걸쳐 생성됩니다. 단순히 전체에서 랜덤으로 고르면 특정 타임슬롯에 적립 대상이 몰리거나 0개가 되는 불공정이 발생할 수 있습니다.
배분 규칙
각 타임슬롯은 자신의 활성 콕 수에 비례한 적립 대상을 보장받습니다.
| 규칙 | 설명 |
|---|---|
| 전체 합산 정확 | 전체 적립 대상 수는 항상 ⌈전체 활성 콕 × 50%⌉ |
| 슬롯별 범위 보장 | 각 슬롯의 적립 대상: ⌊슬롯 콕 수 × 50%⌋ ~ ⌈슬롯 콕 수 × 50%⌉ |
| 슬롯 내 랜덤 | 슬롯 안에서 어떤 콕이 적립 대상인지는 랜덤 |
⌊ ⌋ = 내림, ⌈ ⌉ = 올림
Hamilton's Method 알고리즘
타임슬롯별 공정 배분에는 Hamilton's Method (최대 나머지 방식)를 사용합니다. 이 알고리즘은 원래 미국 의회 의석 배분에 사용되던 방식으로, 전체 합을 정확히 유지하면서 각 그룹에 비례 배분하는 문제를 해결합니다.
알고리즘 단계
단계별 수식
각 타임슬롯 i에 nᵢ개의 활성 콕이 있을 때:
| 단계 | 수식 | 설명 |
|---|---|---|
| 목표 | K = ⌈(n₁ + n₂ + ... + nₖ) × r⌉ | 전체 적립 대상 수 (r = 0.5) |
| 하한 | aᵢ = ⌊nᵢ × r⌋ | 각 슬롯에 보장되는 최소 적립 수 |
| 부족분 | D = K - (a₁ + a₂ + ... + aₖ) | 아직 배분되지 않은 잔여분 |
| 나머지 | fᵢ = nᵢ × r - aᵢ | 각 슬롯의 소수점 이하 값 |
| 추가 배정 | fᵢ가 큰 순서로 D개 슬롯에 +1 | 나머지가 큰 슬롯이 우선 |
수학적 보장
Hamilton's Method는 다음 두 가지를 동시에 보장합니다:
보장 1: 전체 합산 = ⌈전체 콕 × 0.5⌉ (정확히 일치)
보장 2: 각 슬롯의 적립 수는 ⌊nᵢ × 0.5⌋ 이상, ⌈nᵢ × 0.5⌉ 이하 (Quota Rule)
이 보장은 알고리즘의 구조적 특성으로, 어떤 입력에서든 반드시 성립합니다.
왜 단순 올림/내림으로는 안 되는가?
각 슬롯에 독립적으로 ⌈nᵢ × 0.5⌉(올림)를 적용하면, 올림의 누적으로 전체 합이 목표를 초과합니다.
| 슬롯별 콕 수 | 슬롯별 올림 합 | 전체 목표 | 차이 |
|---|---|---|---|
| [3, 3, 3] = 9 | 2 + 2 + 2 = 6 | ⌈4.5⌉ = 5 | +1 초과 |
| [1, 1, 1] = 3 | 1 + 1 + 1 = 3 | ⌈1.5⌉ = 2 | +1 초과 |
| [2, 4, 6] = 12 | 1 + 2 + 3 = 6 | ⌈6⌉ = 6 | 일치 (짝수일 때만) |
Hamilton's Method는 일부 슬롯에 내림, 나머지에 올림을 적용하여 합이 정확히 맞도록 조절합니다.
r = 0.5일 때의 특수성
비율이 0.5인 경우, 나머지 값 fᵢ는 0 (짝수 콕) 또는 0.5 (홀수 콕) 뿐입니다. 홀수 콕인 슬롯들은 모두 같은 나머지(0.5)를 가지므로 동률이 됩니다. 이때 랜덤으로 순서를 결정하여 특정 슬롯이 항상 유리하거나 불리하지 않도록 합니다.
예시 시나리오
시나리오 1: 모든 슬롯 짝수 — 부족분 없음
사용자 A가 3개 타임슬롯에 각각 2개, 4개, 6개 = 총 12개 활성 콕
| 단계 | 슬롯 0 (2개) | 슬롯 1 (4개) | 슬롯 2 (6개) | 합계 |
|---|---|---|---|---|
| 하한 ⌊nᵢ×0.5⌋ | 1 | 2 | 3 | 6 |
| 목표 K | 6 | |||
| 부족분 D | 0 | |||
| 최종 배정 | 1개 | 2개 | 3개 | 6개 |
모든 슬롯이 짝수이므로 나머지가 0, 부족분이 없어 정확히 절반씩 배정됩니다.
시나리오 2: 모든 슬롯 홀수 — 부족분 배분
사용자 B가 3개 타임슬롯에 각각 3개, 3개, 3개 = 총 9개 활성 콕
| 단계 | 슬롯 0 (3개) | 슬롯 1 (3개) | 슬롯 2 (3개) | 합계 |
|---|---|---|---|---|
| 하한 ⌊nᵢ×0.5⌋ | 1 | 1 | 1 | 3 |
| 목표 K | 5 | |||
| 부족분 D | 2 | |||
| 나머지 fᵢ | 0.5 | 0.5 | 0.5 | 동률 |
| 추가 배정 (+1) | ✓ (랜덤) | ✓ (랜덤) | - | +2 |
| 최종 배정 | 2개 | 2개 | 1개 | 5개 |
3개 슬롯이 동률이므로 2개를 랜덤 선택하여 +1을 줍니다. 매번 다른 슬롯이 선택되어 장기적으로 공정합니다.
시나리오 3: 슬롯 간 큰 차이
사용자 C가 슬롯 0에 1개, 슬롯 1에 10개 = 총 11개 활성 콕
| 단계 | 슬롯 0 (1개) | 슬롯 1 (10개) | 합계 |
|---|---|---|---|
| 하한 ⌊nᵢ×0.5⌋ | 0 | 5 | 5 |
| 목표 K | 6 | ||
| 부족분 D | 1 | ||
| 나머지 fᵢ | 0.5 | 0 | |
| 추가 배정 (+1) | ✓ (나머지 큼) | - | +1 |
| 최종 배정 | 1개 | 5개 | 6개 |
슬롯 0은 콕이 1개뿐이지만, 나머지(0.5)가 슬롯 1(0)보다 크므로 +1을 받아 적립 대상이 됩니다.
FAQ
Q: 적립 대상인 콕을 시청하면 반드시 포인트를 받나요?
적립 대상은 포인트를 받을 수 있는 자격입니다. 실제 적립은 시청 완료 시점에 멤버십별 적립 횟수 제한 등 추가 조건을 확인한 후 이루어집니다.
Q: 사용자가 어떤 콕이 적립 대상인지 알 수 있나요?
아닙니다. 적립 대상 여부는 내부 로직으로만 관리되며, 사용자에게는 노출되지 않습니다. 사용자는 콕 시청 완료 후 결과만 받게 됩니다.
Q: 활성 콕이 1개뿐이면 반드시 적립 대상인가요?
네. ⌈1 × 0.5⌉ = 1이므로, 활성 콕이 1개 이상이면 최소 1개는 적립 대상이 됩니다.
Q: 특정 타임슬롯에 적립 대상이 0개가 될 수 있나요?
해당 슬롯의 활성 콕이 1개일 때만 0개가 될 수 있습니다 (범위: 0~1). 2개 이상이면 최소 1개는 보장됩니다. 그리고 전체적으로 부족분이 있을 경우 1개짜리 슬롯도 적립 대상을 받을 수 있습니다.
Q: 매번 같은 콕이 적립 대상이 되나요?
아닙니다. 각 슬롯 내에서 적립 대상은 랜덤으로 선택됩니다. 같은 조건이어도 매번 다른 콕이 선택될 수 있습니다.
Q: Hamilton's Method는 어디서 유래한 건가요?
1792년 미국 건국의 아버지 알렉산더 해밀턴이 제안한 의석 배분 방식입니다. "전체 의석 수를 정확히 유지하면서 각 주(州)에 인구 비례로 공정하게 배분"하는 문제를 해결하기 위해 만들어졌으며, 우리 시스템에서는 "타임슬롯별 콕 수에 비례하여 적립 대상을 배분"하는 데 동일한 원리를 적용합니다.
관련 문서
- ADR-001: 결정적 포인트 적격 할당 (
docs/maintained/kok/adr/ADR-001-point-eligibility-deterministic.md) - 확률적 → 결정적 할당 변경 결정 - ADR-002: 타임슬롯별 공정 배분 (
docs/maintained/kok/adr/ADR-002-per-timeslot-fair-allocation.md) - Hamilton's Method 적용 결정
변경 이력
| 버전 | 날짜 | 변경 내용 |
|---|---|---|
| v1.0.0 | 2026-02-26 | 초기 문서 작성 - 포인트 적립 대상 선정 방식 정의 - 타임슬롯별 공정 배분 규칙 설명 - 예시 시나리오 3건 작성 - FAQ 작성 |
| v1.1.0 | 2026-02-26 | 알고리즘 상세 추가 - Hamilton's Method 알고리즘 단계별 설명 추가 - 수학적 보장 및 수식 추가 - 단순 올림/내림 불가 이유 설명 - 시나리오에 단계별 계산 과정 추가 - 다이어그램 색상 개선 |