18시쯤 대전역에 도착하는 ktx를 타고 대전으로 이동했습니다. 제 기억으로 대전은 처음 방문합니다. 새벽2시에기하를하다니이상해는 자차를 가지고 왔고 대전역에서 합류했습니다. 팀원이 전부 토요일부터 대전에 있기 때문에 같이 저녁을 먹고 가기로 했었기 때문에 함께 카이스트에 있는 새벽2시에구현을하다니이상해를 만나러 갔습니다.

저녁을 먹고 인근 카페에서 환경 세팅을 했습니다. 상대적으로 세팅이 귀찮은 C/C++가 세팅되어 있는 제 랩탑을 사용하기로 했고, 여러 우여곡절이 있긴 했으나 pycharm을 설치하는 것으로 세팅을 완료했습니다. 우선 제 랩탑이 16인치 4k 100% 10pt수준으로 세팅되어있어서 해상도를 자연스럽게 유지하는 것이 꽤 어려웠고 아마 대회시점까지도 보기 막 좋지는 않았던 것 같습니다.

카이스트 기숙사로 들어와서 Gomori-Hu를 주제로 쓰던 블로그 글을 마무리하려고 했는데 돌연 wjdgud0621님이 모은 마작 파티에 가서 한게임 했습니다. 같이 마작을 한 LLMalreadyallsolved팀의 방에 갔습니다. kolorvxl이 와도 된다고 했는데 alreadysolved님은 전혀 모르는 눈치였습니다. LLM과 제 방으로 돌아갔다가 운영진이었던 hibye1217이 다시 습격해왔습니다. 잠시 나갔다 싶더니 rlatjwls2000kolorvxl을 데리고 3인 레이드를 해왔습니다. 결국 블로그 글은 못썼습니다.

다음날 5시쯤 일어나서 씻고 준비를 했지만 다시 잠들어버렸고 9시가 돼서 일어났습니다. 새벽2시에기하를하다니이상해가 10시쯤 도착한다고 해서 여러 부스를 돌아다니며 인사했습니다. 등록 테이블은 바쁠 듯해 부스에서 도장을 찍어주시던 man_of_learing과 인사를했습니다. 친절하게 등록하면 도장을 찍을 수 있는 팜플릿을 준다고 알려주셨습니다. 먼저 도착해있던 새벽2시에구현을하다니이상해와 만나 준비된 다과와 함께 전략에 대해 잠깐 얘기했습니다. 등록 티셔츠를 배부하시던 queued_q님을 찾아가서 인사하고 재미있는 퍼즐을 몇개 보면서 재밌게 기다렸습니다. 도장을 찍어주시는 분들 중에 낯익은 이름이 있길래 cubic님도 찾아가서 인사했습니다. 온라인에사는 자주 대화했지만 오프라인에서 처음 보는 상태였으나 서로 일방적으로 알고있었습니다. 사진 부스에 있던 dadas와 전체적으로 사진을 찍으시던 leejseo님을 찾아가서 간단한 농담을 하기도 했습니다. 새벽2시에기하를하다니이상해가 도착하고 나서 등록 데스크에 있는 hibye1217를 통해 등록했습니다. 별도로 팀명을 얘기하지 않았는데 신분증만 간단히 확인하고 나서 등록이 완료됐습니다. 가방을 대회장에 들여놓고 부스를 돌며 스탬프를 받아 튀김소보로를 받았습니다. 상태가 나쁘진 않았던 것 같으나 팥앙금을 별로 좋아하는 편이 아니라 다소 힘들긴 했습니다.

튀김소보로를 들고 경희대학교 팀에 가서 같이 얘기했습니다. 2025 ucpc에 같은 팀으로 나갔던 overnap과는 오프라인에서 처음 보는 사이였으나 나머지 두 팀원은 아니었기에 쉽게 특정할 수 있었습니다. 2025 ucpc에 저를 제외한 두 팀원은 서로 면식이 있었기 때문에 작년에 같이 왔어야 되는데라는 말 정도로 알아보셨습니다. 대회장에서 대전역 대 전역 팀의 kwoncycle이 보여준 tourist의 진품 사인을 구경했습니다. 여러 팀을 돌아다녀보고싶었지만 다들 바쁘신 듯했습니다.

