코드 복사/붙여넣기 하는 당신이 아름답습니다.

이거 쓰기 전에 소개 페이지 업데이트 하고 왔는데 충격적이네요 (;;)

ㅋㅋㅋㅋ 미친놈도 아니고 무슨 대회를 한 달 간격으로 열었네

이제 두 번 다시 대회는 없다

들어가기 전에

원래 이 글의 제목은 내가 문제를 내는 방법이었는데 고민하다가 지금 제목으로 바꿨습니다.

요즘 종류를 불문하고 많은 종류의 단체에서 알고리즘 대회를 열었거나, 열 계획이거나, 열고 싶은데 막막해 하는 것으로 알고 있습니다.

저는 대회의 퀄리티를 떠나서, 적지 않은 횟수의 대회를, 적지 않은 종류의 신분으로, 적지 않은 파트너와 열어 봤다고 생각하므로

아마 이 글을 읽는데 쓰는 시간이 최소한 의미 없지는 않을 것 같습니다.

대회의 시작부터 끝까지 제가 아는 선에서 다 적어보고자 합니다.

대회를 시작하려면

다음과 같은 준비물이 필요합니다.

  1. 결심
  2. 총괄자
  3. 운영진
  4. 현장 스태프
  5. 출제진
  6. 검수진
  7. 돈 (규모가 크거나, 하고 싶은 게 많은 경우)
  8. 장소 (on-site 대회의 경우)

소규모 동아리 주최 대회의 경우에는 위에 적힌 등장인물이 모두 동일 인물로 구성되는 경우가 많습니다. (…)

사실 저건 동아리고 뭐고, 정올이나 icpc급으로 큰 규모의 행사가 아닌 이상은 다 똑같아요. 사람(정확히 말하면 봉사자 또는 인건비)이 없어요 ㅠㅠ근데 선린은 인건비가 꽁짜라 그런가 되더라구요 (?)

경험 많은 리더가 있지 않은 이상 좋은 문제 세트를 만드는 것은 불가능합니다.

경험 없는 사람들끼리 모여서 좋은 대회를 여는 것도 불가능합니다.

여기까지 읽으셨다면 ㅅㅂ 경력직만 시키면 난 어디서 대회 여냐? 같은 생각을 하게 될 텐데

충분한 실력과 경험의 검수진을 꼭 섭외하세요. 그럼 괜찮습니다.

행정적인 부분이야 사실 좀 미끄러져도 괜찮아요.

하지만 문제가 구데기거나, 문제에 오류가 있으면 그냥 대회가 망합니다. (수능 지진과 수능 문제 오류를 떠올리시면 됩니다.)

저는 아는 고수가 없어요 ㅠㅠ: BOJ Slack에 오시면 고수 분들이 많으니 슬랙에서 부탁하는 것도 하나의 방법이 될 수 있습니다.

그리고 교수님이나 선생님이 도와주신다고 해서 교수님을 너무 맹신하지 마세요.

교수님들은 바쁘십니다. 하나부터 열까지 다 챙겨 주시지도 않을 뿐더러, 혹여 그런 교수님이 계신다고 해도, 그 분이 출제와 대회 운영 경험이 풍부해서 대단한 대회를 보장해 주실 확률은 극히 적습니다.

일단 열기로 결심을 했다면, 뭐가 필요한지 차근차근 따져가면서 준비하면 됩니다.

생각보다 별 거 없는 작업이에요. 대신 시간과 정신이 많이 갈립니다(…)

잘 푸는 것과 잘 여는 것은 다르다

우리 동아리에 막 코드포스 오렌지, 레드 있다고 해서 대회가 성공적으로 열릴 것이라 기대하지 마세요.

문제를 잘 푸는 것대회를 잘 여는 것절대로 다릅니다.

문제를 잘 푸는 것문제를 잘 내는 것절대로 다릅니다.

대회를 여는 것은 전적으로 단 한 명의 리더에 크게 의지합니다.

운영진과의 협업? 협업은 리더가 계획하고, 리더로부터 출발합니다.

꼼꼼하고, 성실하고, 계획적인 리더가 없으면 절대로 대회를 열 수 없습니다.

대회는 어디서 여나요

직접 서버를 열고 저지 시스템을 구축해서 개최하는 방법이 있습니다.

