eff3ct's st0rage Dev Blog

어질어질 2차 월간알로하 후기

대면 대회?

대학에 오면 꼭 해보고 싶은 게 대면 대회였다. 그런데, 코로나 때문에 모든 대회가 비대면으로 진행되서 아직 단 한 번도 대면 대회를 참여해본 적이 없다. 풍선 달아주는 게 진짜 재밌어 보였는데, 정작 나는 한 번도 그런데 참가자로 참가해본 적 없이 대회 운영을 하게 되었다.. 아무튼 회의 때 7월 10주년 대회 준비 겸 2차 내전은 대면으로 하는 게 어떠냐고 물어봐서 시작된 대회였다. 운영진 중에서 거의 아무도 제대로 된 대면 대회 경험이 없다 보니, 정말 아무것도 모르는 상태에서 시작했다.

엄청나게 비싼 헬륨

풍선 70개 분량을 채우는 데에 7만원이 들었다. 대충 계산해봐도 풍선 하나 당 천원이나 든다. 헬륨이 진짜 어마어마하게 비쌌다. 도중에 회장님이 헬륨 말고 막대로 하자고 했지만, 그렇지만.. 낭만은 포기할 수 없는걸~ 부회장님과 함께 헬륨 풍선 하자고 떼써서 헬륨 풍선을 사수했다. 그래서 알록달록한 풍선으로 대회를 장식할 수 있었다. 그리고 이 헬륨가스 조금 이슈가 있었다. 수업지원실에서 분명 택배를 맡아준다고 해서 진짜 거의 20분 넘게 거기서 헬륨 가스를 찾았는데 없었다. 경비원분도 같이 찾는 걸 도와주셨는데 도저히 아무 데도 없어서 멘탈이 살짝 나갔었다. 결국엔 찾았는데, 어디 있었냐면 3층 현관문 앞에 그대로 놓여있었다. 아니.. 택배 맡아준다고 했으면 상식적으로 안에 있어야 하는 게 아닌가? 택배를 무사히 찾아서 다행이었지 이것 때문에 조금 화난 상태로 시작하긴 했다. 그것도 잠시, 문제 출제 이슈로 너무 바빠서 택배에 관한 건 바로 잊혔다. 그렇게 대회가 시작됐고 문제 풀 때마다 풍선 달아주는 걸 보니 나도 UCPC 본선 나가서 풍선 누가 달아줬으면 좋겠다고 생각했다.. 근데 우리팀 UCPC 본선 나갈 수 있을까? 열심히 해야겠다 ㅠㅠ

바빴던 출제 일정

내전 일정이 종강한 주 토요일로 잡혀서 무려 시험기간에 출제를 했어야 했다. 나는 심지어 시험이 일찍 시작되서 늦게 끝났기 때문에 시험기간이 엄청 길었는데.. 그 기간에 출제 아이디어를 떠올려야 했다. 나는 세그먼트 트리, 분리 집합, 이분 탐색에서 문제를 내기로 했었는데, 세그먼트 트리는 다행히 1차 내전 이전에 내가 출제를 해뒀었다(근데, 이 문제가 마지막까지 날 괴롭혔다..).

분리 집합은 멘토링을 하면서 집합 개수를 같이 union 하는 아이디어에서 비슷하게 min을 union하면서 관리하는 걸 생각을 해뒀었고, 또 다른 주제로는 BOJ의 ‘공항’같은 문제처럼 union을 잘 해야하는 문제를 어떻게 내보고 싶었다. 후자는 멘토링 시간에 다루지도 않았고 동아리 중급반 수준에서 풀 수 없을 것 같다는 판단에 전자로 내야겠다고 마음을 두고 있었다. 그래서 그냥 union하면서 최소 비용을 찾는 문제로 출제했다. 그런데 알고 보니 DFS로 component 찾아서 min값 관리해도 풀리는 문제였다. 내가 보기엔 사실상 거의 유사한 풀이인 거 같아서 그냥 냅뒀다. 아마 골4~3 정도 되는 문제일 듯 하다.

이분 탐색이 제일 낼 게 없었는데.. 왜냐면 내가 거기에 자신이 없기도 했고, 뭔갈 만들어도 그거 증명을 못할 것 같아서 전형적인 걸로 낼 수 밖에 없었다. 좌표를 주고 N개 중 K개를 골라 만든 집합에서 각 좌표 간 최단거리를 maximize 하는 거로 냈다. 알면 바로 푸는 그런 전형적인 문제였다. 문제를 출제했던 날이 미친 듯이 더웠던 날이라서 문제 소재도 “여름은 싫어”로 해서 냈다. 검수진 한 명이랑 솔루션이 내놓은 답이 서로 달랐는데, 킹갓 레드분이 솔루션을 야무지게 짜오셔서 누가 맞는지 결론을 내려주셨다. 결론은 나의 승리 ㅎㅎ.. 가장 재미없게 내서 그런지 이슈가 거의 없었던 문제였다. 대충 실1~골5 정도로 추정된다.

