포스트

2023 전남대학교 PIMM 알고리즘 파티를 되돌아보며

군대에서 대회 굴린 이야기 …대회가 날 굴린건가..?

안녕하세요, “2023 전남대학교 PIMM 알고리즘 파티” 대회(핌 파티) 총괄을 맡은 박종현(belline0124)입니다.

오늘 9월 3일 인생 첫 대회 개최가 큰 사고없이 끝나 정말 기쁩니다.

이번에 대회 준비 과정 몇 가지를 되짚어보며 사담을 조금 곁들여보려고합니다.

문제 준비

문제의 평균 난이도는 내부적으로 평가한 전남대학교(전남대) 평균 알고리즘 해결 능력보다 높은 수준으로 내도록 했습니다. 전남대는 PS가 잘 퍼진 학교가 아니었으므로 전남대 평균 알고리즘 해결 능력에 맞춰 문제를 출제한다면 일반 참여자들이 상당히 빠르게 문제를 해결할 것 같았기 때문입니다.

이제와서 생각하면 대회 시간을 줄이고 문제 난이도를 하향 조정할 수도 있었을 텐데 싶기도 합니다. solved.ac 골드 레이팅도 꽤 어려운 난이도에 속하는데 네번째 문제부터 세개 문제가 연달아 골드 수준으로 의도되었으니, 일단 전남대 재학생 상당수는 C번 문제가 마지노선이었을 것입니다. 실제로 전남대학교 1위도 A, B, C 세 개 문제를 풀었습니다.


실제로는 이렇게 안생겼습니다. 진짜로..

그리고 C번 문제.. 인기투표에 들어간 문제의 그림은 핌의 디자인 전공 멤버 강도희 씨의 도움을 받았습니다. 갑자기 뜬금없는 부탁이었을텐데 잘 도와줘서 너무 감사합니다.

상품 선정

원래는 오픈 컨테스트 순위권 참여자 상품과 특별상만 계획하고, 재학생 특전과 추첨상은 고려하지 않았습니다.

특별상은 대회 이름을 알고리즘 “파티”로 결정하는 순간 계획했습니다. 파티를 표방했으니 도전과제를 제시하고 달성하는 분께 소정의 상품을 지급하는 것이 이벤트성이 있다고 생각했습니다. 계획 단계에서 제안된 도전과제는 총 10개였지만, 특별상 수가 지나치게 많아지면 주객전도가 된다는 의견이 있어 괜찮은 아이디어를 골라 4개로 줄였습니다.

나머지 재학생 특전, 추첨상 두 상은 예산안을 발전시키는 과정에서 추가 준비된 계획입니다.

먼저 재학생 특전의 경우, 재학생을 끌어들이려면 재학생 순위를 따로 집계하고 상품도 따로 주어야한다는 의견이 있었습니다. 나름 전남대 동아리에서 개최한 전남대 대회이므로 재학생에게 혜택을 주는 것이 명분으로도 충분한 것 같아 KSA Automata Summer Contest 사례를 참고하여 특전을 만들었습니다.

추첨상의 경우, 당초 예상보다 TF 내부적으로 개인 후원이 늘어서 예산이 조금 남은 덕에 만들 수 있었습니다. 저는 개인적으로 별 생각없이 모든 참여자를 동일한 확률로 추첨할 생각이었는데, TF 내부에서 솔브 수 가중치 추첨 의견이 있어 유틸컵 사례를 참고하여 의견대로 솔브 수 가중치로 추첨상을 지급하기로 했습니다. 가중치 추첨 처리는 검수진이신 utilforever님, kiwiyou님이 도움을 주셨습니다

solved.ac 프로필 상품은 왜 그렇게 정했나?

solved.ac 프로필 상품을 노리고 대회에 참여하는 재학생은 많지 않을 것 같아서 무리인 선이 아닌 이상 TF 멤버들의 의견을 최대한 존중했습니다.

뱃지의 경우 원래는 전남대 관련 SNS 웹툰의 캐릭터 사용을 협조받아 만들려고 했는데 작가분과 연락이 닿지 않았습니다. 그래서 그 대안으로 핌 로고를 뱃지로 만들기로 했습니다.

로고 자체가 무언가 크게 심미적인 것은 아니어서 범용성이 상당히 떨어지는 뱃지가 되었지만, 뱃지를 지급하는 대회는 자주 열리기 때문에 굳이 프로필에 내걸만한 특별한 뱃지를 만들 필요는 없겠다고 생각해서 통과시켰습니다. 사실 대회 이름 자체가 핌 파티이기도 해서 명분은 충분했습니다.

배경의 경우 원래는 전남대 용봉캠 전경 실물 사진을 사용할 생각이었지만 TF 인원만으로는 배경에 사용할 적절한 사진을 촬영하기에 조금 역부족이었습니다.

