본문 바로가기

ps 대회 후기

2026 ICPC APAC Championship 후기

이번에 처음으로 국제대회에 나가보았다. 아시아 챔피언십을 가서 어떤 것을 했는지 알아보자!

팀소개

우리 팀은 Fox is Cute로, (송씨, 세린, )가 한 팀이다.

  • 세린은 카이스트 가을대회에서 루비4를 풀 정도로 자료구조를 잘한다. 
  • 나는 애드혹 및 조합론에 강하다. 한때 군대에서 폐관수련을 위해 Atcoder ARC를 20라운드 정도 버추얼을 돈 경험이 있다. 예전에 랜덤디펜스를 조금 해서 그런지 종이에 구현을 정리했다가 키보드를 잡고 빠르게 구현하는 것을 잘한다. (구현이 맞는다는 보장은 없다. 이럴때는 프린트 디버깅을 하고 시간을 하염없이 보낸다) 그리고 문제를 풀 때 증명을 하는 것을 중요하게 생각한다.
  • 송씨는 그냥 구현도 잘하고 문제도 잘 풀고 강하다. 유럽 챔피언십 버추얼을 돌 때 어려운 문제를 잡고 버저비터를 하거나, 버추얼 대회에서 다이아2를 슥삭 밀어내는 등의 퍼포먼스를 보였다.

3월 6일

ICPC 대회 전에 해야 할 일들이 많다.

우선 팀노트를 검수해야 한다. 요즘은 gemini도 있고, yosupo judge도 있어서 얼마나 다행인지 모른다. 팀노트에 별의별 것이 다 있었는데, CRT, 디오판틴 방정식 솔버, 다항식 연산(!!!) 등등이 있었다. 내 머릿속에 있지도 않은 다항식의 exponential 및 log를 이해하기 위해 열심히 gemini를 두들겨가며 검수를 했다. 그 과정에서 백준에 있는 다이아 4 문제도 날먹했다.

그리고 비행기를 타야 하는데, 비행기가 아침 8시 45분에 출발해서 새벽 5시에 출발하는 버스에 탑승해야 했고, 택시가 잡히지 않는 경우에 대비해서 새벽 4시에 출발을 해야했다. 팀노트 검수를 마치고 잠깐 눈을 붙인 뒤에 버스 터미널을 향하는 택시를 탔다.

 

공항에 도착을 해서 비행기를 기다리는데 출발 시간이 자꾸 밀린다. 2번쯤 밀렸을 때, 비행기 연착으로 인해 대만에 도착하지 못해 월드파이널을 못 가는 경우의 수가 눈 앞에서 스쳐 지나갔다. 다행히 더 이상 비행기가 미루어지지 않고 제때 대만에 도착할 수 있었다.

 

앞에서 한 고생들 때문인지 대만에 도착했을 때 몸상태가 좋지 않았다. 타이페이에 가서 놀자는 생각을 버리고 숙소에서 풀취침을 했다.

 

3월 7일

APAC에서 준비해주는 타악기 공연을 들은 뒤 기업들이 놀아줬다. 구슬 굴리는 게임도 받고 버블티, 아이스크림 등등을 먹으면서 놀았다. 그리고 나서 Dress Rehersal이라고 본대회 전에 간단하게 환경 점검을 하는 시간을 가졌다. 대회 문제 중 rope를 구현하라는 문제가 있었다. 덕분에 Splay Tree 구현을 연습할 수 있는 시간이 되었다. 밤에는 제인스트리트에서 맛밥을 준비해줬다. 그렇지만 다음날이 ICPC이기도 했고, 자리도 많지 않아서 마땅히 앉을 자리도 없고 해서 양꼬치를 7개 먹은 이후 빠르게 식당을 빠져나와 숙소를 향했다. 숙소에서는 송씨와 함께 박스헤드, water girl fire boy를 하면서 즐거운 시간을 보냈다. 덕분에 긴장이 아주 조금 풀렸다.

여섯 면에 있는 미로 사이로 구슬을 굴리는 게임이다
고전게임 꿀잼

3월 8일

대망의 대회날이었다. 나는 서울 리저널에서 일본팀 3팀한테 진 전적이 있어서 순위에 대한 자신이 없었다. 그래서 아챔 컷이 높게 느껴졌다. 그리고 내가 2025 UCPC H번에서 돌돌 말리다가 결국 못 푸는 초초저점을 띄운 경험이 있었다. 이번 대회에서 구현이 말리는 것에 대해서 조금 불안했다. 그외에 체력 이슈, 시차 이슈 등등 이런저런 이유들로 긴장을 했다. 그렇지만, 나는 2024 / 2025 아시아 챔피언십에 있는 문제들 중 다이아 상위를 제외한 모든 문제를 스스로 풀었다. 실제 대회 문제들이 크게 어렵지 않을 것이라고 생각을 하고, 긴장을 조금 풀었다.

APAC 문제들은 싹싹 긁어모아 풀었다!

