Grand Arena Party 출제·운영 후기
지난 2월 3일 solved.ac Grand Arena Party에 문제 4개를 출제하고, 퍼즐 헌트 이벤트의 일환으로 퍼즐 부스를 운영했습니다. 다양한 이벤트 덕분에 즐거운 경험이었습니다!
오랜만에 블로그에 글을 쓰네요! 그동안 여러 대회에 출전하거나 알고리즘 문제를 계속 출제하고 있었지만, 매번 후기글을 써야겠다고 다짐했다가 다른 일들에 밀려서 나중으로 미루곤 했습니다.
하지만 지난 2월 3일 토요일에 열린 Grand Arena Party는 좀 더 특별한 경험이었기 때문에, 이번 대회를 계기 삼아 후기글을 적어 보려고 합니다. 마침 solved.ac 디스코드에서 참가 후기 이벤트를 진행하고 있기도 하고요. 저는 운영진이라 추첨 대상에 들어갈지는 모르겠지만요... ㅎㅎ

그랜드 아레나 출제에 합류하다
먼저 그랜드 아레나에 대해 간단히 설명하자면, solved.ac에서는 지난 7월부터 아레나 시스템을 도입했습니다. 기존의 문제 해결 티어와 별도로 아레나 레이팅이 생겼고, Codeforces처럼 주기적으로 대회(아레나)가 열려서 참가자의 성적에 따라 아레나 레이팅이 오르내리는 시스템입니다. 그랜드 아레나는 solved.ac에서 공식으로 출제하는 아레나입니다. 다른 커뮤니티 대회도 몇 가지 조건을 충족하면 아레나로 열 수 있습니다.
solved.ac 그랜드 아레나 출제에 합류하게 된 건 작년 여름부터였습니다. 8월에 시프트(shiftpsh)님으로부터 그랜드 아레나 출제에 관심이 있는지 질문을 받았고, 저는 제안을 받아들여서 9월에 출제자 디스코드에 초대받았습니다.
비밀 하나를 얘기하자면, 저는 사실 Grand Arena #3의 출제에만 관여하는 건 줄 알고 가벼운 마음으로 합류했습니다. 그런데 들어가 보니 쾰른(cologne)님이 규칙에 “한 번 들어오면 나갈 수 없다.”를 적어 두셨습니다. 저도 모르는 사이에 앞으로의 그랜드 아레나에 계속 출제해야 하는 노예계약을 맺게 된 겁니다(?)
하지만 저는 오랫동안 비축해 둔 아이디어 노트가 있고, 그 아이디어들이 언젠가 빛을 봤으면 좋겠다고 생각하기 때문에 꾸준히 문제를 출제할 수 있는 대회가 있다는 건 좋은 일이었습니다. 그래서 이왕 이렇게 된 김에 계속 출제해 보기로 했습니다.
아무튼 합류한 뒤 다 같이 디스코드에 문제 아이디어를 공유하기 시작했습니다. 그리고 11월에 열린 Grand Arena #3에 TSM 문제를 제공했습니다. 이 문제도 뒷이야기가 있는데, 나중에 기회가 된다면 적어 보겠습니다.
Grand Arena Party 문제 준비
Grand Arena Party는 제가 두 번째로 출제하는 그랜드 아레나입니다. 이번 아레나는 온사이트로 열렸기 때문에 운영진 분들이 대회 외에도 즐길 수 있는 다양한 이벤트를 준비해 주셨습니다. 경쟁보다는 참가자들끼리 네트워킹을 하며 즐기는 것에 초점을 맞췄고, 그래서 Grand Arena Party라는 이름이 붙었습니다. 온사이트로 참가하기 위해서는 기준에 따라 추첨을 통해 선발되어야 했기 때문에, 현장 참석이 어려운 사람들을 위해 Grand Arena #4라는 이름으로 온라인 미러 콘테스트도 함께 열렸습니다.
GA #4의 문제는 GA #3에서 사용되지 않은 문제 몇 개와 새롭게 올라온 문제 몇 개로 구성되었습니다. 제가 제공한 문제는 아래의 네 문제입니다.
- 아리스, 청소합니다! (Easy: Div2C / Hard: Div1E)
- 트리 탐색기 (Easy: Div2E / Hard: Div1H)
- 과부하 방지 (Div2F, Div1B)
- 가스 충전소 (Div1D)
저는 네 문제를 모두 세팅하기에는 일정상 무리가 있을 것 같아서, Easy / Hard 버전이 있는 두 문제만 직접 세팅하기로 하고 나머지 두 문제는 다른 출제자 분들께 세팅을 부탁드렸습니다. 과부하 방지는 시프트님, 가스 충전소는 키파(kipa00)님이 맡아 주셨습니다.
하필이면 이번에 준비한 문제들이 전부 데이터를 제작하기 까다로운 문제들이라 상당히 애를 먹었는데, 그래도 다른 출제자 분들께 맡긴 문제들은 데이터를 적절히 만들어 주셔서 다행히 크게 손댈 부분이 없었습니다.
제가 세팅한 두 문제, 그 중에서도 특히 “아리스, 청소합니다!” 문제는 데이터 제작이 지옥과 같았습니다. 아리스(로봇 청소기)가 이동하는 과정을 시각화하기 위해 웹으로 시뮬레이터도 만들었고, worst-case 데이터를 구성하기 위해 하루 종일 노트와 펜을 들고 씨름하기도 했습니다.
그런데 결국 그 고생을 한 결실이 있었습니다. 자세한 이야기는 뒤에서 설명하기로 하고, 일단 퍼즐 헌트 이벤트 이야기로 넘어가 봅시다.
퍼즐 헌트 이벤트 준비
10월 말에, 하바나(havana723)님이 참가자들끼리 팀을 나눠서 진행할 수 있는 퍼즐 헌트 이벤트를 만들고 싶다고 디스코드에 제안해 주셨습니다. 오프라인인 걸 살려서 물리 퍼즐*이 있으면 좋겠다는 말에 저는 즉시 물리 퍼즐이라면 얼마든지 제공 가능하다고 답했습니다. 제 취미 중 하나가 퍼즐 수집인데, 지금까지 200개가 넘는 다양한 종류의 퍼즐을 수집해 두었거든요. (*여기서 물리 퍼즐은 물리학 퍼즐이 아니라 물리적인 실체가 있는 퍼즐을 말합니다. 기계적 퍼즐, Mechanical Puzzle이라고도 부릅니다.)
얼마 지나지 않아 퍼즐 기획을 위한 디스코드 서버가 새롭게 만들어졌습니다. 저도 퍼즐 문제 제작에 참여하면 좋았겠지만, 이미 회사 일과 문제 출제만으로도 충분히 바빴기 때문에 아쉽게도 그러지 못했습니다.
퍼즐 헌트는 웹 페이지에 제공된 퍼즐을 풀어서 얻어낸 정답 문자열을 제출하는 방식입니다. 방탈출이나 미궁 게임처럼 창의적인 발상을 요구하고, 알고리즘 대회 이벤트인 만큼 관련 지식을 활용하는 문제들로 구성되었습니다. 이벤트 페이지는 밤하늘의 별을 배경으로 꾸며졌는데, 데모 사이트를 보고 예쁘다는 생각이 들었습니다.

