일주일 전 3월 27일에 INPC 2021이 개최되었다. 그 다음 날에 백준에서 동일한 문제들을 가지고 오픈 컨테스트도 개최하였다. 그 후기를 남기고 싶어서 글을 작성한다.
1. 문제 제작
대회가 열린다는 것이 결정되기 전에 내가 시간 날 때 만들어놓은 문제가 네 문제 있었다. 그 중 한 문제는 너무 어려워서 사용하지 않기로 했고, 나머지 세 문제는 C번, H번, L번으로 출제되었다. 문제는 총 5명이 아이디어를 공유하면서 출제했는데, 노션에 문제 목록을 작성하여 그 중에서 선별했다. 총 21문제가 만들어졌고, 대회는 12문제를 출제하는 것으로 되어 있었기 때문에 회의를 통해 12문제를 선별했다. 선별 과정에서 난이도 커브와 문제의 합리성을 고려했고, 추가적으로 특정 알고리즘을 사용하지 않아도 풀리는 문제들 위주로 선별했다.
2. 문제의 난이도
생각보다 문제 난이도 커브가 예상과는 다르게 어렵게 잡혔다. 작년과 비교해보면 확실한 불셋이었다. 총 아홉 문제가 풀렸고, 세 문제가 풀리지 않았다. 개인적으로 1등이 10솔브 정도를 할 것이라고 생각했기 때문에 이 점은 굉장히 아쉽게 생각한다.
3. 문제별 코멘트
A. 홀짝 칵테일
A번이 될 문제가 필요해서 나중에 만들어진 문제다. 간단한 문제이긴 하지만, 모듈러 연산이 필요하기도 하고, 작년 A번에 비해 어려웠기 때문에, 고전하는 사람들이 생각보다 많았다.
B. 문어
적절한 난이도로 출제되었다고 생각한다. 다만, 출력 형식을 명시해주지 않아 혼란을 받은 참가자가 있었다.
C. 민겸 수
나는 이 문제를 실버 4정도라고 생각하고 출제했다. 심지어 처음에는 길이 제한이 20만이었는데, 나중에 엔제곱 풀이도 통과시키려고 제한을 3천으로 줄였다. 그렇게 때문에 나는 이 문제가 앞의 쉬운 문제들과 뒤의 문제들을 적절히 연결해줄 수 있을 것이라고 생각했다. 하지만 생각보다 문제가 어려웠고 많은 참가자들이 이 문제에서 고전했다. 특히 정수형 배열로(잘못된 풀이로) 풀려는 시도가 굉장히 많았기에 오버플로우를 고려해야 한다는 것을 명시해줬으면 하면 어땠을까 하는 생각도 들었다.
D. 카드 섞기
이 문제의 난이도도 너무 저평가했다. 실제로 대회 중에는 초중반까지 계속 1솔브였고, 후반에 상위권 참가자들이 몇 명 풀어준 게 전부였다. 시간이 많은 대회라고 구현 문제의 난이도 자체가 많이 떨어지지 않는다는 점을 이 문제 덕분에 깨달았다.
E. 스피카
생각보다 많은 참가자들이 잘 풀어 준 문제이다. 문제 내용도 풀이도 굉장히 좋다고 생각한다.
F. 징검다리 건너기
딱 생각했던 것만큼 풀린 문제이다. 기본적으로 잘 알려진 dp 풀이가 있는 문제에 완전 탐색을 해도 풀 수 있게 문제가 설계되어있다.
G. 피아노 체조
이 문제는 구간 합을 이용하는 문제인데, 작년 대회의 H번 문제와 비슷한 난이도로 생각했다. 그런데 오히려 그 문제보다 사람들이 수월하게 풀어 준 문제이다. 대부분 구간 합을 이용해서 잘 풀어주었고, 이분 탐색을 이용한 풀이, 세그먼트 트리를 이용한 풀이도 있었다.
H. 챔피언 (Easy)
나는 이 문제의 난이도를 맨 처음에 실버 2정도로 예측했었다. 하지만 다른 출제진들과 검수진들이 그래도 골드급은 되는 것 같다는 의견이 많았고, 스코어보드 상으로 I번보다 어려운 문제가 되었다. 백준에서도 이 문제를 내가 처음 생각한 쉬운 풀이(이분 탐색)로 푸신 분이 별로 없는 것 같아서 상대적으로 난이도가 고평가된 것 같다. 대회 도중 제출된 모든 엔제곱 풀이가 시간 초과를 받아서 데이터를 나름 빡빡하게 잘 만들었다고 생각한다.
I. 순간이동 여행
풀이법이 굉장히 다양하고, 실제로 이 문제를 푼 4명의 풀이법도 큰 줄기는 비슷하지만 각각 다르다. 이 문제는 엔제곱, 엔, 로그엔 풀이가 모두 가능한 문제인데 제한을 어떻게 줘야 할까 고민했었는데, 엔제곱 풀이도 통과시키자고 생각했고, 결론적으로 잘한 선택 같다.
J. 클레이 사격 게임
비트마스킹을 이용한 문제이다. 나는 비트마스킹 기본 문제인 외판원 문제보다 쉽다고 생각했는데, 아쉽게도 대회 중에는 정답자가 없었다.
K. 격자 돌리기
구현이 꽤 빡센 애드 혹 문제이다. 잘 만들어진 문제라고 생각했다. 생각 외로 이 문제의 naive 풀이를 대회 중에 구현해주신 분들이 많았다.
L. 챔피언 (Hard)
혹시 나올 수도 있는 올솔브를 방지하려고 낸 문제이다. 풀이를 생각만 해낸다면 쉽게 구현할 수 있는 문제이다.
4. 후기
일단, 대회에 참가하는 것과 대회를 운영하는 것은 정말 차원이 다른 일이라는 것을 몸소 깨달았다. 문제들을 준비하는 것 이외에도 대회 홍보, 참가 모집, 대회 계정 관리, 시상 등 부가적으로 해야 할 일이 정말 많았다. 다행히 IGRUS 운영진 분들이 많은 도움을 주셔서 대회를 성공적으로 마칠 수 있었다.
아쉬운 점으로는, 대회 운영진이 회사에 다니고 있고 바쁘고 그래서 서로 의견 조율이 제대로 안 된 부분이 많았다고 생각하고 이러한 미흡한 피드백이 난이도를 전체적으로 너무 어렵게 했다고 생각한다. 혹시 다음에 다른 대회를 운영 및 출제할 기회가 생긴다면, 이번 대회를 거름삼아 더 좋은 대회를 만들고 싶다.
'History' 카테고리의 다른 글
2021 IUPC(인하대학교 프로그래밍 경진대회) 후기 (0) | 2021.11.17 |
---|---|
UCPC 2021 예선 참가 후기 (0) | 2021.08.01 |
Google Hashcode 2021 참가 후기 (0) | 2021.03.19 |
IUPC 2020 참가 후기 (2) | 2021.01.11 |
Codeforces Archive (0) | 2020.12.13 |