대회 후기

0:00 ~ 0:38

내가 ABCD, 송씨가 EFGH, 세린이 IJKL을 읽었다. 우선 문제의 첫인상은 아래와 같았다.

  • A: 작년 minus operator와 같이 매우 빡빡한 제한의 인터랙티브 문제로, 대회 초반에 절대 잡으면 안 되고 대회에서 잡았다가 돌돌 말릴 것 같이 생긴 무서운 문제
  • B: 능지 게임 이론 문제로, 나이브를 찍어본다고 해결이 되지도 않지만 누군가는 풀 것 같은 문제
  • C: 절대 어려울 수 없는 애드혹 문제
  • D: 자구비빔밥

그래서 D번을 세린한테 던지고 B번과 C번을 번갈아서 보고 있었다. 사실 C번을 보는 것이 옳은 판단이었겠지만, 그냥 안 풀려서(...) B번을 좀 봤다.

 

두 문제에서 엉엉 울고 있는 나를 보더니 송씨가 H번을 던져줬다. 대충 보고나서 몇분 안에 풀이가 슥슥 나왔고, 빠르게 짜서 AC를 받았다.

 

0:21 (K AC), 0:36 (J AC), 0:38 (H AC)

 

0:38 ~ 1:58

나는 다시 C번을 보러 갔다. 애드혹이고, 쉬워보이고, 내가 풀어야만 할 것 같았다. 나의 문제에 대한 가정은, priority_queue에서 나오는 정점들이 순서대로 트리를 이루는 경우에는 항상 가능할 것이라고 생각을 했다. 하지만 그 가정이 거짓이어서 좀 말렸다. 다른 팀원들도 풀 문제가 없었는지 키보드가 비어있었다. 도중에 송씨가 D번을 풀기 위해서 Link Cut Tree를 짜야 한다고 주장하고 키보드가 비는 동안 Link Cut Tree를 짜겠다고 선언했다.

 

C번을 푸는 도중 시각화를 위해서 그림을 그렸다. 한 정점에서 다른 정점을 뽑고, 새로운 정점을 찾는 과정의 그림이었는데, 그 순간 정점의 순회 순서가 dfs와 같은 형태를 이루어야 한다는 것을 깨달았고, 쉽게 AC를 받을 수 있었다. SCPC 2025 3번을 풀 때에도 그림을 그리다가 번뜩이는 아이디어를 얻었는데, 문제를 풀 때는 시각화가 정말 중요한 것 같다.

대충 이런 그림이었다

 

1:15 (C AC)

 

C의 풀이를 내는 도중에 E의 풀이가 나왔고, 세린이 짜서 맞았다.

 

1:26 (E AC)

 

도중에 송씨가 F번에서 convolution 맛이 난다고, 나에게 관찰을 전달하러 왔다. 그러나 관찰을 전달하는 과정에서 문제를 풀어버렸고, 송씨가 F번을 짜러 키보드 앞에 앉았다. C번을 풀고 할게 없었던 나는 송씨가 잡고 있던 B번을 보러 갔다. 생각을 해보니 이 문제와 똑같이 풀면 되었고, 구현이 짧길래 송씨의 키보드를 뺏어서 코딩을 했다. 구현을 하고 답이 안 나와서 곰곰히 생각을 해보니, dp의 상태를 조금 잘못 잡았었다. F과 거의 동시에 예제가 나오기 시작했고, 제출을 해서 둘 다 AC를 받았다. 대회 폼이 아주아주 좋아서 대회 칠 맛이 났다.

 

1:55 (B AC), 1:58 (F AC)

 

1:58 ~ 3:35

스코어보드에서 풀 문제가 보이지 않았다. Strong Zero만 푼 I번에서는 생성함수 비빔밥의 향이 났고, 나머지 문제들은 답이 없어보였다. 송씨는 나에게 I번과 M번을 줬고, 두 문제를 번갈아가며 읽으면서 풀이의 가닥이 잡히기를 빌었다.

 

I번에서 매우 날먹스러운 발상을 해냈는데, 그것은 바로 a_i가 a_{i+1}의 약수인 증가수열 a의 개수가 적을 수 있다는 생각을 했다! 비어있는 키보드를 잡아서 확인을 해봤는데, 40억개 정도 된다는 사실을 깨닫고 아주 아쉬워했다. 만약 해당 조건을 만족하는 a의 개수가 적었다면, (수열 a의 개수) * (적당한 상수)에 문제를 해결할 생각이었다. 하지만 이 생각을 하고 나니, 그냥 a에서 약수/배수 관계에 대한 dp를 하면 되지 않을까? 같은 생각을 했고, APIO BOAT에서 사용했던 다항식 dp를 사용하니 깔끔하게 식정리가 되었다. 송씨와 세린이 D번을 푸는 사이에 나는 I번의 구현을 구체화했고, 도중에 D번 구현이 막히자 키보드를 인터셉트하고 10분 만에 I번의 풀이를 짜내려갔다. 예제가 나오지 않아 다시 D번에게 키보드를 넘기고 프린트 디버깅을 했다. ans 변수에 더하는 값에 dp값을 곱하지 않는? 아주 얼척이 없는 실수(및 전처리를 잘못하는 여러 사소한 실수)를 했다는 것을 깨달았다. 고치니까 적당히 큰 예제까지 돌았다! 제출을 하니까 바로 AC가 나왔다!!!

 