대회가 5분 딜레이됐습니다. 대회 시뮬레이션이 덜 된게 아닌가 싶긴 했으나 딜레이정도는 충분히 있을 수 있는 일이기 때문에 큰 문제는 없었습니다. fefe 회장님이 5분 추가 딜레이를 요청했으나 딜레이하기 전에 지문이 공개돼버렸기 때문에 갑자기 시작하게 됐습니다. 대회 오프닝을 준비했는지는 모르지만 했다면 아쉽게된 상황입니다.

 

시작하기 전 팀 전략을 조금 얘기하고 갔습니다. 전략대로 새벽2시에기하를하다니이상해가 A부터 읽고 저와 새벽2시에구현을하다니이상해가 뒤에서부터 일찍 읽는 순서대로 하나씩 가져가서 읽기로 했습니다. 쉬운 문제가 나오면 새벽2시에기하를하다니이상해에게 넘겨 노솔브 방지 문제를 우선 해결하고 시작하기로 했습니다.

이하는 팀 내에서 100% 주관적인 관점으로 흐름을 간단히 요약한 것입니다.

 

L(00:16) 제가 처음 읽었습니다. 간단히 훑어보니 상태가 많아야 9가지인 dp식이 나왔습니다. 제가 구현하는 것보다 새벽2시에기하를하다니이상해가 파이썬으로 구현하는게 빠를 것 같아 구현을 토스했습니다. 무난하게 해결했습니다.


C(01:09, +1) 다들 헤멨습니다. 스코어보드를 보고 BCD가 다음 할만한 문제라고 판단은 했으나 셋 중 뭘 먼저 봐야할 지 고민을 했습니다. 새벽2시에기하를하다니이상해가 B를 읽고 11의 배수 판정을 물어봤습니다. 제가 B의 풀이가 대략적으로 보여서 손으로 계산하는 사이 팀원 둘이서 C의 풀이를 찾은 듯했습니다. 홀수번째 짝수번째로 나눈 뒤 교대합에 따라 각 자릿수가 무엇이어야했는지 추적하는 손계산을 했습니다.

 

N(02:13,+1) 제가 I의 대략적인 풀이를 가지고 구현을 한참 하고 있었습니다. 새벽2시에기하를하다니이상해가 N을 읽더니 전날 팀 연습문제로 푼 아이디어를 이용해서 해결할 수 있다고 하는게 들렸습니다. 제가 생각했던 I의 풀이가 세제곱 스케일임을 깨닫고 N으로 머신을 넘겼습니다. 답은 옳게 나오지만 느린 풀이였습니다. 새벽2시에구현을하다니이상해에게 풀이를 설명하고 간선 개수를 제곱 스케일로 줄일 방법을 함께 고민했습니다. 이분 매칭 구현으로 호프크로프트 카프를 이용했기 때문에 exchange로 간선 개수를 제곱 스케일로 줄이면 돌 것 같았지만 10년전 분단의 슬픔 문제처럼 디닉이 정해인 문제인가 싶은 생각도 있어서 회의적이라고 생각하기도 했습니다. 결국 I를 풀지 못했습니다.


B(02:21,+6) B의 거의 대부분의 풀이를 정리했습니다. 혼자 정리한건 아니고 새벽2시에기하를하다니이상해가 구현하면서 같이 정리했습니다. 구현에 실수가 있었지만 우여곡절 끝에 AC를 받았습니다. 이 글을 쓰면서 에디토리얼을 읽어 보니 생각보다 간단한 구현이 있었습니다. 추가로 디버깅하면서 여러 입력을 집어넣어봤는데, 생각보다 sparse해서 런타임 전의 전처리를 할 수 있지 않을까싶었습니다. a와 b가 대수적으로 어떤 관계가 있어야 할 것이라는 추측은 했으나 끝까지 합이 9여야한다는 것을 정리하진 않았고 런타임에 처리했습니다.

 

M(03:53,+1) 3:00이 되기 전 즈음에 D의 풀이를 발견했습니다. 열심히 구현했고 계속 예제가 틀리게 나왔습니다. 처음 구현에 lazy segtree를 썼지만 계속 예제가 틀리게 나와 식을 정리하다가 쿼리가 업데이트보다 항상 느림을 깨닫고 차분 배열을 이용한 구간 업데이트 구현으로 틀었습니다. 핵심 관찰은 동일하지만 방식이 출제진 예상 풀이는 아니었다고 들었습니다. 계속 구현에 애를 먹었습니다. 손으로 예제를 계산하고 쿼리를 디버깅 찍어보고 별 짓을 다 해봤지만 예제가 잘 안나왔습니다. 그사이 새벽2시에기하를하다니이상해가 M의 풀이를 발견했습니다. 어차피 할 일이 디버깅 뿐이었어서 출력 요청을 하고 머신을 넘겼습니다. 대회장 사정때문에 출력이 안 온것만 제외하면 할 수 있는 만큼 다 해본 듯합니다. 

 

