Solved.ac Grand Arena Party Onsite Div.2 (A#18) 후기

2024. 2. 10. 06:20Notice/후기

사진을 찍는 습관 같은 게 없어서 현장 사진 같은 것은 몇 없다. 후기 이벤트를 노리고 사진을 좀 많이 찍어 뒀어야... 꼭 그게 아니더라도 후기를 쓰기는 쓸 예정이었어서 사진을 찍었어야 했는데 들어가자마자 기념품 받고 퍼즐 헌트 하느라고 정신을 싹 빼놓아서 사진을 찍는다는 생각을 못 했다. 바보라고 불러다오

퍼포먼스는 지금까지의 아레나 중 세 번째로 좋은 성적인 2029 (SS)였는데, 그럼에도 불구하고 아쉬운 점이 굉장히 많아서 슬프다. 배가 불렀다는 소리 들어도 할 말은 없는데, 맞힐 수 있는 문제를 놓친 거라...

아쉬운 건 어쩔 수 없다

 

0. D-1

가방에 가지 키링을 달아 놓고, 가지를 주제로 한 대회까지 열 정도로 가지 사랑이 지나친 가지 볶음 마니아 kiwiyou에게 줄 가지를 샀다. 한 개는 내가 그 날 요리해서 먹었고, 다른 한 개는 깨끗이 씻어서 보관해 뒀다. 어머니가 저걸 반찬으로 변환시키는 마법을 쓰지 못하도록 냉장고 구석에다 넣어 놨다. 문제 홍보했으니 풀라고 말하지 말아 달라 kiwiyou

가지버터구이

ICPC 2023 Seoul Regional 후기에도 썼듯 난 긴장하면 잠을 설치고, 게다가 최근 불합리한 사정 때문에 새벽 4시에 자서 대낮에 일어나는 생활 패턴 시프트까지 있어서 그냥 밤을 샜다. 그게 속이 편하기도 하고, 어차피 집 근처에서 대회장까지 직통으로 버스가 하나 있어서 가는 길에 앉아서 자면 되니까.

그래서 밤을 새면서 구현 두 문제(16958번과 27958번)를 풀었다. 수학 문제로 예열한들 대회장에서 예열해야 풀 수 있는 레벨의 수학 문제가 나오면 어차피 난 못 푼다. 구현 폼을 올리는 게 중요했다. 그래서 그게 제 역할을 했는지는...

 

1. 입장 전

경기도에 사는, 혹은 살아 본 적 있는 사람이라면 공감할 수도 있을 텐데, 예정 출발 시간보다 10분 늦게 나가면 20분 지각하고 10분 일찍 나가면 30분을 일찍 도착한다. 시공간왜곡장이 작용하고 있는 것이 분명하다. 대회 전에 할 일도 있고, 일찍 도착해서 아는 사람 보면 대회장 앞에서 이런저런 헛소리나 하며 시간을 때울 수 있을 것이라고 생각해서 출발했다.

그리고 버스에서 내린 시간이 9시 36분이었다. 어째서?

근처 카페에서 30분 정도 시간을 허비하다 대충 시간 맞춰 가니 어느 새 장사진을 이루고 있었다. 잘 아는 사람(ez_on과 kiwiyou)이 오기를 기다리고 있었는데, 가방에 엄청난 키링을 달고 있는 사람이 보였다.

팬이에요

그리고 이 대회 후원의 \(\frac13\)을 담당했던 Chris 'utilforever' Ohk님이 택시에서 각종 상품을 내리자 즉석 팬미팅이 열렸다. 난 줄 중간쯤에 있어서 팬미팅에 참가할 수는 없었고, 퍼즐 헌트 도중에 명함을 강탈했다. 부사장 명함이라니 엄청나...!

그리고 우연히 바로 뒷자리에 서 계신 wizardrabbit님과 악수와 함께 팬이에요를 시전했다. 사실 이 분은 디스코드에서 하도 많이 뵈어서 굉장히 익숙하다. 한 문제 출제했던 2023 브실컵과 검수를 맡았던 제1회 춘배컵에서 대회 운영진으로 이미 두 번 만났기 때문에. 실물을 보는 건 처음이긴 했지만. 팬이에요를 시전할 만큼 엄청난 분이다. 꼼꼼함과 검수 내공이 이만저만이 아니다. 검수진의 귀감이라고 생각하는 세 사람 중 하나다.

기다리던 줄에 초등학생? 처럼 보이는 친구가 하나 있었는데, 진짜 충격을 제대로 먹었다. 이 나이 먹도록 난 도대체 무엇을 한 것인가......

 

2. 퍼즐 헌트

대회 시작은 오후 1시부터였지만, 오전 10시에 도착하도록 일정을 짜 놓은 이유가 있었다. 딱 맞춰 들어가면 여러 모로 정신없기도 하지만, 11시부터 두 시간 동안 퍼즐 헌트가 진행되기 때문이다. 지금은 여기서 할 수 있다.

내가 소속된 AP팀은 11문제 중 10개를 풀어 당당히 압도적인 1등을 차지했다. 옆자리의 alex9801님께 C++ 사용해야 하는 문제나 아이디어가 생각 안 나는 문제는 모조리 던지고, 나는 애드혹성 문제들을 풀었다. 거의 다 끝난 상태였는데 아쉽게 끝나서, alex9801님은 대회 후 재차 도전하시더라.

그런데 지금은 7문제밖에 안 풀려 있다. 역시 집단지성은 강력하다...

AP팀 만세!

세 번째 문제는 queued_q의 퍼즐 카페였는데, 놓아진 여러 퍼즐을 풀면 정답에 가까워질 수 있는 힌트를 얻을 수 있는 세션이었다. 익숙한 얼굴이 있었는데... 중학교 때 같은 학원을 다닌 친구가 바로 queued_q였다. 둘 다 영재고 대비반이었는데, 내가 영재고와 과고를 모조리 떨어지면서 자연스럽게 연락이 끊겼다. 어째 이렇게 다시 만났을까... 세상 참 좁다.

추억을 곱씹으며 중학교 때 열심히 했던 캐스트 퍼즐을 하고 있자니 후원사(넥슨)에서 온 사람들이 슥삭 하고 풀어버리던 그 광경은... 놀라웠다. 캐스트 퍼즐 말고도 몇 개 더 있던 것 같은데, 그것들은 국내에서 구하기 힘들다고 한다. 퍼즐 카페에 나온 캐스트 퍼즐은 루프, ABC, 해시태그, 그리고 지금은 만들어내지 않고 있는 것 같은 크리켓 네 가지였다. 크리켓 저거 분명 12년쯤 전에는 잘만 풀었는데 지금은 왜...

퍼즐 헌트 중 핸들 끝말잇기가 있었다. 하필 또 들어가기 전에 이런저런 이야기를 나누고 있던 wizardrabbit님, 그리고 사인 받으러 여기저기 뛰어다니던 toycartoon과 나 nflight11까지 기가 막히게 이어졌고, 30글자를 채우기 위해서는 1이나 b로 시작하는 한 사람만 더 필요한 상황이었다. 마침 bnb2011님이 들어오셨고, 오자마자 납치해서 핸들 끝말잇기 첫 번째 성공자가 되었다. 만세!

참가비가 없어서 기대도 안 하고 있었지만, 무려 서브웨이와 음료수, 하리보와 초콜릿 같은 각종 간식들이 준비되어 있었다! 저거 수지타산이 맞나 싶을 정도로 호화로웠다. ICPC도 저것보다는 덜 호화로웠던 것 같은데... solved.ac가 점점 커져서 이런 오프라인 아레나가 연례행사로 열리기를 바랄 따름이다.

노트북 튜닝 성공!

그리고 각종 기념품까지. 받은 하얀 맨투맨이 너무 예쁘게 잘 나왔다. 밖에 입고 다닐 수 있을 정도로. 특정 회사 로고가 대문짝만하게 박힌 옷은 내가 그 회사에 누를 끼칠까 봐 쉽게 입고 다니지 못하는데 이건 그런 걱정을 덜 수 있다. 그리고 하얀색이라 이 옷 입고 우리 집 강아지를 껴안을 수 있다!!!

퍼줄 헌트가 시작되기 전에 toycartoon님이 주최한(?) 사인 헌트 이벤트가 개최되었다.

toycartoon의 사인 헌트

초반이라서 그렇게 많이 적히지는 않은 것 같은데... 저렇게 막 돌아다니면서 말을 붙일 수 있는 능력이 조금 부럽기도 했다. 얼마나 완성되었는지는 그 분의 후기에서 감상학기를 바란다.

여기저기 다니면서 다른 사람 핸들을 확인하던 와중에 의자가 박살난 사람 한 명과 테이블이 무너진 사람 한 명을 봤다. 의자 박살나신 분은 파편이 튈 정도로 진짜 와장창 하고 깨졌는데, 나중에 Discord로 물어보니 별 이상 없다더라. 다행이에요.

 

3. 대회

그리고 대망의 대회. 나는 여기에 수상을 노리고 참가했었다. 1등상 같은 건 아니고, 참가자 65명 중 15등 안에만 들면 수상이었기 때문이다. 마우스 정도는 받아 갈 수 있을 줄 알았다.

나는 난이도가 낮은 문제를 빠르게 풀 수 있다는 강점이 있다. 그래서 같은 솔브 수를 기록한 사람 중에서는 거의 항상 페널티가 가장 적은데... 이게 그렇게 기쁘지는 않은 게, 한 문제만 더 풀어낸다면 위로 훨씬 많이 올라갈 수 있다는 소리도 되기 때문이다. 그리고 이번 대회에서도 아니나 다를까 그렇게 되었는데요...

0:01 A AC

쉬운 브론즈 하위 문제라서 쉽게 끝낼 수 있는 문제였다. 떨려서 여기서 틀릴 뻔 했는데, 그래도 예제를 돌려 보는 습관이 정착해서 그런가 쓸데없는 RTE로 페널티를 깎아먹는 짓은 하지 않고 끝났다.

0:04 B AC

이것도 실버 하위, 약간의 관찰이 필요한 조합론 문제였다. 여기까지는 깊은 생각 없이도 어렵지 않게 풀어낼 수 있는 문제들이었다. 평소에 쓰던 키보드가 청축이라 대회장에 들고 간 건 다른 기종이었는데, 그래서 코딩 속도가 조금 떨어졌었다. 풀 컨디션이었으면 여기까지 페널티 합 4분으로 끊을 수 있지 않았을까.

0:19 D AC(+1)

답이 보자마자 보이는 기하 문제, 그것도 구현까지 간단했다. C번이 구현 문제인데다 지문도 좀 길어서 빠르게 거르고 D번부터 노린다고 노렸는데, 그 전략이 주효했다. 한 번 배열의 길이를 잘못 지정하는 실수로 틀렸는데, 그것까지 감안해도 가장 빨랐다. 내가 이걸 풂으로서 Div2에 독을 풀었을까? 그건 잘 모르겠다.

자세한 풀이 방법은 나중에 블로그에 쓰겠지만, 간략하게 이야기해 보자면 직선이 지날 꼭지점을 하나 고정해 두고 와이퍼 움직이듯이 쓸면 중간값 정리에 의해서 볼록다각형이 정확하게 반으로 잘리는 지점이 온다. 그러니 답은 항상 YES일 것이고, 어느 점을 지나는지는 누적합과 '높이가 같은 삼각형의 면적 비율은 밑변 비율과 동일하다'는 중학교 기하 개념을 사용하면 O(N)으로 통과 가능하다. 끝나고 답을 맞춰 봤는데 삼분 탐색을 쓰는 사람과 이분 탐색을 쓰는 사람과 뭔가 이상한 방법 쓴 사람까지 풀이가 다양했다.

이 문제를 풀자마자 cologne님이 와서 빨간 하트 풍선을 매달아 주셨다. 퍼솔용 풍선이었는데, 기념품으로 간직한다는 생각도 못 하고 두고 나와 버렸다. 다시 생각하니까 아쉽네.이 시점에서 내가 스코어보드 맨 위에 올라갔다. 이 때까지는 진짜 모든 게 다 순조로웠는데...

기념샷

1:57 C WA(-8)

C번에서 맞왜틀 지옥에 빠져버리면서 처참하게 멸망하고 말았다. 심지어 이 문제는 대회 당일 아침에 풀었던 유형인 구현 시뮬레이션 문제였다! 벼락치기는 정말 하나짝에도 쓸모가 없다는 걸 다시금 체감했다. 이것만 맞혔으면 15등은 어렵지 않게 달성할 수 있었다는 점에서 더 슬펐다.

참담했던 결과

충분히 오랜 시간 동 탐색하면서 맨 마지막 먼지를 못 먹은 것만 깎아내면 맞힐 수 있을 것 같았다. 틀렸다. 구현에서 조금 오류가 있었던 것 같아서 구현을 수정해서 다시 냈다. 틀렸다. 2HW번이면 적어도 한 칸에 3번 이상 방문하니 충분할 줄 알았다. 틀렸다. 그럼 4HW는? 틀렸다이 시점에서 멘탈이 좀 많이 나가서 5번째 제출은 아리스 AA를 제출했다. 당연히 틀렸다.

멘붕의 흔적

잠시 마음을 다잡고 처음부터 문제를 분석해 봤다. 기존에 쓰던 코드는 싹 다 지웠다. 어차피 EFG는 풀이조차 생각나지 않고 있어서 그 문제들을 잡고 있어도 답이 없었다.

매 칸마다 4방향,  그리고 이번 칸에 먼지가 있느냐 없느냐 2가지 해서 8가지의 상태가 있을 줄 알았고, 여유를 조금 보태서 32HW번 가능할 줄 알았다. 틀렸다. 이번에도 구현이 틀려서 그랬을까? 다시 고쳐서 제출했지만 또 틀렸다. 마지막으로 한 번 더 고쳐 제출했더니 또 틀렸다.

더 잡아봤자 답도 없을 것 같아서 GG선언을 했다. 스코어보드 프리즈 시점에서 내가 11등이었으니 어쩌면 15등 안에 들지도 모른다는 실낱같은 희망을 가지고... 스코어보드 까 보니 여기서 무려 28번을 틀린 사람도 있어서 나만 바보였다는 최악의 결과는 피했다. 우승자인 kiwiyou도 5번을 틀린 끝에 맞혔다더라.

 

4. 대회 종료 후

kiwiyou, cki86201, kipa00님의 유저 컨퍼런스가 진행되었다. 옆자리에서 열심히 퍼즐 헌트 마지막 문제 정답을 맞히려는 alex9801님과 그걸 또 구경하러 왕림하신 cologne님 슬쩍 보고는 컨퍼런스에 집중을...... 못 했다. 초반에 풍선이 슬라이드를 다 가려서... 가장자리 앞에 배치된 내가 운이 없긴 했다.

kiwiyou는 performant Python이라는, Python3만 주력으로 쓰는 나에게는 금과옥조가 따로 없는 주제로 강연을 했다. 비록 그 기법을 써야 할 정도로 시간 면에서 빡빡한 상황은 맞이한 적 없었지만, 그래도 시간의 불합리함에 고통받을 때 한 번 사용해 보면 좋을 법한 주제.

cki86201님은 Yandex cup의 후기를 주제로 발표를 진행했다. LGM 태반에 GM 약간이라는 참가자 풀이 정말 정신이 아득해지는 것만 같았고, 플래티넘 수준의 문제를 눈풀이로 푸는 놀이? 를 했다는 게 참... 천상계는 진짜 뭐가 많이 다르구나 하는 생각을 하게 되었다.

kipa00님은 마인크래프트 내의 레드스톤 회로를 코딩으로 간주하고, 어떻게 마인크래프트 내에서 코딩이라는 것을 할 수 있는지에 대한 주제로 강연하였다. 내가 아는 마인크래프트는 열심히 집을 지었는데 크리퍼가 와서 날려버리는 게임이었는데, 그것도 옛말이고 약 10년 동안 끊임없는 발전을 이룬 모양이더라. 언젠가는 A+B (MC) 문제를 풀어봐야겠다는 생각과 그래도 마인크래프트 비싸... 하는 생각이 동시에 드는 세션이었다.

그 뒤로는 수상과 스코어보드 개방이 있었다. havana723님이 진행하였는데, 이런 진행을 한두번 맡아 본 솜씨가 아니었다. 나름 박진감이 있었고... 그리고 수상 자체는 실패했지만 20등으로 16~31등까지 받을 수 있었던 solved.ac 장패드를 받았다!

지금도 잘 쓰고 있어요

이 이후로 리듬게임팟이 결성되었다고 들었는데, 불행하게도 저 때 내 지갑 속에 든 돈이 없다는 이유와 다른 일정이 있어 서둘러 돌아가야 한다는 이유 때문에 참여하지 못했다. 어택팟 만약에 생기면 일정이 받쳐주는 이상 달려가겠다...

 

최종결산

여러모로 즐거운 기억이었다. 조금 더 양호한 퍼포먼스였으면 더 즐거웠을 테지만 그건 내 손에 달린 일이라 넘어가고. 다음 기회가 있으면 반드시 참가할 수 있도록 아레나에는 정기적으로 참가할 예정이다. 보라매컵 예선... 당장 다음 주인데 SUAPC 24w 끝나자마자 참가할 수 있을지는 모르겠지만 그건 그 때 봐서 결정하고.

 

728x90