Code Master 2024 대회가 Open Contest까지 성공적으로 끝마쳤다. Code Master가 어떻게 준비 되었는지, 대회를 열기 위한 노하우를 이 글에다가 적어보았다. 준비 과정은 중간부터 적기 시작하여 완전하지 않은게 아쉽다. 다음에는 꼼꼼히 기록해보겠다. 이 글이 대회를 여는 누군가에게 도움이 됐으면 한다.
2024.5월
담임 선생님이 제 2회 Code Master 대회 개최를 추진하셨다. 나랑 준세와 진서 셋이서 문제를 만들기 시작했다.
여러 문제들이 나왔다.
1.리븐 문제(진서)
롤에서 리븐 미러전을 할 때 이길 수 있는 키를 입력하는 문제. easy hard 버전 나눠서 hard 버전은 인터렉티브 문제다. 물론 시간이 지나면서 자연스럽게 사라졌다.
2.최단경로+가중(준세)
주변에 음식점 존재, 음식점마다 줄 수 있는 편익이 다름. 한칸 움직일때마다 편익이 1 감소. 가장 많은 편익을 줄 수 있는 음식점을 고르고, 편익을 출력하는 문제다. 이 문제도 자연스럽게 반려당했다.
3.물탱크 문제(창연)
이 사진을 보고 생각해낸 문제. 이때는 특별하게 정해놓은건 없었다.
4.광선 다각형 만들기(창연)
거울과 광선을 이용해서 다각형을 만들고, 각을 구하는 문제. 여담으로는 내가 낸 두 문제만 최종 후보까지 올라 결국 Code Master 2024에 출제 됐다.
2024.6월
마찬가지로 시험기간이라 틈틈이 문제 생각해놓은거 빼곤 한게 없다.
1.브롤 대회(준세)
배낭 문제를 능력치를 여러 개 만들어서 dp 돌리는 문제. 내 기억으로는 준세와 진서가 머리를 싸매면서 난이도를 막 조절했던걸로 기억한다. 비슷한 문제가 너무 많아서 반려 당한걸로 기억한다.
2024.7월
시험기간이 끝나고, 개인적으로 대회를 준비하기 시작했다. 나와 준세는 미친듯이 PS를 하며 출제자 요건을 맞추기 시작했다.(여담으로 결국 둘 다 못맞췄다)(정정한다. 나만 못맞췄다)
2024.8월
슬슬 대회가 다가오자, 도훈 선배와 함께 문제들을 정리해나가기 시작했다.
2024.08.04
마지막으로 문제를 최종적으로 정리하고, 도훈 선배가 본격적으로 도와주기 시작했다.
2024.08.05
애매한 문제들이 갈려 나갔다. 이때부터 준세의 반려 시리즈가 시작되었다.
차형준 선생님의 연강은 힘들어 문제가 추가되었다.
2024.08.07
송도고 레일 정비 사업이 추가 되었다.
이땐 실번줄 알았다...
이때부터 폴리곤을 배우기 시작했다.
...
(작성하기 시작한게 8월 18일이라, 이 사이에 많은 일들이 있었지만 기억이 나지 않는다)
2024.08.18
물탱크 알바(easy)의 정해를 만들었다.
2024.08.19
물탱크 알바(easy)의 정해를 반례를 찾으며 수정하고 Validator와 Generator를 만들었다.
2024.08.20
물탱크 알바의 Generator가 약한거 같아서 케이스를 나눠 만들었다.
포스터가 완성되고, 본격적인 홍보를 시작했다.
여러 학원,웹사이트에 홍보 메일을 돌렸다.
2024.08.21
검수진들이 들어와 검수를 시작했다.
kizen님이 하루만에 풀이를 다 만드셨다. 물탱크 문제는 도훈 선배와 나와의 포맷팅 문제로 내일 쯤 풀이가 나올 거 같다.
정정한다. 글쓰고 있는데 풀이 올라왔다;;
위에서 말한 것처럼 validator를 도훈 선배가 만든걸로 바꿔 끼우고, 포맷팅을 알맞게 수정했다.
2024.08.22
메일에 답장이 오지 않자 직접 전화를 돌렸다.
그 중에서 원당컴퓨터학원에서 먼저 흔쾌히 글을 올려주셨다.
https://wondangcom.tistory.com/2896
오늘 7시부터 참가자를 모집하기 시작했다. 첫날임에도 불구하고 30명 가까운 사람들이 지원해줬다.
광선 다각형 문제의 지문을 수정해야 된다. 내가 읽어도 난해한 감이 없지 않아 있긴 하다. 그치만 어떻게 수정해야 될지 모르겠다...
2024.08.23
결국 광선 다각형 문제를 입사각을 주는 방식으로 수정하게 되었다. 지문과 코드, Generator, Validator 등을 수정했다.
물탱크 문제(easy)의 c,m 범위를 Validator에서 수정해주었고, 강한 테스트 케이스를 만들기 위해, 다른 Generator를 만들어 추가해주었다.
둘째날엔 참가자가 42명이나 모였다. 이런 대회에 이런 분들이? 싶은 분들도 있었지만 어쨌든 재미가 있을거 같아 기대가 된다.
2024.08.25
광선 다각형 문제를 조금 더 직관적이게 수정했다.
보드게임 마스터(hard)가 정풀보다 쉬운 버전이 나오면서, 개조를 하다가 결국 정체성을 잃고 삭제 당했다.
2024.08.28
대회가 사흘 앞으로 다가왔다. 오프라인 대회 장소를 고민하다가 자습실을 이용하기로 했다. 처음에는 괜찮을까 생각했는데 가서 보니 테이블마다 콘센트도 박혀있고, 자리도 널널하게 있어서 딱 좋았다.
현수막을 더 이상 지체하면 안될 거 같아 형준쌤이 직접 디자인을 하여 주문을 넣었다.
2024.08.29
물탱크(hard)문제가 완성되고, 최종 검수가 시작됐다. 여전히 지문 고치느라 고생 중이다...
진서와 해설을 쓰기 시작했다. 코멘트를 달아야 하는데, 뭔 말을 해야 할지 모르겠다..ㅋㅋ
2024.08.30
이제 대회가 하루 앞으로 다가왔다. 오프라인 대회 환경을 최종적으로 구성해야한다.
진서와 준세와 함께 노트북 지참 불가능한 학생들을 위해 노트북 환경을 준비했다. C++ 까는게 매우 힘들었다.
도훈 선배의 도움으로 전부 깔고, 해설을 마저 작성했다. 물탱크 문제는 내가 낸 문제기에 집중적으로 작성해주었고, 사소한 부분들은 다같이 보았다.
스택에 문제를 옮겼다. 지문이 어느정도 완성이 되었고, 준세가 그림도 열심히 그려주어 생각보다 이해하기 쉬웠다.(내 문제가?)
물탱크 easy 문제의 제너레이터를 hard 버전과 easy 버전을 서로 교환하여 넣어주었다.
도시 농부 문제의 증명이 되어 1년만에 빛을 발하게 되었다.
대회 당일 새벽. 복권 이벤트 아이디어가 나와 구글 폼을 만들었다(엑셀 처음 다뤄보는데 신기하다)
2024.08.31
대회 당일 아침. 청소기와 테이프 등을 도훈 선배와 진서에게 맡기고 꿈두레를 들으러 갔다.
이후 와서 자리표 배치 및 간식 준비, 포스터, 이면지 준비 등을 하고, 스코어 보드를 띄웠다.
준비가 생각보다 늦어져 15분 정도 지연됐다. 그 후 복권 이벤트를 진행하고 본 대회가 열렸다.
본 대회에서는 생각보다 별 탈 없이 진행되었다. 네트워크 한 번 쯤은 터질줄 알았는데...
이후 시상식과 사진 촬영까지 무사히 마치면서 Code Master 2024 대회는 종료되었다.
나중에 대회를 준비하는 누군가를 위해
이번 대회를 준비하며 느낀 건 정말 철저한 준비가 필요하단 것이고, 나는 작년 대회 운영자였던 도훈 선배와 진서의 도움을 받아 어떻게 잘 운영했지만, 대회를 처음 준비하거나, 도훈 선배 없이 대회를 준비할 미래의 나를 위해 이 글을 써본다.
우선 크게 카테고리를 나눠보면, 두 가지로 나뉜다: 대회 내적 / 대회 외적
1. 대회 내적
대회 내적인 부분은 문제를 출제하고, 검수받는 등 대회의 문제가 나오기까지 필요한 준비들이다.
아이디어 -> 문제 구성 -> Polygon 작성 -> 검수 -> 스택 옮기기 -> 검수 -> 검수...
1-1. 아이디어
사실 이 과정이 제일 오래 걸린다. 문제에 출제될 상황과 아이디어를 계속해서 생각해낸다. 그리고 여러 조건들을 만족하는지 확인한다.
- 구현 가능한가?: 문제 상황이 알고리즘으로 구현 할 수 있는 상황인지 판단한다. 난 주변 사물들을 보면서 아이디어를 떠올렸다.
- 깔끔한 문제인가?: 내가 생각하는 깔끔하다의 기준은, 지문&상황은 간단할수록, 아이디어는 참신할수록, 코드는 단순할수록 깔끔하다고 생각한다.
- 겹치는, 비슷한 문제가 있는가?: 제일 중요한 조건이다. 아무리 내 아이디어가 좋아도 이미 출제가 된 문제면 내질 못한다.
(이 때문에 준세가 여러번 반려당했다)http://yuantiji.ac/ 이 사이트에 문제 상황을 넣으면 알아서 비슷한 문제를 찾아준다.
1-2. 문제 구성
아이디어 위 조건들을 만족하면, 이제 구체적인 문제 상황을 만들고, 직접 정풀을 짜면서 시간복잡도를 고려해 입력 조건과 출력 등을 정해준다.
1-3. Polygon 작성
난 이 과정이 대회 내적 과정에서 제일 힘들었다. 아무것도 모르는 상태로 처음 보는 사이트에서 문제를 작성하라니 막막했지만, 열심히 독학 + 도훈 선배의 멘토링으로 기본적인 것들은 다룰 수 있게 되었다. Polygon에 관한 내용은 여기에 담긴 내용이 많으니 따로 글을 올려보겠다.
1-4. 검수
문제들이 어느정도 완성이 됐다면, 검수진들이 만든 문제들을 검수 한다. 이 과정에서 지문의 문법적 오류&문제 오류 등이 수정되고, Validator의 취약점, 테스트 케이스 보완, 문제 갈아엎기(!) 등이 일어난다.
2. 대회 외적
다음으로는 대회 외적인 부분이다. 처음엔 이게 더 쉬운 줄 알았다...
세분화 해보면
- 신청자 모집
- 포스터 만들기
- 구글 폼 작성
- 홍보
- 학원,백준 등 메일&전화 돌리기 및 글 올리기
- 인스타 만들기
- 오프라인 대회 환경 구성
- 컴퓨터 환경 준비
- 아이스 브레이킹 프로그램 구성
- 상장과 상품 준비
- 간식 준비
- 검수진 구하기
- 해설 작성
- 현수막 준비
- 후기 이벤트 준비
- 학교 승인과 같은 공적인 업무
(대충 선생님들이 해주시는거같던데?)
2-1. 신청자 모집
이제 대회를 열기 위해 참가자를 모아야 한다. 그러기 위해 가장 먼저 해야 할 것이 홍보이고, 홍보를 하기 위해 필수적으로 완성되어야 할게 포스터이다. canva 가지고 만들려고 시도는 해보았으나... 처참했다. 결국 도훈 선배의 손을 거쳐 완성이 되었다. typst를 나중에라도 배워봐야겠다.
그러고 신청자를 받기 위해 구글 폼을 작성해야한다. 학교,학번,이름,전화번호,백준 아이디,개인 노트북 지참 가능 여부 등을 물어보면 된다.
2-2. 홍보
이번 대회 외적 준비를 하면서 느낀 건 바로 미리미리이다. 학원들의 경우, 홍보를 했긴 했으나, 일주일 전에 돌려서 큰 효과를 보지 못했다. 다음엔 적어도 2주에서 한 달 전에는 홍보를 시작해야 될 거 같다.
홍보 범위는 대회 단위에 따라 정해진다. 학원 같은 경우, 도훈 선배가 뽑아준 리스트를 바탕으로 메일 전화 등을 돌렸다. 우선 메일을 돌리고, 이틀에서 사흘 후에 독촉(?) 전화를 돌리면 된다. 백준이나 solved.ac 등 게시판은 도훈 선배가 직접 돌려줬다(사실 대부분의 신청자가 이 길로 오지 않았을까).
인스타를 만들게 된 계기는, 원래는 code master를 알리고, 작년 대회 기출을 보여주는 등의 기능을 하는 웹페이지를 만들자는 의견이 나왔었다. 그러나 짧은 기한 내에 웹까지 다룰 순 없었고, 결국 생각해낸 대안책이 공식 인스타 운영이었다. 인스타에다가 관련 링크와 홍보 포스터를 정리하여 알아보기가 편했다. 하지만 이 역시 홍보 과정에서 인스타 홍보가 빠지는 바람에... 잘 알려지진 않은거 같다. https://www.instagram.com/code_master2024/ 이후 대회 사진 등도 올릴 예정이니 한번씩 팔로우 좀 눌러주세요.
2-3. 오프라인 대회 환경 구성
이 경우는 다음년에 바뀔지도 모르지만, 우리는 학교 자습실이 시설이 잘 되있어서 이를 이용하여 진행했다. 대회 장소를 선정할때는
1. 네트워크가 쾌적한 환경인가?
제일 중요한 문제이다. 이 때문에 대회 진행이 안 될 경우 꽤 많이 애를 먹을 수 있다.
2. 전력 공급이 원활한가?
컴퓨터를 사용하는 경우, 컴퓨터실에서 하면 되지만 그 외의 경우는 노트북을 사용하므로 참가자 전원이 사용 할 수 있는 콘센트가 구비되어야한다.(자습실은 책상마다 콘센트가 딸려 있다!)
3. 스코어 보드를 띄울만한 디스플레이가 준비되있는가?(선택)
사실 이건 있어도 되고, 없어도 된다. 하지만 개인적으로는 없으면 맛이 좀 떨어진다 생각한다.
암튼 이런 기준을 거쳐 선정을 하고, 인원 및 자리 배치를 해준다. 이후 이동형 전자칠판을 이용해서 스코어 보드 준비를 해준다.
1. 컴퓨터 환경 준비
이후 컴퓨터 환경을 준비해줘야 한다. 이번년에는 개인 노트북 지참이 가능하여, 일을 좀 덜었다. 보통은 노트북이나 컴퓨터의 Python, VSC, CodeBlock 이 세가지를 깔아준다. VSC에다가 C++을 설치하는데 꽤 애를 먹은 거 같은데 난 잘 모르겠다.
2. 아이스 브레이킹 프로그램 구성
원래는 도훈 선배의 적극적인 추진으로 열릴 뻔했으나, 원하지 않을 수도 있다는 의견(실제로 설문조사 받아보니까 원하지 않는 다는 의견이 좀 있었다)을 고려해 간단한 복권 이벤트를 열었다.
3. 상장과 상품 준비
상장은 형준쌤이 출력해주셔서 잘 모르겠고, 상품은 문상으로 주었다. 사진촬영용 현수막도 현수막 시킬때 같이 시켰다.
4.간식 준비
제일 중요한(?) 부분이다. 맛있는걸 잔뜩 시키면 된다.
2-4. 그외
검수진 구하기: 이건 도훈 선배가 잘 처리해주셔서 어케하는건지 모르겠다. 아마 백준 게시판에다가 말하고 구하면 되지 않을까.
해설 작성: 오픈 콘테스트까지 끝난 후, 해설을 작성해서 같이 올려둔다. 코멘트 다는 맛이 있다.
후기 이벤트 준비: 홍보 효과를 보기 위해 후기 이벤트를 연다. 오프라인 콘테스트에 참여한 사람들이 후기글을 작성하면 추첨을 통해 기프티콘을 주는 방식이다.
이외에도 여러 보이지 않는 잡일들과 많은 사람들의 노력이 만나면 성공적인 대회가 이루어진다. 이번 대회를 개최하며 정말 많은 것을 배우고 느꼈다. 끝으로 출제진인 도훈 선배와 차형준 선생님, 준세와 진서, 모든 검수진 분들과 오프라인/오픈 콘테스트에 참여해준 모든 분들께 감사를 드린다.