포스트

2024 하반기 전남대학교 PIMM 알고리즘 파티 대회에는 무슨 일이 있었나?

안녕하세요, <2024 하반기 전남대학교 PIMM 알고리즘 파티> 대회 총괄 박종현belline0124입니다.

2023년 대회와 상반기 대회 회고에서 이야기할만한건 다 했고, 더 이상 할 만한 이야기는 없겠다 싶어 이번에는 별다른 이유가 없으면 이런 글은 적지 못하리라 생각했습니다.

하지만 희망은 빗나갔고.. 이번 대회는 지난 두 대회만큼이나 특기할 점이 꽤 있었습니다.

일 좀 그만 늘려

해커톤 후기에 언급했듯, 잘못 관리된 위기로 대회 두 달 전부터 만성적인 과로에 시달리고 있었습니다. 덕분에 업무 각각에 쏟는 신경이나 집중도는 떨어지면서도 체력은 한계에 다다르는 상황이 이어지고 있었습니다.

대회 TF 역시 예외는 아니어서, PS는 이미 꽤 오랜 시간 동안 하지 못하고 있었고, 출제 문제도 퀄리티 컨트롤이 제대로 되지 않았습니다.

더 이상 문제 상황을 방치할 수는 없었기 때문에 TF 관리에 신경쓰기로 하고 퀄리티 컨트롤에 실패한 문제는 폐기처분했습니다.

피라미드 게임의 경우 최정환jh01533이 그 뒤에 한 번 더 수정했습니다.

사실 그래서 이번 대회 준비 기간에는 계속 다른 분들 눈칫밥을 먹으면서 지냈습니다.

문제도 출제 않고, TF 관리한다고 해놓고 어딘가 반 템포씩 어긋나고 했기 때문에.. 그래서 반성하는 차원에서 <더블팰린드롬> 문제와 <피라미드 게임> 문제의 작도를 제가 만들었습니다. 다들 반응은 괜찮았지만 역시 디자인 경험이 많이 없어서 개인적으로 만족스럽게 나온것 같지는 않습니다.

저는 폴리곤이 싫어요 (1) — 마크다운 ⇒ 폴리곤

ShapeLayer/gfm2polygon-statement

저는 노션과 옵시디언을 즐겨 사용해서, 많은 자료들을 마크다운 규격으로 작성하고 있습니다.

마찬가지로 출제 문제 초안도 마크다운 규격으로 먼저 작성했습니다.

이렇게 작성한 문제는 어느정도 갈피가 잡히면 폴리곤으로 옮겨 작업하게 됩니다.

마크다운 자체가 무난한 문법을 가지고 있어서 왠만해서는 큰 문제는 생기지 않지만, 폴리곤의 문법 체계가 꽤나 특이해서 꽤 한계가 있는 편입니다. 그래서 결국 마크다운 문법을 직접 폴리곤 TeX문법으로 직접 바꿔줍니다.

문제는 상황에 따라 마크다운과 폴리곤 TeX를 왔다갔다해야할 때가 있다는 것입니다. 그리고 변환 작업을 반복하는것은 상당히 소모적이었습니다.

그래서 결국 github/cmark-gfm을 이용해서 마크다운을 폴리곤 TeX문법으로 변환해주는 변환기를 작성하게 되었습니다.

사실 이 변환기 작성에 시간이 더 들어간 것 같지만, 그 뒤에 몇 번씩 유용하게 사용한데다 이제 휴먼 에러를 방지할 수 있게 되었으니 좋은게 좋은것이라고 생각하기로 했습니다.

저는 폴리곤이 싫어요 (2) — 폴리곤 ⇒ 스택

ShapeLayer/boj-description-converter

이어서 폴리곤에서 스택으로 옮기면서도 비슷한 문제가 있었습니다.

