<

CP/대회 후기

2024 SCSC 서울대학교 프로그래밍 경시대회 후기

leedongbin 2024. 6. 2. 03:36

Hello, BOJ 2024! 이후로 정말 오랜만에 오프라인 대회가 열려서 바로 신청했다.

소개에 '실력자를 위한 div1과 초심자를 위한 div2'라고 쓰여 있었지만, 마감 후 div1에 신청했다면 div2로 변경할 것을 강력하게 권장한다는 문자를 받았다. 하지만 애초에 div2에도 다이아까지 출제된다 해서 나는 고민 없이 div2를 신청했었다.
Chatgpt를 허용한다는 규칙이 인상적이었고, 상품을 보고 소소하게 문화상품권을 노려서 정보처리기사 실기 책사는 데 써야겠다는 생각을 했다.


대회 준비

시험장 / 학교 안 정류장.

서울대에는 처음 와보는 거라 여기저기 사진으로 남기고 싶었는데, 막상 와보니 학교가 너무 넓어서 그런가 마땅히 상징적으로 찍을만한 장소가 없었다. 정문이 아니라 곧바로 학교 안으로 들어와서 그런가...

시험장에 들어와서 기념 굿즈들을 받고 장비 세팅을 했다. 대회 이름이 SCPC(SCSC Computer Programming Contest)였는데, 마침 작년 SCPC(Samsung Collegiate Programming Cup)에서 받은 키보드를 썼다.

나는 사용하는 키보드에 따라서 타자 속도나 오타율에 차이가 심한 편이라 오프라인 대회 때마다 키보드를 따로 들고 다니는 편인데, 다른 분들은 그런 것에 별로 신경 쓰지 않는 것 같았다.

div2에는 위 강의실이 꽉 찰 정도로 많은 분이 오셨고, 신원 확인 때문에 대회가 15분 정도 연기되었다. 주변을 둘러보니 오렌지 한 분이 보였고, div1에는 레드와 오렌지가 10명 이상이라는 소문을 들으며 대회가 시작되었다.


대회 타임라인

  • A) 0:03 WA, 0:06 AC
    꼭짓점의 좌표 4개를 모두 더해서, x, y, z 값이 0 또는 4인지 체크했다. 구현이 뭔가 잘못돼서 한 번 틀렸다. 
  • B) 0:13 WA, 0:16 AC
    감염된 K개의 컴퓨터 중 임의로 하나를 골라 파일 전송 로그대로 시뮬레이션했다. 문제를 잘못 이해해서 한 번 틀렸는데, 금방 찾아서 다행이었다.
  • C) 0:21 WA, 0:23 AC
    그냥 시키는 대로 bfs를 돌리면 된다. 맨해튼 거리를 읽어놓고 x축, y축으로 이동해서 한 번 틀렸다.
  • D) 0:33 AC
    현재 높이와 세로선의 번호를 (h,x)라고 하면, 다음 상태는 (h-1,x-1), (h-1,x), (h-1,x+1) 중 하나이다. 가로선을 엉뚱한 곳에 그리면 제자리로 내려갈 수 있다는 생각을 했고, dp로 풀었다.
  • E) 0:37 WA, 0:57 WA, 1:44 WA
    여기서 엄청나게 말렸다. 처음에 문자 '?'는 있으나 마나 상관이 없겠다는 생각이 들었고, 믿음으로 제출했다가 틀렸다. 스코어보드에서도 잘 안 풀리길래 깊게 고민해보다가, 문득 님 게임이 생각났고 스프라그-그런디 풀이를 또 믿음으로 제출해서 틀렸다. 아무리 생각해도 님 게임 변형 문제로 보여서 Chatgpt한테 이것저것 물어봤는데, 쓸데없는 답변만 받았다. 마지막으로 억지 dp 풀이를 쥐어짜서 또또 믿음으로 제출해서 틀렸고, 이러고도 몇십 분이 더 지나서야 겨우 E번을 포기했다.
  • F) 2:15 WA, 2:32 AC
    다익스트라와 mst 풀이가 동시에 떠올랐는데, 왠지 다익스트라는 반례가 있을 것 같아서 일단 mst를 시도했다가 틀렸다. 바로 다익스트라로 고치니 맞았다.
  • 이후 E번을 다시 잡았는데, 직접 만든 반례를 해결할 방법을 못 찾았다. 혹시 마지막 제출자에게 특별상이 있을까 싶어서, 막판에 무한 WA를 내다가 끝났다.

결과 / 후기

div2 참가자 102명 중 15위.

일단 목표 등수를 달성해서 좋았고, E번을 좀 더 빨리 포기했다면 어땠을까 하는 아쉬움이 있었지만, F부터 풀었어도 결과적으로 상품이 바뀌지는 않아서 만족하기로 했다.

시상식은 div2, div1 순으로 진행됐는데, 특별상을 노리는 다양한 기술(?)들을 배울 수 있었다.(아쉽게도 특별상은 0솔 중 최다 WA인 분들께 돌아갔다.) 기업홍보 세션 때 div1에 참가하신 dohoon님과 bnb2011님을 만나 간단한 인사를 나눴고, 집에 가는 버스에서 div2 1위를 하신 junie님과 이런저런 이야기를 나눴다.

요즘 느끼는 건데, 나는 내 기준에 쉬운 문제를 남들보다 빠르게 풀고, 어려운 문제를 남들보다 느리게 푼다. 그래서 난이도 커브가 갑자기 올라가는 대회에서 성적이 좋은 것 같다. (등수가 항상 물로켓 같은데, 떨어지기 전에 대회가 끝나야 성적이 좋다.) 저점을 높이고 불필요한 실수를 줄이면, 페널티에서 경쟁력을 가질 수 있지 않을까...