퍼즐 헌트 문제 중 한 자리를 제 물리 퍼즐 부스가 차지했습니다. 퍼즐을 해결하면 힌트 조각으로 정답 문자열의 일부분을 제공하고, 총 3개의 힌트 조각을 모으면 답을 알 수 있는 형식으로 구성했습니다.
물리 퍼즐 부스를 논의하는 스레드에서는 하바나님이 제 엄선 퍼즐 10개 정도를 들고 와달라고 해주셨고, 저는 넉넉하게 20개 정도를 들고 간다고 했습니다. 그리고 대회 전날 집에 있는 모든 퍼즐 박스를 뒤적거리다가 결국 50개 정도를 들고 가게 되었습니다. 😅

Grand Arena Party 당일
참가자들은 오전 10시 반부터 입장 가능했지만, 스태프는 행사장 준비를 위해 오전 9시까지 도착해야 했습니다. 시간에 딱 맞춰서 행사장에 도착했습니다. 지금껏 가본 대회장 중에 가장 쾌적한 환경이었습니다. 도착하니 몇몇 스태프 분들이 미리 와 계셨고, 대회장도 어느 정도 꾸며져 있었습니다.
명찰과 스태프용 티셔츠, 스티커, 참가자 기념품 몇 개를 챙겼습니다. 벽면에는 Grand Arena Party 현수막이 걸려 있고 풍선들이 늘어져 있었습니다. 퍼스트 솔브 풍선에 출제자 사인을 해야 한다길래, 도합 일곱 개의 퍼솔 풍선에 사인을 했습니다.

대회장 구석에는 저만을 위한 퍼즐 부스가 준비되어 있었습니다! 기대감에 부풀기 시작했습니다. 옆에 캐리어를 열어 두고 부스에서 사용할 퍼즐을 골랐습니다. 다양한 난이도의 퍼즐을 가져왔기 때문에 밸런스를 맞추기 위해 난이도별로 힌트 조각 개수를 다르게 주기로 했습니다. 0.5점, 1점, 2점, 3점으로 퍼즐들을 분류하고, 0.5점에는 사람들이 익숙할 만한 캐스트 퍼즐들을 두었습니다.
뭔가 컨셉질을 하면 좋겠다는 생각이 들어서 바를 컨셉으로 잡았습니다. 힌트 조각은 공카드에 부분 문자열을 적어서 주었는데, 힌트 조각 대신 코인이라는 이름으로 불렀습니다.
queued_q의 퍼즐 바에 오신 것을 환영합니다! 늘 먹던 맛부터 챌린징한 맛까지, 다양한 취향에 맞춰 준비했습니다. 퍼즐을 해결하면 난이도에 따라 0.5코인부터 3코인까지 제공하고 있습니다. 1코인 이상부터는 국내에서 쉽게 구하지 못하는 희귀한 퍼즐들로 구성되어 있습니다. 원하시는 메뉴를 말씀해 주세요. 테이크아웃도 가능합니다!

참
문제별 후기
(앞에 적은 고생을 한 결실)