마지막으로 가장 괴로웠던 문제가 바로 세그먼트 트리를 쓰는 문제였다. 코포 A번에서 영감을 얻었던 문제였다. A번에서 원하는 걸 정확히 반대로 풀고 WA를 N번 받고 억울해서 그걸 아이디어로 만들어버린 문제였다. 각 조각을 정렬했을 때 전체가 정렬되려면 각 조각은 어떤 조건을 가져야할까? 이 생각을 그대로 문제로 옮겼다. 정말 조금만 생각해보면 솔루션이 생각나는 문제다(애초에 A번 풀다가 생각난 아이디어니까..ㅋㅋ). (이전 조각에서 max <= 다음 조각에서 min)을 만족하면 전체가 정렬됨을 알 수 있다. 이걸 업데이트를 조금 섞어주고 로그시간에 처리하도록 하면 문제 하나를 뚝딱 만들 수 있다. 아마 요것까지 3월 초에 만들어놨었던 것 같다. 그때는 쿼리 개수를 500개만 주고 N을 작게줬다. 그랬던 이유가 MCS가 도는 속도가 너무 느려서(그냥 평범한 탑다운 세그인데..) 그랬던 건데 결국엔 이게 문제를 일으켰다.

대회가 얼마남지 않은 시간에 통과되어선 안될 솔루션들이 통과되는 참사가 발생했고, 이거를 막으려고 진짜 많은 조건을 바꿔봤다. 그래도 잘 안되길래 저격데이터를 만들려고 시도했고, 그것조차 실패해서 조금 방치 해뒀다. 그러다가 조각 개수를 로그 개수만큼 바꿔보는게 어떻냐는 학술부장님의 조언에, 그렇게 하니까 모든게 의도대로 잘되는 걸 확인할 수 있었다. 진짜 너무 다행이었고, 모든게 해결됐다고 생각했다. 그런데 ㅋㅋ 대회 당일 무려 20분 전에 TLE가 나야 할 코드가 돔저지의 너무나도 야무진 성능으로 AC를 받는걸 보고 급하게 800ms로 시간제한을 줄였다. 시작 20분 전에!!!ㅋㅋㅋㅋㅋㅋ 진짜 큰일날 뻔 했다. 혹시라도 TLE 풀이가 통과됐으면 아마 구데기 문제라고 욕을 바가지로 먹었지 않았을까? 여튼 내 문제는 우여곡절이 많았지만, 결국에 큰 문제 없이 넘어갔다. 결론적으로, 우려했던 TLE 풀이는 아무도 시도 안 했었다. 플5정도라고 생각하고 있다. 그냥 max-min seg에 간단한 아이디어++ 니까 골1보다는 높을 듯..? (오렌지님이 골1이라고 주장하지만..)

대회까지 시간이 많이 없는 상태에서 문제를 짜내려고 하니 당연히 잘 되지도 않았고, 양질의 문제보다는 그냥 전형적인 문제를 뽑아낸 것 같아서 아쉽긴 했다. 한 번 데이고 나니까 문제 출제는 미리미리 해둬야겠다는 걸 진짜 크게 느끼고 있다. 살면서 느끼는 모든 것을 출제 소재로 승화시켜보는 노력을 해야지 대회날 전에 내가 편하지 않을까? ㅋㅋ 종강한 주 거의 놀지도 못하고 혼자서 자취방에 틀어 박혀서 출제, 검수, 출제, 검수, 에디토리얼 작성, 포스터 제작 이러고 있으니까 정신 나갈 것 같았다. 대회 당일날 새벽에 문제 검수한 건(고인물들 올솔 방지로 새벽에 두 문제가 생김) 진짜 레전드 오브 레전드일듯. 그렇게 바쁜 삶을 살고 있을 때 생각하지도 못한 선물을 주는 사람이 있어서 많이 고마웠다. 진짜 미리 출제해둬야겠다 이제는.. 헤헤

문제가 바뀌는 기적

비기너 문제 하나가 대회 도중에 바뀌는 이슈가 있었다. 분명 검수할 때는 솔루션이 잘 돌아가서 문제가 없었는데(심지어 나 그 문제 공통으로 하면 어떻냐고 했었음. 문제가 좋아서..), 돔 저지가 스페셜 저지가 잘 안되는 이슈로 인해 실수 출력 대해 AC코드를 WA로 판정을 때리는.. 그런 어마어마한 이슈가 생겼다. 대회 도중에 옆에서 또 다른 학술부원님이 실시간으로 문제를 고쳤고 결국에는 실수값 내림을 하게 해 정수형으로 출력할 수 있도록 문제를 수정했다. 정말 있어서는 안될 일이었지만, 다행히 어떻게 잘 넘어가서 다행이었다. 다음부터는 스페셜 저지 절대 안 쓰는 문제들만 내도록… ㅠㅠ 또, 어드밴 C번 문제 지문이 느슨했던 관계로 조금 문제가 있었고(검수할 때는 잘 못느꼈었는데 ㅠㅜ) 결국엔 그 이슈가 있었던 문제를 낸 두 분이 해설할 때 사죄를 했다. 검수를 열심히 안한 내 잘못도 있긴 한듯. ㅈㅅ..

