16강 토너먼트 알고리즘
아이고 머리야~
토너먼트 16강 대전 프로그램을 만들고 있는 중입니다.
이것 때문에 코드가 점점 복잡해 지고 있습니다.
간단하게 정리를 해봐야겠습니다.
1. 먼저 16강에 진출할 사람을 뽑습니다.
2. 16강에 진출한 사람 두 명이 대결을 펼치고 이긴 사람은 8강에 진출합니다.
3. 8강에 진출한 사람 두 명이 대결을 펼치고 이긴 사람은 준결승에 진출합니다.
4. 준경승에 진출한 사람 두 명이 대결을 펼치고 이긴 사람은 결승에 진출합니다.
5. 결승에 진출한 사람 두 명이 대결을 펼치고 이긴 사람은 짱입니다.
1. 16강에 진출할 사람 뽑기
- 간단한 조건을 통과하면 16강에 진출하게 됩니다.
- 조건을 통과하면 '16강 리스트'에 추가.
- '16강 진출 대상자' 리스트에서 제거.
- 다른 사람의 조건 테스트
- 조건을 통과하지 못하면 '16강 진출 대상자'에서 제거하고 다음 사람에게 기회가 주어집니다.
- '16강 진출 대상자' 리스트에서 제거.
- 다음 사람의 조건 테스트
- 16명이 될 때 까지 반복합니다.
- '16강 리스트'가 16이 되면 '16강 진출 대상자' 리스트 제거.
- '16강 리스트'를 '8강 진출 대상자' 리스트로 사용
- 16명이 되기 전에 모든 인원이 조건을 통과하지 못하면 '16강 진출 대상자'를 리셋합니다.
- '16강 진출 대상자' 리스트 갱신.
- '16강 진출 대상자' 리스트에서 '16강 리스트'에 포함된 사람들 제거.
- "16강 진출할 사람 뽑기" 전 과정 반복
- 간단한 조건을 통과하면 16강에 진출하게 됩니다.
- 조건을 통과하면 '16강 리스트'에 추가.
- '16강 진출 대상자' 리스트에서 제거.
- 다른 사람의 조건 테스트
- 조건을 통과하지 못하면 '16강 진출 대상자'에서 제거하고 다음 사람에게 기회가 주어집니다.
- '16강 진출 대상자' 리스트에서 제거.
- 다음 사람의 조건 테스트
- 16명이 될 때 까지 반복합니다.
- '16강 리스트'가 16이 되면 '16강 진출 대상자' 리스트 제거.
- '16강 리스트'를 '8강 진출 대상자' 리스트로 사용
- 16명이 되기 전에 모든 인원이 조건을 통과하지 못하면 '16강 진출 대상자'를 리셋합니다.
- '16강 진출 대상자' 리스트 갱신.
- '16강 진출 대상자' 리스트에서 '16강 리스트'에 포함된 사람들 제거.
- "16강 진출할 사람 뽑기" 전 과정 반복
2. 8강에 진출할 사람 뽑기
- '16강 리스트'에서 두명을 뽑아서 대결을 합니다.
- '16강 리스트'에서 두명을 뽑습니다.
- 무승부는 없습니다.
- 이긴 사람을 '8강 리스트' 추가합니다.
- 진 사람과 이긴 사람을 '16강 리스트'에서 제거합니다.
- '8강 리스트'가 8이 될 때 까지 반복합니다.
3. 준결승에 진출할 사람 뽑기
- 8강에 진출할 사람 뽑기와 동일합니다.
4. 결승에 진출할 사람 뽑기
- 준결승에 진출할 사람 뽑기와 동일합니다.
5. 짱 뽑기
- 역시 동일합니다.
시작이 반이라는 말이 근거없는 말이 아니였군요.