본문 바로가기

기록

ICPC Asia Taichung (대만) Regional Contest 후기

이번에 복학하면서 5년만에 ICPC를 참여한다. Asia-Pacific Championship 티켓을 날먹하겠다는 원대한 포부를 갖고, ICPC 대만 리저널에 참여했다. 대회를 아쉽게도 잘 못 쳤지만, 비슷한 목표를 가지고 해외 리저널을 가는 팀들이 있으리라는 생각에 간단히 그 과정을 글로 남겨본다.

참가를 결심하기까지

여름에 RUN 디스코드에서 사람을 구해 ICPC 팀을 결성했다. 당시 상황은 이랬다:

  • leejseo: ICPC 서울 리저널 수상. WF는 못가봄. CP 안한지 오래되어 잔 실수가 많고 기복이 큼. 퍼포먼스가 좋으면 대회 때 D3까지 해결 가능, 안 좋으면 P2 정도 까지 해결 가능.
  • juneharold: 올해 ICPC를 잘 치고 싶어하는 상황. 리저널 참가 경험은 없음. CodeForces 퍼플
  • khf1700: 군 입대 후 PS를 시작해 CP 대회 첫 참가.

나는 아마 올해가 ICPC 마지막 참가일 것이라, Asia-Pacific Championship은 나가보고 싶었고, 팀원들은 PS 대회 경험이 거의 없는지라 어쨌든 새로운 경험을 해보고 싶었다. 그런데 서울 리저널이라는 레드오션에서 KAIST 팀 중 탑 3 안에 드는 것은 어려운 일이라, 해외 리저널을 잘 치는 것만이 사실상 현실적인 선택지였다.

 

그런데, 내가 금요일에 수강하는 일반화학실험 수업 때문에, 토요일에 열리는 (금요일이 예비소집인) 대회는 사실상 참가가 불가능했다. 그래서 일요일에 열리는 대만 리저널을 참여하기로 했다.

 

예년의 결과를 봤을 때 상위권에 포진한 팀이 대부분 NTU 팀이라 우리 팀이 낼 수 있는 퍼포먼스 중 중상위 (~ 상위 30%) 정도로 치면 APAC Championship 진출이 가능해보여서 희망을 품고 대만으로 갔다. 다만, 팀연습을 하면서 실제로 나의 퍼포먼스에 따라 팀 퍼포먼스가 상당 부분 좌우되는 경향이 있었기에, 우려되는 부분도 컸다.

대만 숙소 및 비행기 예약

대회가 열리는 타이중으로 가는 방법은 크게 두 가지가 있다:

  • 인천(ICN)에서 타이중(RMQ)으로 가는 직항을 타는 것
  • 청주(CJJ) 혹은 인천(ICN)에서 타오위안(TPE)으로 가는 비행기를 타고, 타오위안에서 기차를 타고 가는 것

이와 관련하여 (대전에서 인천 가는 체력소모) - (대전에서 청주 가는 체력소모) > (타오위안에서 타이중 가는 체력소모)라는 판단 하에 우리는 후자를 택했다. 참고로, 타이중과 타오위안을 오가는 것은 대만의 고속철도(HSR)를 이용하면 되고, 열차가 상당히 자주 있으니 현장에서 입석표를 발권해서 타면 된다. 약 45분 정도 소요되며, 피크 타임에는 서서 가야할 수 있다.

숙소의 경우 아고다에서 예약했는데, 1인실 옵션이 있으면서 저렴한 숙소를 골랐다. 타오위안 숙소의 경우 1박 6만원, 타이중 숙소의 경우 1박 10만원 정도 들었다.

https://maps.app.goo.gl/shHWMFFNUMRf7vqAA

 

藍水輕旅 · No. 126號, Section 1, Gaotie S Rd, Dayuan District, Taoyuan City, 대만 33743

★★★★★ · 호텔

www.google.com

https://maps.app.goo.gl/98MUUqPWAQFych9S8

 

WE2 HOTEL 唯二設計文旅 · No. 42-3號, Guangfu Rd, Central District, Taichung City, 대만 400

★★★★☆ · 호텔

www.google.com

11월 14일 금요일