D(03:55) 크리티컬한 오타 하나를 발견하고 AC를 받았습니다.

 

F(-1) 새벽2시에구현을하다니이상해가 casework 풀이를 냈습니다. 무슨 내용인지는 모릅니다. 어차피 패널티로 승부를 볼 수는 없는 상태였기 때문에 일단 구현해서 제출하고 크리티컬한 반례를 찾은 듯 했습니다.

G(-16) 한시간여 남은 시간에 새벽2시에기하를하다니이상해가 G의 풀이 정리를 마쳤습니다. 열심히 구현했고 파이썬으로 구현한 것이 문제였는지 시간초과를 계속 받았습니다. 파이썬이 아니었다면 7솔브를 하고 25위로 올라갔을지 모른다고 생각했습니다.

K(0) 마지막까지 변수 K의 제한을 이해하지 못했습니다. 대신 K에 의존하지 않는 리차오 트리 풀이 $O(Qlg^2T)$를 내고 시간내에 구현할 수 없다고 판단해 포기했습니다.

J(0) 누가봐도 LCP를 쓸 것 같았습니다. 핵심 관찰을 하지 못해 해결하지는 못했습니다. 

H(0) 새벽2시에구현을하다니이상해가 설명해주고 거의 완벽한 풀이를 가져왔습니다. 제가 구현하려고 casework를 열심히 나눴는데 단계 수가 너무 많아 끝까지 정리를 못했습니다. 하나를 셔플하고 그리디하게 주는 방법과 둘 다 셔플하는 방식이 있었는데 후자를 선택하려 했으나 증명도 못하고 구현을 위한 식 정리도 못하고 난장판이었습니다.

E(0) 끝까지 읽어보지 못했습니다. 새벽2시에구현을하다니이상해가 이상한 수학 문제라고 버렸다고 했는데 이상한 수학 문제를 풀어 만회라고 해야겠다고 생각한 제가 그걸 못봤습니다. 

 

새벽2시에기하를하다니이상해는 월요일 출근이 있다고 한걸로 기억합니다. 그래서 대회가 끝나자 마자 복귀할 계획을 하고 있었는데 혹시 모르는 특별상을 위해 스코어보드 공개까지 남아있었습니다.

스코어보드가 공개되면서 ucpc 특별상을 수상하게 됐습니다. 스코어보드를 오픈하시던 fefe 회장님이 진짜 울릉도에서 연습했냐고 물어보셨고 그랬다고 제가 거짓으로 답했습니다. 재밌었으면 됐던게 아닐까 싶습니다. 실제로 장마 예보로 인해 결항이 되면 불참할 위험이 있었고 개인 일정도 있었기 때문에 연습하지 못했습니다. 다들 진짜 했냐고 물어봤지만 언제, 누가, 무슨 본선을 가면 연습한다고 한 적 없다고 답해드렸습니다. 추가로 다른 특별상 상품들이 각자 재밌는 상품이 많아서 좋았습니다. 제가 받으면 더 좋았을 것 같습니다. 내년에 참가하게 된다면 제 상품도 준비해주세요.

Janestreet gamenight에 참가하기 위해 새벽2시에구현을하다니이상해와 버스를 타고 이동했습니다. 이때 새벽2시에기하를하다니이상해는 서울로 돌아갔습니다. 장소에 도착하고 엘리베이터를 타고 올라가라고 안내해주셨는데 몇층으로 가라는 말이 없어서 엘리베이터에 함께 타신 참가자들과 협동해서 브루트포스를 했습니다.