사실 폴리곤-스택 변환기는 이미 박수현shiftpsh 님이 작성하신 solved-ac/boj-description-converter가 있었으므로 이 디스크립션 툴을 사용하면 됩니다.

image.png

하지만 폴리곤의 *부분적인 TeX 문법 체계*가 꽤 일관적이지 않게 구성되어서인지, 디스크립션 툴에 누락된 폴리곤 문법이 있었습니다. 그래서 출제 지문 몇 개가 제대로 변환되지 않아 출제진들은 디스크립션 툴을 눈앞에 두고도 수작업으로 다시 변환할 수밖에 없었습니다.

혹은 디스크립션 툴이 지원하는 문법으로 이미 작성된 지문을 수정하는 것도 방법입니다. 그래서 구체적으로 디스크립션 툴이 지원하는 문법을 확인하기 위해 공개된 코드를 확인했습니다.

코드를 확인한 김에 미지원 문법을 추가해서 개인적으로 사용하다가, 대회가 시작될때가 되서야 오리진에 PR을 날렸습니다.

image.png

before-after를 함께 올리고 싶었는데, before-after용 예제 지문을 짜기엔 또 여유가 없어서 대회가 시작되고서야 PR을 날렸습니다.

LaTeX 기피증에 걸려버린 것만 같아

굳이 폴리곤 때문이 아니더라도 LaTeX(레이텍)보다 Typst(타입스트)를 더 즐겨 쓰게 되면서, PDF로 뽑아내야 하는 자료들은 레이텍 대신 타입스트를 많이 사용하게 되었습니다.

레이텍보다 마이너한 건 어쩔 수 없어도 문법이 레이텍보다 간결하고, 무엇보다 런타임 용량이 작은 게 마음에 들었습니다.

그래서 지난 상반기 대회도, GIST 학생들과 함께 진행했던 GIST 알고리즘 마스터즈에서도 타입스트를 이용해 에디토리얼을 만들어냈었습니다.

이렇게 타입스트 경험이 꽤 쌓이다보니, 자주 사용하는 포맷은 템플릿화 해두게 되었습니다. 대회 에디토리얼이 대표적입니다.

image.png

그래서 이 참에 관계자 분들의 협조를 받아, 에디토리얼 템플릿을 조금 더 다듬어 타입스트 패키지로 등록해버렸습니다.

#import "@preview/ucpc-solutions:0.1.0" as ucpc

이제 타입스트에서는 간단하게 에디토리얼 템플릿을 사용할 수 있습니다.

에디토리얼 리포지토리를 확인하면 알 수 있듯, 이번 대회에서도 이 패키지를 이용해 에디토리얼을 작성했습니다.

이번 대회는 저번 대회보다 어렵네요


브실골골플다다…

대회가 끝나고 친구들, 건너 건너 들려오는 소식, solved.ac 디스코드 서버를 통해 일관되게 받은 반응이 “저번 대회보다 확실히 어렵다”입니다.