일반화학실험 수업을 마치고, 집에 와서 소고기 구이와 라면을 먹고 식곤증을 즐기며 꿀잠잤다. 밤 비행기라 수면 시간이 부족할 것으로 예상해 미리 자둔 쪽에 가깝다.

저녁에 일어나서 무궁화호를 타고 청주공항으로 갔다. 팀원들이 해외여행 경험이 많지는 않아서, esim 사는 법 등 자잘한 것들을 알려주고, 온라인 면세점에서 주문해둔 Volnay 와인을 수령했다.

 

라운지 없는 공항이라 구석 소파에 누워서 자다가 비행기를 탔다. 약간 지연이 있었던 것으로 기억한다. 빠르게 호텔로 이동해 자기 위해 위탁수하물 없이 갔지만, 후술하듯이 아무런 의미가 없었다.

11월 15일 토요일

새벽 1시 반쯤 타오위안 공항에 도착했다. 그런데 입국 심사 줄이 너무 길고, 너무 천천히 줄었다. 입국 심사를 완료하는데에 2시간 정도 걸렸던 것으로 기억한다. 낮 12시 까지는 타이중으로 이동해 예비소집에 참여해야 하는 상황이라 체력 문제에 대한 걱정이 조금씩 생겨났다.

 

결국 새벽 3시 반 쯤 체크인해서 여섯 시간 정도 자고, 11시 출발하는 열차를 타고 타이중으로 이동했다.

 

예비소집에 도착해 대기하는 동안 나정휘(jhnah917)가 귀띔해준 숭실대 팀을 만나 이야기 하며 조금은 친해지는 시간을 가졌고, 함께 사진도 찍었다.

 

예비소집에서 대회 규칙에 대해 이것저것 설명해줬지만, 열심히 듣지는 않았다. 자리에 음료수나 간식을 가져와서 먹을 수 없고, 지정된 구역에서만 먹어야 한다는 규정이 약간은 부당하다고 생각했다.

 

예비소집 문제들을 해결하며 대회장 환경에 익숙해지는 시간을 가졌는데, 키보드가 아주 별로였다. 키보드를 가져오지 못하게 해서 강제로 대회장 키보드를 사용했는데, 키가 너무 가볍고 얕아서 평소 타자 습관대로 치면 오타가 아주 많이 나오는 구조였다.

 

아무튼 예비소집을 마치고 숭실대 팀과 함께 저녁 회식을 하기 위해 시내로 이동했다. 팀원들이 대만에서 결제 되는 카드나 현금을 뽑을 수 있는 카드가 없어서, 내가 환전해서 지하철 표를 사주고 나중에 카카오페이로 받기로 했다.

 

저녁 식사는 딤섬을 먹었는데, 딘 타이펑 줄이 너무 길어 그 인근의 내가 고른 식당으로 갔다. 그런데 딘 타이펑보다 훨씬 맛있는 것 같았다.

 

그러고 숙소로 가서 바로 잤다. 피곤해서 그런지 길게 잤다.

11월 16일 일요일

대회가 이른 시간 시작이라 나는 일부러 아주 일찍 일어나서 아침 식사도 했다. (나는 대개 기상후 첫 3시간 동안은 아무런 생각을 하지 못한다.) 숙소 인근 가게에서 대만식 샌드위치와 커피를 마셨는데 훌륭했다.

 

대회장 입장 과정에서 다소 지연이 있어서 대회가 약간 늦게 시작했다.

대회

나는 시작하자 마자 빌드, dm 스크립트 등 개발환경을 세팅했고, A번 문제를 요약 받아 구현하고 AC를 받았다. (3분)

 

이후 juneharold가 B번 풀이를 찾고 쉽다고 해서 빠르게 구현했고, 내가 그동안 F와 M번 풀이를 냈고 I번과 J번을 보고 있었다. 코딩이 이상하게 오래 걸려서 보니 입출력 받는 부분 오타를 못 찾고 있길래, 내가 잠깐 같이 봐줬다. 조금 오래 걸렸지만 B번 AC를 받았다. (26분)

 

F번이 아주 쉬운 문제라 구현해서 바로 AC를 받았고 (30분), M번은 min/max를 반대로 치는 바람에 예제가 안나와서 약간 삽질을 했지만, AC를 받았다. (41분)

 

이후 juneharold가 E번 풀이를 구현했고, AC를 받았다. (46분)

 