DOM Judge, CMS, QOJ 등의 시스템이 있습니다.

하지만 처음 시작하기에는 꽤나 부담스럽고, 실수할 여지가 많은 작업입니다.

BOJ에서 대회를 개최할 수 있습니다. (이 링크에 있어요.)

입사 시험, 입학 시험, 기업 대회처럼 뭔가 공적인 대회가 아닌 이상은 다 무료로 개최할 수 있습니다.

다만 문제가 모든 유저들에게 공개되므로 문제 퀄리티에 더욱더 신경을 쓰셔야 합니다.

출제는 어떻게 하나요

다음과 같은 것들을 먼저 파악해야 합니다.

  1. 참가자의 실력
  2. 출제진의 실력
  3. 검수진의 실력
  4. 희망하는 대회 퀄리티

위의 것들을 파악했으면, 출제진과 참가자의 수준에 맞게 잘 내면 됩니다.

사실 출제에 관련해서는 디테일이 하나부터 열까지 진짜 많은데

이걸 글로써 다 적기는 좀 귀찮네요…

나중에 시간 되면 추가하거나 따로 글을 쓰거나 하겠습니다.

내가 문제를 내는 방법

네 그래서 적었습니다.

이 링크에 있어요.

스폰은 어떻게 받나요

스폰을 받고 싶은 곳에 보낼 기획서를 작성합니다.

양식은 딱히 정해진 건 없지만 다음과 같은 항목이 들어가면 좋지 않을까요?

  1. 대회 규모
  2. 참여 대상
  3. 희망하는 후원 금액/품목
  4. 기대하는 효과
  5. 후원을 통해 후원사가 얻게 될 이득

보통 5는 참가자 대상의 기업 홍보 세션을 넣는 방식이 일반적입니다.

장소가 없다면 장소 후원을 받을 수도 있습니다.

학교 동아리라면 학교에 문의를 하는 방법도 있습니다…만

학사랑 같이 일 하려면 혈압약 꼭 준비하세요 ^^

아니 그래서 스폰 어떻게 받냐구요

들어가기 전에

교내 대회는 학교가 아닌 외부에서 지원 받기가 정말 쉽지 않습니다. 아니 그냥 규모가 엄청 크지 않은 이상은 교내고 나발이고 메일 답장 받는 것조차도 쉽지 않아요. 아무 연줄도 없는 기업에서 후원을 받는다? 대단한 인싸력이 있다면 가능할지도…

그래서 보통은 대기업 말고, 스타트업/중소/중견 기업에 다니는 지인을 통해 후원을 요청하는 방법이 일반적입니다. 지인을 적극적으로 활용하세요!

아 그리고 꼭 기억하세요. 기업의 스폰은 투자입니다. 투자한만큼 이익이 있어야 합니다. 예를 들어, 스타트업은 대체로 인력이 절실합니다. 참가자와 기업을 먼저 파악하세요!

여러분들이 제일 궁금한 건 그래서 금액은 얼마 불러야 하나요? 맞죠?

필요한만큼 부르시면 됩니다. 보통 대회에서 필요한 항목은 아래와 같습니다.

  1. 식비(샌드위치, 과자, 음료, 식사 등)
  2. 상품
  3. 장소
  4. 풍선(풍선 하나에 1500원 꼴로 굉장히 비쌉니다…)
  5. 티셔츠
  6. 전기(멀티탭 등)
  7. 기타 용품

본인의 상황에 맞게 예산안을 먼저 작성해 보세요. 보통 대회를 크게 벌리지 않는 이상 식비나 상품 외에는 잘 사용하지 않는 편입니다. 멀티탭 정도는 학사에서 빌려줄 수 있으니 잘 알아보세요.

일반적인 경우

나는 학생도 뭣도 아니다!

지인 찬스 쓰셔야 합니다(…) 혹은 대졸이시라면 교수님 찾아 뵙고 도움을 요청하시는 방법도 있습니다. 그런데 될런지는 잘 모르겠네요…

고등학생의 경우

정보 교과 담당 선생님, 영재부 (부장) 선생님, 또는 본인과 친한 (파워가 강한 (부장)) 선생님, 교감/교장 선생님을 찾아가서 여쭤볼 수 있습니다. 학교에서 긍정적으로 받아들이기만 한다면, 예산으로 간식 제공 정도는 충분히 가능하고, 컴퓨터실 등의 장소도 제공 받을 수 있습니다.