예비소집 문제 풀지 말아주세요..

도대체 왜인지 모르겠으나 예비소집 문제를 대회 시간에 착각하고 푸신분들이 너무 많이 계셨다. 사전에 주의하라고 미리 공지라도 해줄걸.. 너무 미안했다. 한 사람은 오프라인 대회에 와서 1시간 가까이 예비소집 문제를 풀고 있었다.. 그리고, 대회 전날에 메일이 왔는 지 확인을 해달라는 요청을 했었는데 많은 분들이 이를 확인하지 않으셔서, 등록되었는지 확인도 못하고 참여하셨다가 계정 정보가 아예 없어서 참여가 불가능해졌던 그런 몹쓸 경험을 하게 됐다. 제발 부탁이니 공지한 내용은 확인 좀 해주셨으면 ㅠㅠ

처음이라 미숙했던 대회 운영

대회 운영진 아무도 대면 대회 경험이 없다 보니 감으로 모든걸 준비했다. 대회 후원도 늦게 요청해서 기업 후원을 받기는 어려웠고, 결국 마지막으로 알로하 선배님들께 도움을 요청했다. 알로하 선배님들 진짜 멋있다. 도와달라고 하니 수십만원씩 툭툭 던져주시는게 … 캬 이게 알로하? 알로하를 만드신 전설의 ‘알창남’선배님도 이번 대회에 후원을 해주셨고 회장을 하셨던 선배님들이 많이 도와주셨다. 그렇게 대회 상금/상품 이슈를 해결할 수 있었다. 심지어 선배님들 중간에 오셔서 구경하시다가 문제도 풀어보시고 운영진들 커피도 사주시구 가셨다. 다시 한 번 감사드립니다!! 선배님들 ㅠㅠ.

대회 당일에 소통할 수단이 없었기 때문에 계속 왔다갔다 하면서 말을 했고, 이게 너무 비효율적이었다. 다음부터는 디스코드나 따로 소통할 공간을 만들어서 운영하자는 학술부장의 의견이 있었다. 진짜 너무 동의하는 부분.. 처음이라 어쩔 수 없었긴 했다. 이런 건 한 번 깨져봐야 알 수 있는 부분이 아닐까? 이게 7월 10주년 대회가 아닌게 너무 다행이었다. 이번 대회를 통해 보완해야할 점을 많이 얻은게 다행이다.

핸들과 실제 사람을 매칭하는 것도 엄청 고생이 많았고, 그걸 확인하고 풍선을 달아주러 갔던 부회장님 사무부장님 인사부장님 재무부장님 너무 고생이 많았다.. 다음에 편하게 하려면 어떤 시스템을 미리 만들어놔야 할 것 같다. 이번 대회가 온/오프라인 동시 진행이라 더 그런것도 있긴 했다. 진짜 많은 분들이 고생해줘서 겨우겨우 대회가 어찌저찌 굴러갔다. 대회 끝나기 1시간쯤 전에 “헉 수상자 발표 ppt 있어야 했지..”하고 급하게 ppt 만들고.. 특별상 기준 정하고 했었다. 정말로 너무 정신없었다. 아니 근데 그거 왜 내가 발표했는지는 좀 의문이다. 스코어보드 공개도 좀 재미없게 했고(말재주가 딸림 ㅎㅎ..), 호응 유도도 못함ㅋㅎㅋ. 다음엔 이런거 잘하는 운영진이 하는걸로 하자. 근데, 회장님의 라디오 시간 왜 안해줌 ㅎㅎ.. 그건 좀 아쉬웠다^^ 회의중에 농담삼아 한 얘기 중에 회장님 이름 넣고 “ooo인” 도장 박자는 의견은 진짜 상장에 반영되서 좀 재밌긴 했다.

그래도 재밌었다!

바빠서 정신없었지만, 풍선도 달구 사진도 찍고 너무 재밌었다. 헬륨가스 마시고 말하는 것도 해보고 ㅋㅋㅋ 낭만있는 대회였다. 엄청 고생한 우리 운영진들 너무 고맙구 7월 대회도 파이팅! 다만 조금 아쉬웠던건 개인전이라 대회 분위기가 조금 정적이었다. 난 처음부터 팀전을 제안했었는데, 팀이 많이 안생길거란 반대로 무산됐었다. 근데 팀으로 해야 아무래도 분위기가 말을 좀 하구 축제같은? 그런 분위기가 되지 않을까? 이왕 문제 풀면서 경쟁하며 즐기는 대회인데 분위기라도 좀 부드러우면 좋을것 같다. 뭐 이건 개인적인 바람이고 이번 대회도 짱 좋았다! 나도 참가자하고 싶었던건 안비밀..(꽤 진심)