내가 I번 문제를 요약하고, 컨벡스헐을 구해서 변의 연장선과 중심을 지나는 선만 보면 되는 것 같다고 말하니, juneharold가 맞는 것 같다고 했고, 중심까지 포함한 컨벡스헐을 구하는 것이 깔끔할 것이라 했다. 실수 기하라 자신이 없었는데 내가 구현하는지 물어보니, 다들 구현을 꺼려하는듯 하여 내가 키보드를 잡았다. 키보드를 잡으러 가는 길에 khf1700에게 J번의 핵심 관찰을 공유해주고, 구체화를 부탁하고 갔다.

 

식 정리를 열심히 해서 150줄 정도 짜서 제출했지만, WA를 받았다. 오타를 발견 후 고치고 제출했지만, 또 WA를 받았다. 마지막으로 long double로 바꾸고 제출했지만, 또 WA를 받았다. 이 과정에서 1시간 정도가 흘러갔다. 내가 대회를 말아먹고 있음이 느껴져서 슬펐다.

 

juneharold가 K번 풀이가 있다 하여 키보드를 넘겨줬다. juneharold가 구현하는 동안 khf1700에게 J번 풀이가 구체화 되었냐 물어봤지만, 안 봤다고 했다. 솔직히 약간 짜증나긴 했지만, khf1700이 그동안 한 H번 관찰이 의미 있어 보여서 계속 봐도 좋을 것 같다고 했다.

 

J번을 3분 정도 더 생각해보니 깔끔한 풀이가 나왔다. I번은 코드를 인쇄 요청해서 받아보았는데, 실수오차를 제외하면 틀릴 이유가 없어 보였다. L번 문제 요약을 들었는데 상당히 어려워보였고, N번은 construction이 좀 나왔는데 "일부 예외"처리가 빡세보였다.

 

juneharold가 K번 예제 출력이 왜 그런지 모르겠다고 했고, 내가 J번 풀이가 있다 하니, 키보드를 넘겨주기 위해 코드를 인쇄 요청 했다.

 

코드가 인쇄되는 동안 내가 K번을 같이 보니 아래 -> 위, 오른쪽 -> 왼쪽으로 읽는 경우를 고려 안한 것 같아 보여서 알려줬다. 코드를 보니 고칠 부분이 명확해 보이는데, 너무 많이 수정하려 하길래, 내가 더 건드리지 말고 알려주는 라인만 알려주는 대로 고치라고 했다. 그 후 AC를 받았다. (181분)

지금와서 생각하니 여기에서 약간 기분이 나빴을 수 있겠다 싶지만, 어쩔 수 없다고 생각한다.

 

J번을 빠르게 구현하고 제출했는데, RTE를 받았다. 작은 입력을 DM으로 만들어 체크해봤는데, 다 맞았다. 그런데 큰 입력을 넣어보니 답이 이상하게 나왔다. 그래서 코드를 juneharold와 같이 보았는데, 잘못된 것이 전혀 없어 보였다...가 아니라 n을 입력받기 전에 n의 값을 활용하는 코드가 있었다. 그래서 고치고 AC 받았다. (230분)

이런 오타는 절대 안 만들다가 대회날만 되면 만들고, 영원히 못 찾아서 너무 슬프다. 내가 대회를 말아먹고 있음이 뼈저리게 느껴졌다.

 

I번은 cppreference를 뒤져보는데, sqrt보다 더 정확한 sqrtl이 있다는 사실을 알게 되어 바꿔 제출했으나 WA를 받았다. 자포자기하는 심정으로 reference 사이트에 atan2l을 검색해보니 있길래 atan2를 atan2l로 고쳐 제출하니 AC를 받았다. (260분)

이런 함수들의 존재를 모르고 있었으니 억울하지만 틀릴만 했다고 느꼈다.

 

juneharold와 khf1700이 고민 중인 L번 풀이를 들었는데, 내가 요약본을 잘못 이해했음을 깨달았다. DP 식을 세웠고, 구현을 바로 시작했다. 상태전이를 짜던 중 시간 복잡도를 한 번 최적화 해야 함을 깨달았고, 세그까지 짜다가 시간이 부족해서 마무리하지 못했다.

대회를 마치고