학교가 선린처럼 프리하고 오픈된 학교가 아닌 이상, 고등학교에서 판을 크게 벌리는 것은 불가능하다고 보시면 됩니다. (반대로 말하면 선린은 그런 게 가능해요 ㅎㅎ…)

대학생의 경우

동아리, 소모임, 연합 등 정규 단체 신분으로 지원 받는 것이 더 유리합니다. 아무것도 없는 학부생 나부랭이 네다섯 모인다고 OK 해 주기가 쉽지 않거든요… 물론 학교가 프리하면 될 수도 있습니다만 흔치는 않습니다. 알고리즘 동아리장 등의 명의가 있으면 더 수월합니다.

교내 학사(학과, 학부, 단과대, 전체 등 되는 곳 다 찔러 보세요) 또는 sw사업단 같은 곳에 지원을 요청하는 것을 가장 추천드립니다. 학사에서 안 된다고 해도 교수님께 말씀 드리면 되는 경우가 종종 있습니다. 힘이 강력한(?) 교수님일수록 좋습니다.

(동아리와) 꾸준히 파트너로, 혹은 친하게 지내는 기업이 있다면 해당 담당자분께 말씀드려 보세요.

혹은 NAVER D2라고, 대학생 동아리 같은 단체를 지원해 주는 곳이 있습니다. 이렇게 퍼블릭한 글에 오픈해도 되는지는 모르겠지만 뭐… 홈페이지 찾아서 들어가 보시면 굉장히 개발자스러운 페이지가 나오는데, 밑에 메일 찾아서 연락해 보세요. 최소 한 달 전에는 연락 달라고 하셨으니 유의해 주세요.

온사이트 대회 준비

상황에 따라서 정말 다른데, 중요한 포인트만 몇 가지 집고 넘어가겠습니다.

  1. (개인 노트북 사용하는 경우) 멀티탭, 와이파이
  2. (컴퓨터 제공의 경우) IDE 세팅, 키보드/모니터/마우스 등 점검
  3. 간식, 다과, 식사
  4. 상품
  5. 냉난방 (이거 생각보다 중요합니다.)
  6. 상세 규칙 (화장실, 컴퓨터, 질문, 퇴실, 시상, 참가비, 레퍼런스, 등등등…)
  7. 풀이 슬라이드
  8. 감독관 배치
  9. 앞에 스코어보드 띄우기
  10. 사진 촬영 (후원사 제출용 등)
  11. 뒷정리 (진짜 중요합니다. 뒷정리 개판이면 내년은 없어요.)
  12. 문제 하드카피 제공 유무
  13. 명찰 등 이름표
  14. 보고서 등
  15. 참가자 관리 (명단, 계정, 신청)

생각나는 것만 쭉 적었는데도 진짜 많네요

디비전 분리

이걸로 고민하는 학교가 많은 걸로 압니다.

상황에 따라 굉장히 달라서 제가 뭐라고 할 말은 없는데… 제 경험을 몇 자 적습니다.

나누지 않는다

잘하는 사람이 상을 타는 건 당연한 일입니다.

디비전 나누면 할 일이 배로 늘어나서 힘들어요 ㅠㅠ

대신 모두가 재밌게 즐길 수 있도록 노솔브 방지부터 챌린징한 문제까지, 난이도를 정규분포로 만들면 좋습니다.

실력의 편차가 너무 크거나 잘하는/못하는 사람이 극소수인 경우에는, 그 사람들 무시하고 한 쪽에만 신경 쓰는 방법도 있습니다. 대신 어려운 문제 하나 던져 준다던지(?)

적당히 나눈다

디비전은 2개까지만 나누는 것이 현실적으로 좋아 보입니다.

그 위로는 정말 많은 열정과 시간을 쏟지 않으면 힘들어요…

디비전을 강제로 지정하고 싶다면 수상 기록, 학년, 코드포스 레이팅 등의 기준이 있을 수 있습니다.

대회 당일에 무엇을 해야 하나요

대회 중에 운영진으로 죽치고 앉아 있으면 시간 진짜 안 갑니다…

참가할 때는 몰랐던 시간의 느림을 느낄 수 있어요.