3:12 (I AC)

 

이때 I번의 AC가 2팀 정도 밖에 없었고, 내가 낸 풀이는 적어도 다이아 중위권은 되었기 때문에, 대회 고점을 찍었다고 생각을 해서 매우매우 신이 났다. 긴장이 적당히 풀어진 상태로 M번을 적당히 보고 있었다. 시간이 지나니 D번을 풀었다는 소식이 들렸다.

 

3:35 (D AC)

 

어쩌다 보니 스코어보드를 이끄는 팀이 되어버렸다! 송씨가 G번을 풀었다고 주장해 G번을 넘겨주고, 나는 M번을 계속해서 붙잡고 있었다. 아까는 전혀 보이지 않았던 M번의 관찰이 서서히 보이기 시작했다. 이때쯤 송씨가 구현을 마쳤고, WA를 받았다.

 

3:51 (G WA)

 

자신의 코드는 매우 짧고, 구현이 틀릴 확률보다 풀이가 틀렸을 확률이 높다고 생각했던 송씨는 나에게 풀이를 설명해 주기 시작했다. 내가 증명에 대한 지적을 하고, 송씨가 지적에 대한 새로운 증명을 가져오는 행동을 몇 번 반복하다 보니 그냥 송씨의 풀이가 틀리지 않았다는 것으로 결론이 났다. 그러다가 구현이 틀렸다고 선언을 하고 조금 고쳐서 제출을 했더니 AC를 받았다!

 

4:25 (G AC)

 

우승이 눈 앞이다! 조금 전 송씨와 G번에 대한 토론을 하면서 틈틈히 M번에 대한 관찰을 했었다. 나는 M번에 대한 풀이를 세린에게 컨펌을 받고 구현을 준비했다. 종이에 케이스워크를 한바닥을 한 후에, 구현에 들어갔지만 WA가 나왔다.

 

4:48 (M WA)

 

세린이 동시에 M의 풀이를 냈고, 그 풀이를 짜겠다고 주장을 했서 구현에 들어갔다. 내 풀이의 틀린 점을 발견하고 몇 글자 고쳐보았지만 다시 WA가 나왔다.

 

4:59 (M WA)

 

세린이 구현을 대회시간 내에 마치지 못했고, M번은 결국 풀지 못했다. 송씨는 조금 아쉬워하는 것 같았다. 하지만 개인적으로 이 대회를 통해 fox is cute 팀의 고점을 찍었다고 생각을 했고, 아쉬움이 들지 않았다 ㅎㅎ

 

대회 끝난 이후

월파 진출이 확정이 난 상태에서 딩가딩가 놀면서 다른 팀들과 떠들었다. 시상식을 하면서 2nd place까지 들었고, gold medal(!!!)을 받았다. 내가 국제 대회에서 메달을 받는 날이 올 줄은 몰랐는데, 그냥 ps를 오래 하다 보니 내 앞에 메달이 떨어져서 너무 기뻤다. 대충 시상식에 올라가서 사진을 찍고, 맛밥을 먹고 숙소에 가서 쿨쿨 잤다.

금메달이다~~

3월 9일

아침에 눈을 떴는데, World Finalist가 된 것이 체감이 되지 않았다. 절로 미소가 지어졌다. 대충 icpc에서 주는 맛밥을 먹고, 공항을 가서 비행기를 타고 한국에 와서 쿨쿨 잤다.

 

대회 후기

이제 와서 솔직히 말하자면 코드포스 레드인 팀원 2명을 두고 월드 파이널에 진출을 하지 못하는 미래가 상당히 두려웠다. 팀연습을 열심히 하지 않은 것, 코드포스 버추얼을 열심히 돌지 않은 것들이 업보로 돌아올까봐 두려웠다. 하지만 대회가 너무나도 잘 풀렸다. 대회를 잘 쳐준 팀원들이 너무 고마웠다. 송씨 세린 고마워! 2026 ICPC World Finals까지 열심히 달려서 좋은 성과를 내고 싶다.

'ps 대회 후기' 카테고리의 다른 글

2026 국가대표 1차 선발고사 출제 후기  (0) 2026.01.26
2025 ICPC Seoul Regional 본선 후기  (0) 2025.11.23
2025 KAIST 15th ICPC Mock Competition 후기  (0) 2025.11.03
SCPC 2025 후기  (0) 2025.08.30
ucpc 2025 예선 후기  (0) 2025.07.14