사실 좀 다양한 이유가 있었습니다.

  • 박종현belline0124의 부재

    저는 그동안 널리 알려진 유형을 출제하거나 알고리즘 학습용 기본 문제를 살짝 변형한 수준에서 문제를 출제해왔습니다. 그래서 평가되는 난이도보다 체감 난이도가 낮은 편입니다.

    출제 부담을 줄이기 위해 이렇게 내왔는데, 이번에는 출제 부담을 더 줄이기 위해 출제를 않아버려 낮은 체감 난이도의 문제가 함께 없어졌습니다.

  • 송혜근invrtd_h의 합류

    송혜근invrtd_h 님은 GIST 학부과정에 계시는 분으로, 저번 GIST 알고리즘 마스터즈를 이끄셨습니다. 지난번에 핌파티TF 인원이 알고리즘 마스터즈에 합류한 것을 계기로 간간히 교류가 있었는데, 덕분에 이번에 출제진으로 합류하셨습니다.

    개인적으로 송혜근invrtd_h 님이 지문으로 보아도, 풀이로 보아도 문제를 깔끔하고 신선하게 잘 내신다고 생각합니다. 더 나아가 저와는 반대로 평가되는 난이도보다 체감 난이도가 높은 편이지 않을까 싶습니다.

  • 낮은 난이도 문제들의 대량 폐기

    퀄리티 컨트롤에 실패한 문제는 제 문제 뿐이 아니어서, 많은 문제들이 폐기되었습니다.

    심지어 몇몇 문제는 출제진 내부 검수 과정에서 확인하지 못한 유사 문제가 백준에 이미 존재했기 때문에, 정식으로 검수진을 모시고 나서야 문제를 확인하고 폐기하기도 했습니다. 전체 기간 측면에서 보면 꽤 늦은 타이밍에 폐기하게 되어서 대체 문제를 제대로 만들어내지 못했습니다.

  • 읽기 어려운 지문

    낮은 비율이지만 몇몇 지문이 읽기 어렵게 짜여있다, “무슨 말인지 모르겠다”라는 의견을 종종 받을 때가 있습니다. 그리고 이번 대회가 끝나고도 비슷한 의견을 받았습니다.

    문제 지문은 누락되거나 다른 의미로 해석될 여지를 최소화하면서 작성해야 하기 때문에, 검수 과정에서 정말 많은 수정을 거칩니다. 그 래서 검수가 어느정도 마무리되었을 때, 검수 과정에서 지문이 복잡해졌는지 검토해야합니다.

    하지만 이전 두 대회에서는 제 지문만 검토했고, 이번 대회에서는 그 어떤 지문도 얼마나 읽기 쉬운지 검토하지 않았습니다. 이건 단순히 잊었다고 하기에는 꽤 큰 실책이었던 것 같습니다.

  • 기피되는 문제 유형


브골골골플다다…

왜 solved.ac 프로필 배경이 두 개나 있나?


시즌 두 번째 켠왕: 2문제 이상 해결 시 획득 ©정희수

이번에는 다른 대회에서도 드문, 1뱃지 2배경이 지급될 예정입니다. 사전 공지에서도 1뱃지 1배경이었음에도 배경 한 개가 더 추가된 것은 출제진의 이견을 제대로 봉합하지 않은데 대해 제가 책임지는 의미가 좀 있습니다.

지난 대회에 이어 이번 대회에서도 동아리의 디자인 인력에게 뱃지와 배경 디자인을 맡겼습니다. 그리고 제가 뱃지와 배경 작업을 늦게 요청해서, 작업 시간을 줄이기 위해 작업을 다소 편의적으로 추진했습니다.

  • 출제진의 뱃지, 배경 디자인 의견을 묻지 않음
  • 디자이너가 쉽게 작업할 수 있도록 동아리 회원을 모티브로 설정함
  • 디자이너의 의견을 모두 수용함


나 더 이상 못 풀어: 1문제 이상 해결 시 획득 ©정희수

그리고 이 과정에서 모티브 회원과 작업물 속 인물의 성별이 반전되었습니다. 일단 전 당했습니다.

개인적으로는 아무리 모티브 인물을 잡았더라도 실사를 2D로 그려내면, 캐리커처가 아닌 이상 그림만으로는 당연히 모티브 인물을 추정하기 어려울 것이라 생각합니다. 그래서 대강 디자이너가 박종현 놀려먹는 재미로 열심히 데드라인 맞춰서 일 끝내주겠다 싶어 그대로 진행했습니다.

하지만 실존 인물을 토대로 성별을 반전시킨 그림이라는 사실 자체에 거부감을 느끼는 출제진이 있었습니다. 그럼에도 작업 자체가 지금까지의 작업을 뒤집어 엎기에는 너무 진척되어있었고, 뒤집어 엎어야 할 정도라는 문제 인식에 공감할 수 없었기 때문에 그대로 강행했습니다.