대회가 진행되는 동안 질문을 받거나, 제출된 코드, 채점 현황, 스코어보드 등을 관찰하면서 계속 예의주시 하면 됩니다.

온사이트 대회라면 풍선을 나르거나, 감독을 하거나, 간식 나르기 등을 할 수 있겠네요.

질의 응답은 꼭 출제자가 받거나, 문제를 훤히 꿰고 있는 사람이 받으세요.

모르는데 잘못 대답하면 대회 망합니다.

돌발상황 대처

돌발상황이 발생하면 절대로 당황하지 말고 침착하게 대처하세요. 대회 러닝타임은 생각보다 엄청 깁니다.

대회 도중에 문제 오류를 발견한 경우

오류의 심각성에 따라서 대처법이 다릅니다. 각 대회의 상황 등에 따라서도 대처법이 다릅니다. 아래는 참고만 해 주세요.

사소한 오타 등: 지문을 수정하고 공지. 계속 진행합니다.
데이터 white space 오류: 이게 굉장히 애매한데, white space까지 잘 처리해야 하는 문제라면 그냥 데이터가 틀린 겁니다. 아래를 참고하세요. 그게 아니라면 대부분 이 오류는, C++ 기준으로 공백 같은 거 신경 안 쓰고 데이터 만들었는데 파이썬 등의 사용을 허용한 경우입니다. 이거는… 잘 모르겠어요 검수할 때 잘 신경씁시다.
심각한 지문 오류: 아래의 데이터 틀린 경우와 유사한데, 운영진 입장에서 이 정도는 그래도 수정 후 공지하고 넘어갈 법한 것 같습니다.
데이터 틀림: 코드포스의 경우에는 Unrated합니다. 온사이트 대회의 경우에는 대회를 미루기가 쉽지 않아서… 운영진의 선택입니다. 문제를 빼고 그냥 진행하거나, 빠르게 고쳐서 진행하거나, 대회 던지고 사과하거나 (…)

온라인 대회 (대회 일반)

이상한 질문이 올라오는 경우: 무시하면 됩니다. 단, 답변자가 이상한 질문으로 치부하고 넘겼는데 중요한 질문일 수 있으므로 꼼꼼히 잘 읽어야 합니다.
system call, 악의적 제출 등 트롤러가 있는 경우: 대회에서 제외시킵니다.
초고수들이 어떤 문제를 다 틀리는 경우: 데이터가 틀렸을 가능성이 있습니다. 손 부들부들 떨면서 간절한 마음으로, 고수들의 제출과 문제를 다시 검토합시다.

오프라인 대회

지각자가 많은 경우: 상황에 따라 다른데 조금 연기하거나, 무시하고 진행합니다.
치팅: 다른 참가자들이 다 보고 들을 수 있도록 큰 소리로 쫓아냅니다.
하드웨어 고장: 주최 측이 제공한 컴퓨터라면 여분의 자리로 옮겨 줍니다. 개인 노트북이라면 참가자의 책임입니다.
여자 화장실: 이거 생각보다 당황스럽습니다. 화장실 감독관이랑 같이 가야 하는데 여자 감독관이 없는 경우… 화장실 앞까지만 데려다 줘야죠 뭐…
스코어보드 프리즈: BOJ에서 대회를 열면, 관리자 계정으로는 스코어보드가 프리즈되지 않고 보이는 경우가 있습니다. 이 경우 “전체 스코어보드” 말고, “스코어보드 -> 전체화면 보기”를 하면 관리자 계정으로도 프로즌 보드가 보입니다. 미리 알아두거나, 옵저버 계정을 따로 준비하세요.

뭘 더 적지

글을 좀 다듬어야 하는데 귀찮네요…

추가할 거 있으면 알려 주세요

아무말

백준, 백준 온라인 저지, BOJ, Baekjoon Online Judge, C, C++, 씨, 씨쁠쁠, JAVA, algorithm, 자바, 알고리즘, 자료구조, 문제, 문제 풀이, 풀이, 내가 대회를 개최하는 방법, 알고리즘 대회 여는 법, 알고리즘 대회 개최, 프로그래밍 대회, 문제 출제, 내가 문제를 내는 방법, 알고리즘 문제 출제, 알고리즘 문제 내는 법

wookje.kwon's profile image

wookje.kwon

2019-08-29 14:36

Read more posts by this author