연회장에 도착해서 가장 앞쪽의 스크린 아래에 앉았습니다. 같은 테이블에 숭실대 팀이 같이 앉았으나 멀어서 큰 대화를 하진 못했습니다. 경희대학교 팀이 뒤에 들어오는 것을 보고 같이 앉자고 했습니다. 식사는 적당히 먹었습니다. 식사를 적당히 먹고 PULSE 회원들과 함께 사진도 찍었습니다. 사진을 찍고 난 뒤 queued_q님의 비공식 퍼즐해결부스에서 재밌게 즐겼습니다. 스태프 분들이 식사하시는 자리에 JustHui님과 man_of_learning님이 옆에 앉으라고 하셔서 사이에 끼어 앉아서 퍼즐을 해결했습니다. man_of_learning님이 queued_q님한테 가서 스탬프를 받으라고 재미있게 말씀해주셔서 queued_q님이 앉아계신 테이블에 가서 스탬프를 받았습니다. 테이블에 펼쳐두신 다른 퍼즐도 맞추면서 지나갔습니다.

적당히 퍼즐을 풀고 나서 자리로 돌아가는 길에 ALOHA 회원들이 있는 테이블에서 hibye1217이 불렀던거같은데 아무튼 그렇게 앉아서 얘기했습니다. 다른 분들은 대충 면식이 있었지만 한분이 면식이 없어 어색하게 말을 걸지 못했는데 집에 돌아가는 길에 Arpia님인걸 깨달았습니다. 크게 중요한 얘기는 안했지만 늘 있는 WWE를 많이 얘기했던 것 같습니다. 중간에 지나가는 koi312500 등 몇명에게 와서 같이 앉으라고 했는데 lycoris2000이 왔다는 사실이 기억나서 같이 인사하러 갔습니다. 평소에 SCSC때문에선지 접점이 제법 있었지만 현실에서는 처음 봤는데 현실에서 제법 어색해하는 듯했습니다. 간단히 인사하자마자 복귀해야할 시간이 되어 koi312500cenix820과 버스를 타러 내려갔습니다. cenix820은 분명 PNUPC에서 봐서 면식이 있었는데 왜 자신을 모를거라고 생각했는지는 잘 모르겠습니다.

 

카이스트로 복귀하고 나서 pani가 1층에서 얘기중이라는 사실을 확인하고 인사하러 갔습니다. 둘이 얘기하던 중 overnap이 합류해서 2025년도의 CAPTCHA가 각각 쪼개져서 본선에서 모였습니다. CAPTCHA가 예비 2번이었는데 예비 1번까지 본선에 진출했다고 들었습니다. 아쉬웠던 생각이 한 번 더 나는 저녁을 보내게 됐습니다. 

 

주말 저녁에 복귀하기에는 시간이 빠듯하거나 해서 월요일 아침에 복귀하기로 했습니다. 월요일 세미나에 toycartoon이 온다고 해서 중간에 만나서 점심을 먹기로 했습니다. 대전에 살고 있는 koi312500과 중앙로에서 만나서 점심을 먹으러 갔습니다. 성심당 본점 근처에 있는 식당에서 점심을 먹고 koi312500의 도움을 받아 성심당 본점 대기시간을 어림해봤는데 볕에 기다리기 곤란해서 바로 대전역으로 향했습니다. 성심당 대전역점에 줄이 없어서 구경 차 들어갔다가 대여섯개를 포장해 나왔습니다.

 

대회 퍼포먼스는 좋지 않았습니다. ICPC나 다른 대회에를 돌아보면 공통적으로 제가 긴장하면 안그래도 못하는 카운팅을 더 못하게 되는 듯합니다. 긴장을 풀만한 방법을 찾아야 할 듯합니다. 특히나 다른 팀의 풍선이 늘어날수록 불안감이 커지는 현상이 있었는데, 스스로 멘탈 관리를 하는 법을 익혀야겠습니다. 이밖에도 경험이 부족해서 관찰하지 못한 포인트나 그냥 못해서 관찰하지 못한 포인트가 눈에 밟힙니다. 결국 문제를 많이 풀어야 한다는 것이 결론입니다. 추가로 구현에 잦은 실수가 있었는데, 예제까지 손계산해보고 예제가 안나오면 템플릿이 틀린게 아닌가 봐야한다는 점을 깨달았습니다. G를 C/C++로 구현해서 맞거나 H를 틀리지 않고 구현해서 맞았거나 K의 관찰을 해서 쉬운 구현을 해서 맞았거나 셋 중 둘만 됐으면 8솔브였으리라 생각을 해보지만 딱히 도움되는 생각은 아닌 듯합니다. 업솔빙을 해서 만약 내년이 있다면 내년 대회나 적어도 이번 ICPC에서는 좋은 성적을 거둬보는 것을 목표로 해야겠습니다.

+ Recent posts