팀원들한테 한번씩 짜증도 낸 마당에 대회까지 망쳐서 기분이 좋지 않았지만, 해설을 듣고, 스코어보드 언프리징을 지켜봤다. 해설을 들어보니 khf1700의 L번 관찰을 조금 더 발전시켜보지 못한 것이 너무나도 아쉬웠고, N번 역시도 중간 지점까지는 왔던 것 같다. N번은 디테일한 부분이 빡센 것 같아서 못 푼게 크게 아쉽지는 않는데, L번은 진짜로 10분만 더 있었어도 풀었을 것 같아서 너무 아쉬웠다. 그래도 숭실대 팀이 생각보다 잘 친 것 같아서 축하해주고, J번과 L번 풀이를 알려줬다 :)

 

시상식에서 1등 한 Strong Zero 팀이 스트롱제로 음료를 들고 시상대에 올라오는 퍼포먼스로 모두의 박수를 받았다. 우리 팀은 은메달을 받아서, 목표했던 금메달은 아니지만 집에 빈손으로 돌아가지는 않아서 좋았다.

 

아무쪼록 아쉬움을 뒤로 하고, 비행기 시간인 새벽 2시까지 시간이 많이 남아서 각자 하고 싶은 것을 했다. khf1700은 빠르게 공항으로 이동해서 쉬었고, juneharold는 타오위안에 숙소를 잡고 잠을 잤다. 나는 그 사이에 타이베이로 이동해 하이디라오 혼밥을 시도했...으나 저녁 8시 반에 가도 대기가 2시간 반이라 포기했다.

 

그래도 시내 위스키 샵에 가서 훌륭한 위스키를 저렴한 가격에 구했으니, 시내 간 보람은 있었다.

 

공항에서는 비상구석을 배정 받았는데, 나 외에 아무도 없어서 눕코노미라 좋았다. 면세점은 늦은 시간이라 주류 매장만 열려 있었고, 딱히 살 것은 없었다. Louis Jadot의 2016빈티지 Beaune 와인이 그나마 가격이 괜찮았다.

 

 

비행기 타기 전에 라운지에서 우육면과 차슈 덮밥, 와인을 상당히 많이 먹었다. 식사를 아침 이후에 못해서 배고팠나보다.

 

귀국편 역시도 지연되어서, 대전에 도착하니 오전 9시가 넘어버린 관계로 하루를 통째로 날렸다. 아직까지 수면 패턴을 회복하기 위해 노력중이다.

대만 리저널과 관련하여 알아두면 좋은 점

  • 대회가 상당히 이른 시간대(오전 9시반)에 시작한다. 아침 일찍 일어나는 생활 패턴을 만들어두면 좋다.
  • 한국 리저널 기준 인터넷 예선을 통과할 실력의 팀이면 최소 은상은 받을 수 있다. 이력서에 적을 수상 실적이 필요한 사람들은 와서 칠 가치가 있다.
  • 탑 20 내외를 하면 한국 리저널에서 10등 초반 하는 것과 비슷한 정도의 효과가 있는 것 같다. APAC Championship에 진출하고자 한다면, 이를 염두에 두면 좋다. 자세한 규칙은 Solved.AC에서 확인 가능하다. https://icpcapac.solved.ac/2026
  • 2025년 기준 개인 키보드를 지참할 수 없고, Acer 사의 상당히 얕은 키보드를 사용해야 했다. 약간 구린 키보드에 적응하면 대회를 잘 치는데 도움이 된다.
  • 내가 사용하는 American Express Centurion 카드로는 결제가 되지 않는 곳이 많았고, Visa나 Mastercard는 대부분 결제가 되었다. 다만, 신용카드 이용시 소정의 수수료를 받는 가게들이 있다.
  • 현금 뽑는 용으로 트래블로그를 들고 갔는데, 상당히 유용했다. MRT나 HSR 역에 있는 ATM에서 수수료 없이 출금할 수 있다.

'기록' 카테고리의 다른 글

2023년 회고  (1) 2024.01.21
2023-04 출장 (3)  (3) 2023.05.15
이사 준비: 가구 배치 가늠해보기 (feat. Archisketch)  (3) 2023.05.15
2023-04 출장 (2)  (3) 2023.04.20
2023-04 출장 (1)  (2) 2023.04.13