콕 포인트 적립 대상 선정
문서 정보
- 작성일: 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⌉(올림)를 적용하면, 올림의 누적으로 전체 합이 목표를 초과합니다.
| 슬롯별 콕 수 | 슬롯별 올림 합 | 전체 목표 |
|---|