개인적으로는 zoom같은 교내 사진 동아리의 협조를 받아서라도 실물 사진을 사용하는게 좋겠다 하는 생각이 있었지만, 재학생이 아닌 오픈 컨테스트 참여자 상당수는 캐릭터 배경을 더 선호할 것 같아 한별이 배경 기획을 통과시켰습니다.

에디토리얼 준비

이전에 UCPC 에디토리얼을 인상깊게 둘러본 기억이 있어서 에디토리얼을 신경써서 준비하는건 대회 개최를 결정했을때부터 확정 사항이었습니다. 그리고 오래전부터 팀 바닐라 브랜딩 가이드라인을 인상깊게 읽어보면서 출판 가능하고 심미적인 PDF 만들기에 관심을 가지고 있었기 때문에 에디토리얼 준비에 공을 좀 들였습니다.

에디토리얼 준비의 일환으로 대회를 준비하며 에디토리얼 빌더, turbo-waffle(tw)을 따로 만들었습니다. 이름은.. 깃허브가 추천해준 레포 이름을 그대로 사용해서 이모양인데 계속 사용하다보니 나름 정감있는 이름인 것 같습니다. tw를 만들게 된 더 자세한 경위는 나중에 기회가 되면 다른 글로 남겨보겠습니다.

tw는 군대 안에서 한정된 시간 안에 짜느라 꽤 주먹구구식으로 작성했습니다. 그래서 한계가 좀 명확합니다. 당장 생각나는게 머리말 꼬리말 기능의 부재인데, 이건 tw 코드가 아니라 에디토리얼 스타일 정의 코드에서 낑낑대다가 포기한게 아직까지 아쉬움으로 남아있습니다.

그래도 tw는 나름 잘 작동하니 가성비 면에서는 어느정도 만족스러운 셈입니다. 혹시나 다른 누군가가 사용할까 싶어 좀 사용성을 고려해서 tw 코드를 작성하려고는 했습니다. 잘 안된 것 같지만은 말이죠.

에디토리얼은 처음부터 제본, 출판을 고려하고 준비했습니다. 에디토리얼 준비 과정에서 인쇄업체에 확인해보니 정말 한권의 책처럼 무선제본을 하기 위해서는 충분한 페이지가 준비되어야한다는 모양이었습니다.

에디토리얼 양을 뻥튀기 할 필요가 생겼으니 이 참에 에디토리얼에 문제 해설만 넣는 것이 아니라 대회 자체에 대한 책을 만들어보기로 했습니다. 그래서 에디토리얼은 대회 상세 정보, 문제 지문, 문제 해설뿐 아니라 각종 상품의 추첨 결과를 담은 주피터 노트북까지 포함한, 핌 파티 백서가 되었습니다.

전남대학교 재학생 집계 등록 폼

대회를 준비하면서 급하게 준비한 코드 더미가 하나 더 있습니다. 전남대 재학생 등록 폼 애플리케이션, literate-train(lt)입니다. 이것도 깃허브가 추천해준 이름을 그대로 사용했습니다. lt는 학교 도메인 메일 계정으로 인증 코드를 보내 재학생 인증을 간단하게 진행하는 웹앱입니다.

lt는 tw보다 급하게 만들어서 온갖 생산성 프레임워크로 떡칠해 이것도 별로 그리 좋은 퀄리티는 아니었습니다. 졸업생이나 대학원생도 인증을 통과할 수 있다는 문제점도 있었지만 사실 실제로 사용되지는 않았으므로 아무래도 좋은 것이 되어버렸습니다. 등록 모집 시작 직전에 전남대 메일 서버가 lt가 보낸 메일을 suppression하는 문제를 발견해서 급하게 구글 폼으로 재학생 등록을 받는 것으로 방법을 바꿨기 때문입니다.

휴가

그리고 이윽고 대회 당일, 대회를 모니터링하기 위해 정말 짧은 휴가를 사용했습니다. 부대 사지방에서 TF 멤버들과 연락을 주고받으며 대회를 모니터링할 수도 있겠지만 대회 시간에 근무가 잡힐지 모를 일이고, 근무가 아니더라도 중대에서 갑자기 호출할 수도있으므로 확실히 부대를 떠나 있는게 좋겠다고 생각했습니다. 여담으로 제 걱정은 딱 들어맞아서, 휴가가 아니었으면 근무 순번 상 정확히 대회 시간에 근무에 투입될 모양이었습니다.

그래도 나름 사람 쉬는 주말인데 직장 일 하지 않겠다고 휴가를 쓰는게 무언가 이상한 것 같았지만은, 휴일에도 각종 상황에 대응하기 위해 군 장병들에게 주둔지 거주 의무가 있는 것일테니 그러려니 하기로 했습니다.

휴가 나와서 일하는 사람