훈련병의 편지: 1 문제 이상 해결 시 획득 ©김근성

그냥 의견을 강행하고 논의를 일단락시키기에는 앞서 말했듯이 이번 대회 준비 기간에 눈치보이는 일이 꽤 있었기 때문에, 추가 의견을 수용해서 배경 두 건을 모두 등록하고 추과금을 제 사비에서 지출하는 것으로 했습니다.

이번에 알게 되었는데 대회 당 1개 초과 배경 등록 지양 정책으로, 배경 2개의 등록료가 15만원이라고 합니다. 추과금이 10만원인 셈입니다.

당분간은 편의점에서 점심을 때워야 할 것 같습니다.

* 성별 반전 관련해서, 다른 출제진에게 관련한 언급은 자제해주세요. 전 이런 거 당하는게 하루이틀 일이 아니니 괜찮습니다.

생성형 AI를 어떻게 할까

ChatGPT가 나온 지 이제 꽤 되었고, 본격적으로 생성형 AI의 영향력이 대회에도 미치고 있습니다.

사실 저번 GIST 알고리즘 마스터즈 때도 생성형 AI로 문제를 처음으로 해결한 분이 계셔서, 첫 해결 통계에서 제외한 적이 있었습니다.

개인적으로는 코딩 테스트가 활발해지기 이전에는 PS가 정말 마이너한 취미? 동호회가 있어야만 할 것 같은? 하는 사람만 하는? 그런 느낌이어서, PS는 자기만족이나 취미, 즐거움이 목적이라고 생각합니다.

그래서 장기적으로는 생성형 AI 제출도 수용하게 되지 않을까.. 하는 개인적인 생각이 있지만, 아직은 확실히 시기상조인 생각이고 AI 제출이 부정행위라는 공통된 인식이 있으니 당장 AI 제출을 허용할 생각은 없습니다.

그래서 이번 대회에서도 생성형 AI 제출을 금지했습니다.

당연하게도 AI 코드는 계속 제출되었고, AI 코드 제출은 최소한 모든 상품 지급 대상에서 제외하기로 했습니다.

하지만 대부분의 의심군은 확실한 판단 근거가 부족했습니다. 사실 AI가 생성한 주석만 다 지워도 강력한 판단 근거가 하나 사라지는 셈이니까요.

이번에는 시간과 인력을 갈아서 주관 평가를 했고, 주관 평가이기 때문에 역치를 높여서 정말 확실하게 AI가 작성한 것으로 판단되는 코드만 제외했습니다.


이 판단 기준에 따라 제출에 따라서는 최근 8개월 내 접근 가능한 제출을 전부 확인하기도 했습니다.

이번에는 이렇게 처리했지만, 다음부터는 아무래도 AI잡는 AI의 도입이 필요하지 않을까 싶습니다.

마무리

이번 대회를 준비하기 위해 많은 분이 고생해주셨습니다.

검수진으로 힘써주신 dongwook7, jwpassion1, kiwiyou, ksoosung77, lycoris1600, measurezero, mujigae, tony9402, utilforever님 모두 감사합니다.

이번 대회에 출제 함께 해주신 송혜근invrtd_h 님 정말 도움 많이 됐습니다. 내년 지스트 대회도 잘 준비해봐요!

그리고 지난 대회에서부터 계속 힘써주시고 계신 kiwiyou, measurezero, lycoris1600님 매 대회마다 특히나 큰 힘이 되어주고 계십니다.

마지막으로, 지난 두 대회에 이어 이번에도 귀중한 사재를 아낌없이 지원해주신 utilforever님, 항상 정말 감사합니다. 덕분에 출제진 모두가 정말 든든한 한 끼를 함께했습니다. 오는 일요일의 GIST 일정 함께하고 싶었는데 일정이 잘 안맞아서 정말 아쉽습니다.

언젠간 진짜 찾아뵙는걸로..!

🎉