단일 토너먼트(싱글 엘리미네이션)는 한 번 지면 탈락하는 방식이라 적은 경기 수로 우승자를 가릴 수 있습니다. 이 도구는 명단을 읽어 2의 거듭제곱 크기의 대진표를 그리고, 남는 자리를 부전승으로 채워 참가 수, 부전승 수, 총 경기 수, 라운드 수를 화면 위에 함께 보여줍니다. 학급 체육대회, 사내 탁구 대회, 동호회 풋살 컵처럼 인원이 딱 떨어지지 않는 대회에서 "누가 첫 경기를 쉬는지"를 정할 때 쓰면 됩니다.
부전승 수·경기 수·라운드 수 공식
참가 수를 n이라 하면 세 값은 다음처럼 정해집니다.
- 라운드 수 = ceil(log₂ n). 올림한 값이 곧 우승까지 이기는 횟수의 최대치입니다.
- 대진표 크기 = 2라운드 수. n보다 크거나 같은 가장 작은 2의 거듭제곱입니다.
- 부전승 수 = 크기 − n. 크기와 n의 차이만큼 첫 라운드 경기가 "상대 없는 경기"가 됩니다.
- 총 경기 수 = n − 1. 경기마다 정확히 한 명이 탈락하고 마지막에 한 명이 남으므로, 부전승이 몇 개든 실제로 치르는 경기는 n − 1번입니다.
- 첫 라운드 실제 경기 수 = n − 크기/2. 이 경기를 치르고 나면 남은 인원이 정확히 크기/2명, 즉 2의 거듭제곱이 됩니다.
부전승은 승리 기록이 아니라 "한 라운드를 치르지 않고 올라가는 자리"입니다. 그래서 부전승 선수는 우승까지 경기를 한 번 덜 치르게 되어 유리합니다. 공정성이 중요한 대회라면 부전승을 누가 받을지 추첨으로 정하거나, 예선 성적이 높은 순서대로 주는 규칙을 미리 공지해 두는 편이 분쟁을 막습니다.
참가 수별 부전승 계산표
아래 표는 위 공식으로 페이지가 만들어질 때 계산한 값입니다.
| 참가 수 | 대진표 크기 | 부전승 수 | 1라운드 실제 경기 | 총 경기 수 | 라운드 수 |
|---|---|---|---|---|---|
| 2 | 2 | 0 | 1 | 1 | 1 |
| 3 | 4 | 1 | 1 | 2 | 2 |
| 5 | 8 | 3 | 1 | 4 | 3 |
| 6 | 8 | 2 | 2 | 5 | 3 |
| 7 | 8 | 1 | 3 | 6 | 3 |
| 9 | 16 | 7 | 1 | 8 | 4 |
| 11 | 16 | 5 | 3 | 10 | 4 |
| 12 | 16 | 4 | 4 | 11 | 4 |
| 13 | 16 | 3 | 5 | 12 | 4 |
| 17 | 32 | 15 | 1 | 16 | 5 |
| 20 | 32 | 12 | 4 | 19 | 5 |
| 24 | 32 | 8 | 8 | 23 | 5 |
| 33 | 64 | 31 | 1 | 32 | 6 |
| 50 | 64 | 14 | 18 | 49 | 6 |
| 100 | 128 | 28 | 36 | 99 | 7 |
표에서 눈에 띄는 부분은 참가 수가 2의 거듭제곱보다 딱 1명 많을 때(예: 9, 17, 33명)입니다. 부전승이 크기의 절반에 가깝게 쏟아지고 첫 라운드 실제 경기는 단 1번뿐입니다. 이런 경우에는 "1경기짜리 예선(플레이인)"을 먼저 치르는 셈이라고 안내하거나, 조를 나눠 예선을 돌린 뒤 본선 토너먼트로 가는 방식을 고려할 만합니다.
검산한 예시 세 가지
예시 1. 사내 풋살 리그 11팀
ceil(log₂ 11) = 4라운드, 크기는 16입니다. 부전승은 16 − 11 = 5팀, 1라운드 실제 경기는 11 − 8 = 3경기(6팀 출전)입니다. 이 3경기와 부전승 5팀을 합치면 2라운드 시작 시점에 8팀이 되어 이후로는 8강-4강-결승이 깔끔하게 이어집니다. 총 경기는 3 + 4 + 2 + 1 = 10경기로, 11 − 1과 일치합니다.
예시 2. 초등학교 탁구 대회 20명
크기는 32, 부전승은 12명입니다. 1라운드 실제 경기는 20 − 16 = 4경기이므로 8명만 라켓을 잡고 12명은 쉽니다. 경기가 끝나면 4명이 탈락해 16명이 남고, 16강-8강-4강-결승으로 4 + 8 + 4 + 2 + 1 = 19경기, 총 5라운드입니다. 탁구대가 2대뿐이라면 총 19경기를 시간표로 환산해 대관 시간을 계산할 수 있습니다.
예시 3. 지역 e스포츠 대회 50명
크기는 64, 부전승은 14명, 1라운드 실제 경기는 50 − 32 = 18경기입니다. 18경기에서 18명이 탈락하면 32명이 남고, 이후 16 + 8 + 4 + 2 + 1 = 31경기, 합계 49경기입니다. 6라운드를 전부 하루에 끝내기 어렵다면 1라운드와 2라운드를 예선일로 따로 잡는 일정이 현실적입니다.
다른 대회 방식과 경기 수 비교
| 참가 수 | 단일 토너먼트 | 3·4위전 포함 | 더블 엘리미네이션 | 리그전(풀리그) |
|---|---|---|---|---|
| 8 | 7 | 8 | 14~15 | 28 |
| 16 | 15 | 16 | 30~31 | 120 |
| 32 | 31 | 32 | 62~63 | 496 |
더블 엘리미네이션은 두 번 져야 탈락하는 방식으로 총 경기 수가 2n−2 또는 2n−1입니다(결승에서 패자조 승자가 이기면 한 경기가 추가되는 규칙을 쓰는지에 따라 달라집니다). 3·4위전은 준결승 패자끼리 한 번 더 겨루는 것이어서 총 경기가 1경기 늘어난 n이 됩니다. 이 생성기가 그리는 것은 단일 토너먼트 구조뿐이며 3·4위전과 패자조는 그리지 않습니다.
경기 시간표 짜기: 코트 수와 시간대 수
대진표를 만든 다음 가장 먼저 닥치는 질문은 "하루에 끝낼 수 있나"입니다. 같은 라운드의 경기는 코트가 충분하면 동시에 진행할 수 있고, 다음 라운드는 이전 라운드 승자가 정해져야 시작할 수 있습니다. 라운드를 순서대로 진행한다고 가정하고 코트 c개로 한 라운드의 m경기를 치르는 데 ceil(m ÷ c)개의 시간대가 필요하다고 계산했습니다. 아래 표의 라운드별 경기 수는 1라운드가 (참가 수 − 대진표 크기/2), 그다음부터는 크기/4, 크기/8, … 1경기입니다. 시간대 하나를 20분으로 가정하면 시간대 수 × 20분이 대략의 소요 시간이며, 경기 사이 휴식과 교체 시간은 포함되지 않습니다.
| 참가 수 | 라운드별 경기 수 | 총 경기 | 코트 1개 | 코트 2개 | 코트 4개 |
|---|---|---|---|---|---|
| 6 | 2 → 2 → 1 | 5 | 5시간대 (100분) | 3시간대 (60분) | 3시간대 (60분) |
| 11 | 3 → 4 → 2 → 1 | 10 | 10시간대 (200분) | 6시간대 (120분) | 4시간대 (80분) |
| 20 | 4 → 8 → 4 → 2 → 1 | 19 | 19시간대 (380분) | 10시간대 (200분) | 6시간대 (120분) |
| 50 | 18 → 16 → 8 → 4 → 2 → 1 | 49 | 49시간대 (980분) | 25시간대 (500분) | 14시간대 (280분) |
표에서 보듯 코트를 늘려도 결승 같은 후반 라운드는 경기가 1~2개뿐이라 시간이 줄지 않습니다. 참가 50명을 코트 4개로 돌리면 총 시간대는14개로, 코트 1개일 때(49개)의 약 29% 수준에 그칩니다. 4배 빨라지지는 않습니다. 실제 일정에서는 같은 선수가 연속 라운드를 뛰는 간격(휴식)도 고려해야 하는데, 이 도구는 선수 간격을 계산하지 않습니다.
무작위 모드에서 부전승을 받을 확률
이 도구의 무작위 모드는 명단을 섞은 뒤 앞에서부터 부전승 자리를 채우므로, 참가자 한 명이 부전승을 받을 확률은 부전승 수 ÷ 참가 수입니다. 다시 말해 모든 참가자가 같은 확률을 가집니다. 부전승이 많은 대회일수록 "누가 쉬느냐"가 결과에 큰 영향을 줄 수 있습니다.
| 참가 수 | 부전승 수 | 한 명이 부전승을 받을 확률 |
|---|---|---|
| 6 | 2 | 33.3% |
| 7 | 1 | 14.3% |
| 11 | 5 | 45.5% |
| 20 | 12 | 60% |
| 50 | 14 | 28% |
참가 20명이면 10명 중 6명(60%)이 부전승을 받으니 오히려 부전승이 기본이고 1라운드를 치르는 쪽이 소수입니다. 이런 경우에는 "1라운드는 예선 성격"이라고 미리 알려 두면 불만이 줄어듭니다. 이 확률은 한 번의 추첨에서 각자에게 해당하는 값이며, 다시 만들기를 반복해 마음에 드는 결과가 나올 때까지 돌리면 공정성이 의미를 잃으므로 대회에서는 한 번만 만들고 그 결과를 공개하세요.
상황별 운영 예시
학급 체육대회 피구 6팀. 6팀이면 크기 8, 부전승 2팀, 1라운드 실제 경기 2경기입니다. 코트가 1개인 운동장에서는 2 + 2 + 1 = 5경기를 5시간대에 나눠 진행해야 하고, 코트를 2개 쓰면 3시간대로 줄어듭니다(위 표 기준). 부전승 2팀은 1라운드 동안 심판이나 기록을 맡게 하면 쉬는 시간을 활용할 수 있습니다.
사내 볼링·당구 대회 7명. 7명이면 크기 8, 부전승 1명, 1라운드 실제 경기 3경기입니다. 부전승 1명은 추첨으로 정하되, 한 번이라도 받은 사람이 다음 대회에서는 우선순위에서 밀리도록 기록해 두는 사내 규칙을 쓸 수 있습니다(이 도구에는 그런 기능이 없습니다).
동호회 배드민턴 복식 12팀. 복식은 참가 단위가 선수가 아니라 2인 팀이므로 명단에 "홍길동·김철수"처럼 한 줄에 한 팀을 적습니다. 12팀이면 크기 16, 부전승 4팀, 1라운드 실제 경기 4경기, 총 11경기입니다.
입력값 경계와 특이 케이스
- 빈 줄과 앞뒤 공백: 줄마다 앞뒤 공백을 지우고 빈 줄은 건너뛰므로 명단 사이에 빈 줄이 있어도 참가자로 세지 않습니다.
- 정확히 2의 거듭제곱인 인원(2, 4, 8, 16, …): 부전승이 0이고, 1라운드가 곧 첫 경기입니다.
- 이름이 "(부전승)"이나 "승자 미정"인 참가자: 도구가 쓰는 표시 문구와 같아 표가 헷갈릴 수 있으니 다른 이름을 쓰세요.
- 이름이 긴 경우: 슬롯 폭에 맞춰 줄바꿈되며, 표 전체는 가로로 스크롤됩니다. 인쇄할 때 잘리면 용지 방향을 가로로 바꾸세요.
- 다시 만들기: "대진표 만들기"를 누를 때마다 무작위 모드에서는 새로 섞이므로 이미 공유한 대진표와 다른 표가 나올 수 있습니다. 확정한 표는 복사해 두세요.
이 도구의 대진 배정 방식
"무작위로 섞기"는 명단을 한 번 섞은 뒤 위에서부터 부전승을 배정하고, "입력한 순서 유지"는 입력 순서를 시드 순서로 간주해 앞쪽 입력자가 부전승을 받습니다. 시드 1번을 대진표 맨 위에, 2번을 맨 아래에 두고 1번 대 최하위 시드가 만나게 하는 스포츠 연맹식 정밀 시드 배치는 하지 않습니다. 공식 대회라면 시드 규정을 따르는 별도 표를 쓰고, 이 도구는 동호회·교실·사내 행사처럼 간이 대진이 필요한 곳에 쓰세요. 난수는 브라우저의 Math.random이므로 보안용이 아니며, 단순 추첨 용도입니다.
흔한 실수와 한계
- 부전승 2자리가 서로 만나는 대진은 잘못된 표입니다. 이 도구는 부전승 한 자리를 서로 다른 첫 경기에 하나씩 배정해 부전승끼리 맞붙는 경기가 생기지 않게 합니다.
- 참가 수에 부전승 자리를 포함해 세면 총 경기 수가 틀어집니다. 부전승은 선수가 아니라 빈 자리입니다.
- 같은 이름이 둘 이상이면 동명이인인지 중복 입력인지 도구가 구분하지 못하므로 "김민수A, 김민수B"처럼 구분해 입력하세요.
- 경기 결과를 입력해 다음 라운드를 채워 주는 기능은 없습니다. 승자 칸은 "승자 미정"으로 두고, 인쇄한 표에 손으로 기록하세요.
- 입력한 명단은 서버로 전송하거나 저장하지 않고, 페이지를 닫으면 사라집니다.
결과 활용법
대진표를 만든 뒤에는 "1라운드 대진 복사"로 단체 대화방에 첫 경기 목록을 공유하고, 인쇄본은 게시판에 붙여 결과를 직접 적게 하면 됩니다. 장소와 시간이 한정된 대회라면 위 계산표의 총 경기 수에 경기당 소요 시간을 곱한 뒤 동시에 쓸 수 있는 코트 수로 나눠 일정을 가늠하세요.
자주 묻는 질문
부전승 선수가 많으면 불공평하지 않나요?
부전승은 한 라운드를 덜 치르는 이점이 있어 완전한 공정이라고 할 수는 없습니다. 그래서 무작위 추첨이나 시드 순서로 받는 규칙을 미리 정해 두는 것이 일반적입니다. 이 도구의 무작위 모드는 첫 경기 위치를 섞어 부전승 자리를 우연에 맡깁니다.
참가자가 2명이면 어떻게 표시되나요?
대진표 크기 2, 부전승 0, 총 경기 1경기, 라운드 1개로 곧바로 결승 한 경기만 나옵니다. 1명 이하이면 안내 문구가 나옵니다.
총 경기 수가 참가 수 − 1이라는 건 항상 맞나요?
단일 토너먼트에서는 맞습니다. 한 경기에 한 명씩 탈락하고 한 명이 우승자로 남기 때문입니다. 3·4위전을 넣으면 1경기가 늘고, 패자 부활이나 더블 엘리미네이션에서는 달라집니다.
모든 팀이 같은 수의 경기를 하길 원하면요?
단일 토너먼트는 일찍 지면 경기를 적게 치릅니다. 모두가 같은 수를 뛰어야 한다면 리그전이 맞습니다. 팀이 많으면 조별 리그 후 상위팀만 토너먼트로 올리는 방식도 많이 씁니다.
인쇄하면 입력 칸도 같이 나오나요?
아니요, 인쇄 시에는 입력 칸과 버튼, 설명 본문이 숨겨지고 대진표만 인쇄됩니다. 가로가 넓으면 용지 방향을 가로로 바꾸세요.
경기에서 비기면 어떻게 하나요?
단일 토너먼트는 반드시 승자가 나와야 다음 라운드로 올라가므로, 대회 전에 연장전, 승부차기, 가위바위보 같은 결정 방법을 정해 두어야 합니다. 이 도구는 경기 결과를 계산하지 않으니 규칙은 주최 측이 공지하세요.
결과를 입력해서 승자를 다음 라운드에 채워 주나요?
아니요. 승자 칸은 "승자 미정"으로 표시되며, 부전승으로 올라가는 자리만 자동으로 채워집니다. 승자는 인쇄본에 손으로 적거나 엑셀 같은 별도 표에서 관리하세요.
대진표 맨 오른쪽 "우승" 칸에는 왜 슬롯이 하나뿐인가요?
우승 칸에는 한 명만 들어가므로 슬롯 하나만 그립니다. 그 앞 라운드는 두 칸이 한 경기를 이루고, 결승의 승자가 이 칸에 올라갑니다.
팀 수가 홀수여도 되나요?
됩니다. 홀수이면 반드시 부전승이 생기며, 부전승 수는 크기 − 참가 수로 정해집니다. 3팀이면 크기 4, 부전승 1팀, 총 2경기입니다.
관련 도구
- 리그전(라운드로빈) 대진표 생성기 - 모두가 서로 한 번씩 겨루는 일정표
- 랜덤 팀 나누기 - 참가자를 팀으로 먼저 나눌 때
- 이름 뽑기 생성기 - 부전승 받을 사람을 추첨으로 정할 때
- 사다리 타기 - 순번이나 시드를 간단히 정할 때