모든 게 준비된 채 휴가를 나온 듯 했지만 사실 모든 것들이 준비되지는 않았습니다. 휴가 나와서도 마지막 검수 작업이 한창이었으니까요. 다른 중요한 일들을 우선시해 문법 검사기를 돌리지 않은 것이 화근이었던 것 같습니다.

두 만족하는 현재의 총투표수를 추정한다. …(중략)… 가능한 총 투표수가 여러 가지 …(후략)
Source: 29616번: 인기투표

역시 사람은 여유를 가지고 일을 해야하는 것 같습니다. 결국 마지막 검수도 제대로 적용되지 않은 채 대회가 진행되었고, 저 문제는 대회가 끝나고 문제가 공개된 뒤에야 알았습니다. 급하게 BOJ 스택에서 수정해봤지만 문제가 공개된 뒤에는 BOJ 스택과 백준 문제 사이의 동기화가 끊어지는지 수정 사항이 적용되지는 않았습니다.

검수를 끝내고 대회가 시작되고도 일을 멈출 수 없었습니다. 예상했던 것보다 대회 통계가 다양한 내용을 보여주지 않아서 채점 결과를 긁어오는 코드가 필요했습니다. 딱 대회 끝날 즈음에 마무리했으니 어떤 의미로는 저도 대회를 즐긴 셈입니다. 온갖 삽질의 결과물은 일단 에디토리얼 /src/attachments에 추가해두었습니다. 나중에 필요한 분이 계시면 참고하시면 될 것 같습니다.

문제 난이도 평가와 정렬

무슨 문제를 낸거야 정환 초이!
- ???, 대회를 모니터링하며

대회 시작 전 여러번 밝혔듯, 문제는 추정되는 난이도를 바탕으로 오름차순 정렬했습니다. 출제진, 검수진의 의견을 종합해 <D. 동전 탑 게임>은 골드 3, <E. 미술 시간>은 골드 2.8 정도로 평가되어서 <C. 동전 탑 게임>을 <D. 미술 시간>보다 앞에 두도록 했는데 실제 난이도와는 조금 달랐던 것 같습니다.

<D. 동전 탑 게임>은 10.274%의 정답률을 기록했고, <E. 미술 시간>은 29.640%의 정답률을 기록했습니다. 물론 <C. 인기투표>의 정답률은 <E. 미술 시간>보다 낮은 18.248%라서 정답률이 항상 난이도 평가의 지표가 되기는 어렵겠지만, 대회 종료 후 solved.ac 레이팅이 <D. 동전 탑 게임>이 플레티넘 4, <E. 미술 시간>이 골드 3으로 평가된 것을 생각하면 <D. 동전 탑 게임>이 확실히 어려웠던 것 같습니다.

두 문제의 순서만 잘 바꿨으면 난이도 커브가 아름답게 그려졌을텐데 조금 아쉽습니다. 나름 원인을 찾아보자면.. TF 사람들 모두가 정환이(jh01533)의 “게임 이론 고평가설”에 당해버렸다..? 으음.. 원인은 잘 모르겠습니다. 일단 만약 다음에 대회를 열게 된다면 조금 더 신중하게 난이도 평가를 하겠다.. 정도 다짐하고 있습니다.

마무리


감사합니다.. 노력 많이 했어요 ㅠㅠ

군대에서 대회 총괄은 두 번 다시 맡지 않을 것 같습니다. 군대에서 대회를 준비하기란 소모가 꽤 큰 일이었습니다. 돌아보면 매일 만성적인 피로에 시달렸던 것 같습니다.

많은 파트를 다른 TF 멤버들에게 넘겼지만 여전히 할 일이 많았고 대회를 위해 일 할 수 있는 시간은 너무 짧았습니다.


진짜 이렇게 일했습니다. 이건 할 게 못됩니다.

이전에 관련해서 사담을 적은 적이 있었는데, 사이버지식정보방(사지방)이 막사 밖에 있어 개인 정비 시간에 사지방 이용이 쉽지 않아 휴대폰+블루투스 키보드를 사용하거나 사람들이 많이 몰려 전우조 걱정을 할 필요가 없는 연등 시간에 대회를 준비해나갈 수밖에 없었습니다.

이와중에 당직 근무 사이클이 짧으니 자주 오프라인이 되거나 부대 상황이 여의치 않아 대회 준비에 차질이 빚어진 적도 한두번이 아니었습니다.

이런 상황에서 대회가 연기 없이 처음 계획한 시기에 잘 개최됐다는 사실 자체가 너무나도 만족스럽습니다.

대회 준비 덕분에 피로감, 면역 저하가 여러가지 부대 상황과 얽히고 섥혀 요 근레 잔병치레 신세가 되었으니 이제 당분간은 요양에 집중해야할 것 같습니다.

더 읽어보기