Skip to content

ALDS 4. My Codeforces Problemsetting Experiences

Migrated

This article is migrated from which I wrote on another website.

안녕하세요. 이 시리즈에서는 저의 생각과 관련된 글을 적어보고자 합니다. 이번 글은 Codeforces라는 프로그래밍 대회 플랫폼에서 대회 출제를 몇 번 해본 경험을 소개하고자 합니다.


Codeforces = ?

Codeforces(이하 CF)는 전 세계에서 가장 활발한 알고리즘 프로그래밍 대회 플랫폼들 중 하나입니다. 러시아의 Mike Mirzayanov라는 사람이 만들었으며, 거기서 대회를 치다보면 전 세계에서 괴물 같은 사람들이 수백 수천명씩 몰려들어서 매 대회마다 2~3시간 동안 무협 싸움을 하는 광경을 보실 수 있습니다. 주어진 시간 안에 문제들을 얼마나 많이 그리고 빨리 풀었느냐에 따라서 레이팅이 결정되고, 랭킹도 매겨집니다. 비슷한 위치에 있는 플랫폼으로는 일본의 Atcoder, 미국의 Topcoder가 있습니다.

img1

Caption

코드포스 유저들의 레이팅 분포입니다.

비록 지금은 우크라이나 전쟁 같은 이슈가 있긴 하지만, 어쨌든 이 분야에서는 탑급의 위치를 자랑하고 있다보니 별의별 스폰서 라운드가 이루어지기도 합니다. 이 웹사이트에서 프로그래밍 대회를 스폰서링한 대표적인 기업들의 목록은 다음과 같습니다.

Problemset에서 대충 CF에서 어떤 류의 문제가 출제되는지 맛보기를 하실 수 있습니다. 레이팅 숫자가 낮을수록 쉽고, 높을수록 어렵습니다. 제일 쉬운 문제 난이도가 800 정도이고, Div.2에서 제일 어려운 문제는 보통 2500-2900, Div.1에서 제일 어려운 문제는 3200-3500 정도입니다. 코딩테스트 문제의 상한선은 출제 방향이 CF랑은 많이 달라서 1:1 비교는 어렵지만, 굳이 비유하면 1500 정도가 쉬운 코테에서 제일 어려운 문제, 1900 정도가 어려운 코테에서 제일 어려운 문제랑 비슷하지 않을까 쉽네요.


Codeforces Round 566

저는 관종끼가 좀 많은 편이었고, 마인크래프트에서 렐름 공식 게임을 만들었던 것처럼 코드포스에서도 뭔가 제 이름으로 대회를 열어보고 싶었습니다. 만명 단위의 참가자들이 제가 만든 문제들을 몇 시간 동안 머리를 써가면서 푸는 상상을 하니까 꼭 대회를 열어보고 싶다는 생각이 들더군요.

그래서 무작정 Codeforces에 대회 개최 신청을 했습니다. 당시 제 레이팅은 블루(1600+)였고, 저는 제가 생각한 난이도별 문제 아이디어들을 가지고 문제를 만들어서 대회를 열 생각에 기쁨을 감추지 못하고 CF의 운영자들이 답변하는 날을 기다렸습니다. 몇달 뒤 arsijo라는 우크라이나 출신의 CF IGM (레이팅 2600+, IOI 금상) 유저가 저한테 담당 배치되었고, 그 유저가 제 문제 아이디어를 평가했습니다.

충격적인 결과는.. 제가 만든 초기 6개의 아이디어들 중 제일 쉬운 문제를 제외한 5개가 모두 거절당했다는 것입니다. 이 문제는 너무 전형적이고, 저 문제는 너무 이상하고, 그런 등등 다양한 이유로 거절당한 것이죠. 지금 다시 회고해보면 정말 형편없는 문제들이긴 했습니다. 어쨌든 당시 저는 문제 아이디어가 당연히 통과될거라고 생각하고 Codeforces Polygon에서 문제 데이터셋까지 만들어둘 정도였으니, 허탈감이 좀 컸죠.

그 이후로 저는 여러 문제 아이디어를 제시하였고, 긴 시간 동안 토론한 끝에 arsijo가 마침내 최종 허락한 버젼의 문제들이 완성되었습니다. 그 문제들은 제가 만든 최초의 CF 라운드인 Codeforces Round 566에 들어가게 됩니다.

나중에서야 알게 되었지만, arsijo도 제가 계속해서 문제들을 푸쉬하고 의견을 어필하다보니 본인이 피로감을 느껴서 퀄리티 바를 좀 낮춰서 평가해준 것 같습니다. 어쨌든 당시에 저는 문제를 만들고 대회를 열기 위해 고군분투했고, 그 과정에서 대학 동문들 몇 명도 테스터로 초대해서 테스팅도 받고 그랬습니다.

그 후 arsijo의 인맥을 통해서 외국인 테스터들한테도 피드백을 받고, 문제가 될 만한 부분은 수정하고 그러면서 대회를 열었죠. 그 과정에서 제 문제 C는 지금은 기억이 안 나는 어떤 모종의 이유로 교체가 되어서 단독 출제자로 라운드를 여는 것에는 실패했는데, 왜 교체가 되었는지는 기억이 나지 않네요. 그 과정에서 Maximum Sine이 D 위치에 있던게 F로 옮겨지기도 하고 (CF의 문제들은 보통 A-B-C-D-.. 순으로 갈 수록 난이도가 상승합니다), 어떤 테스터분에게는 오지게 디스받기도 하고 뭐 그런 해프닝들이 있었네요.

그러나 프로그래밍 대회 출제의 고비는 문제 아이디어에서 끝나지 않았습니다. 틀린 풀이를 걸러내기 위해서는 정말 다양한 방식으로 입력 데이터를 생성할 필요가 있었습니다. 당시 저는 노하우가 그렇게 많지 않았어서 제 딴에는 이것저것 해본다고 다양한 데이터를 생성했지만, 결국 나중에 설명드리게 될 "Weak Systest" 사태가 터지고야 맙니다.

이런저런 고생 끝에 Div.2 전용 대회가 열렸고, 9000~10000명 정도의 참가자들의 무협지가 열리게 되었습니다. 대회 랭킹을 실시간으로 감상하는 것은 정말 재밌었습니다. 다음은 제 라운드의 주요 통계(clist.by를 참조했습니다)입니다. 9319명이 참가 신청을 했고, 실제로 5543명이 대회 중 코드를 제출하였습니다.

문제 번호 문제 이름 해결(명) 해결 비율 시도(명) 난이도
Div2A Filling Shapes 4787 86% 5449 1000
Div2B Plus from Picture 2367 42% 4603 1400
Div2C Beautiful Lyrics 1342 24% 1871 1700
Div2D Complete Mirror 32 0.6% 448 2400
Div2E Product Oriented Recurrence 171 3% 359 2300
Div2F Maximum Sine 0 0% 41 2700

대회 진행 중에 별의별 이상한 질문도 많이 받았습니다. 정말로 대형 코딩테스트나 프로그래밍 대회에서 엄격한 지문을 작성해야 하는 이유가.. 문장 하나하나를 잘못 이해할 여지가 조금이라도 있는 부분이 있으면 그거를 잘못 이해하는 사람이 꼭 1명씩은 나타나더군요. 그리고 "이게 왜 답이 4인가요?" 같이 본인이 머릿속에서 로직을 안 돌려보고 질문을 하는 사람들도 되게 많았습니다.

img2

Caption

이 경험은 향후 제가 알고리즘 문제 지문에 더욱 신경쓰게 만드는 계기가 됩니다.

그리고 B번 문제에서 대형사고가 터집니다. 바로 systest fail이 줄줄이 터진 것이죠. Systest fail이란? 일반적인 코딩테스트 플랫폼과 달리 Codeforces에서는 서버의 과부하를 줄이기 위해, 그리고 정답 코드를 부실하게 작성하는 사람들을 추가적으로 걸러내기 위해, 데이터를 2종류의 세트로 분리하고 대회 중에 채점하는 "Pretest" 세트와 대회가 끝나고 난 뒤 추가적으로 채점하는 "Systest" 세트가 존재합니다. Pretest 데이터는 통과해서 문제를 풀었다고 생각했는데 systest 채점에서 본인의 풀이가 틀리는 경우를 "Systest fail" 혹은 줄여서 "sysfail"이라고 부릅니다. 문제는 B번 문제에서 sysfail을 당한 유저가 너무 많았다는 거죠. 그래서 Pretest 데이터가 왜 이렇게 약하냐고 비판을 하는 유저들이 많이 나왔고, 대회 공지를 비추천하는 유저들도 꽤 생겼을 정도였습니다. 저도 당시 약간의 자괴감이 있었던 기억이 나네요.

국내외 여러 코딩테스트 플랫폼에서도 데이터가 약한 일은 비일비재한데, 거기서는 systest가 따로 분리되어 있는 것도 아니고 문제를 맞추면 유저 입장에서는 오히려 점수가 올라가서 이득을 보기 때문에, 그리고 경우에 따라 어떤 데이터가 채점에 사용되었는지를 저작권으로 보호하는 플랫폼들도 있기 때문에 이런 비판은 잘 나오지 않는 것 같아요. 하지만 CF는 워낙 대부분의 데이터가 오픈되어 있고 학술적인 분위기가 강하고, 심지어 sysfail은 "레이팅을 떨구는" 일이기 때문에 비판이 더욱 많은 것 같아요. F번도 B번보다도 심각한 이슈(Weak Systest)가 있었으나, F번은 워낙 고인물들만 건드리는 문제였고 심지어 Div.2 참가자 대상 중에서는 해당 문제를 맞춘 사람이 아무도 없었기 때문에 임팩트가 그나마 덜했습니다.

C번은 구현 heavy한 문제였는데, 제가 낸 문제가 뭔가 문제가 생겨서 arsijo가 급하게 출제해준 문제였던 것으로 기억합니다. 이 문제 또한 굉장히 많은 비판을 받았습니다. 우리가 코테 보는 것도 아니고 능지싸움 하는 건데 왜 이렇게 구현이 무거운 문제를 주냐는 그런 느낌이죠. 저는 다른 유저들보다는 구현 heavy한 문제들에 대해 좀 관대한 입장이긴 합니다. 때로는 스마트한 구현으로 정말 깔끔하게 문제를 구현할 수 있는 경우도 있는데, 그런 테크닉들이 알고리즘판에서는 인정을 못 받는 경우가 많아서 좀 아쉽긴 합니다.

D번은 제 생각에 D번으로 들어가면 안 되었던 문제였던 것 같아요. 문제 아이디어 자체는 저는 좋아하는데, 문제 위치에 비해 너무 높은 난이도가 제공되어서 수많은 Div.2 참가자들에게 좌절감을 줬던 것 같습니다. 제 주변에 있던 한국인 테스터 한 분도 "이 문제가 블루 레이팅에 의해서 대회 시간 내에 풀릴 수 있다" 같은 가스라이팅을 많이 하셨습니다. 여기서 뼈저리게 느낀 점은, 게임 난이도와 마찬가지로 수학문제, 코딩문제의 난이도는 출제자가 본인의 머리에서 나왔다는 이유로 매우 저평가하기 쉽다는 점입니다. 그래서 저는 어떤 문제를 만들었을 때 제가 그 문제가 어떤 난이도라고 "그냥" 생각이 든다면 무조건 거기서 최소 2단계 정도 업그레이드해서 실제 난이도로 책정합니다.

E번은 지금 와서 보면 너무 전형적인 문제였습니다. 저는 소인수분해 + 행렬으로 풀었는데, discrete log라던가 각종 "Well-Known" 테크닉들을 데려와서 아 이거 바로 풀리네~ 하는 사람들이 많았었고, 아직 갈 길이 멀다는 생각이 들었죠. 실제로 CF나 백준 같은 사이트에서 문제 출제 권한을 아무한테나 안 주고 제한을 주는 이유가 이런 거라고 생각합니다. 문제를 풀어본 경험이나 스킬이 많지 않으면 본인 입장에서는 신선한 문제가 고인물들 입장에서는 "흔한 이론 적용 연습문제"가 되어버리는 거죠.

F번은 처음에 D 위치에 있었는데, 이게 D 위치에 있었더라면 정말 끔찍했을 것 같군요.. 하지만 이 문제조차 제가 의도한 정답보다 훨씬 빠르게 푸는 방법이 있었고 그 방법이 고인물들 사이에서는 Well-Known이라더군요.. 코딩테스트나 수능수학 문제 같은 거는 이미 봤던 유형의 문제가 그대로 와도 별 이슈가 안 되고 또 실제로 그런 방향을 지향하지만, 이런 CF 같은 분위기에서는 그런 익숙한 유형의 문제를 대회(특히 Div.1 같은 고난이도 지향 대회)에 출제하는 것을 저평가하는 경향이 있습니다. 그래서 최대한 유니크한 문제를 새로 만드는 게 좀 고통스럽긴 한데, 또 결과적으로 멋진 문제를 만들게 되면 그 때의 열매는 정말 달콤하기도 해서 재밌는 것 같습니다.

아무튼, 이렇게 저의 첫 코드포스 대회는 마무리됩니다. 그리고 생각했습니다. "아 또 열고 싶다."


Codeforces Round 589

CF 566을 마치고, 저는 새로운 라운드를 열기 위해 다시 고군분투하게 됩니다. 이때쯤 제 코드포스 레이팅이 퍼플이 되었던 것 같아요. 그렇게 저는 다시 arsijo를 배정받고 제 두 번째 코드포스 라운드를 열게 됩니다. 이번에는 라운드 공지를 쓸 때 재밌는 일이 발생했는데, 일반인 주최 라운드 중에서 역대급으로 공지에 추천한 사람들이 많았다는 것이었습니다.

img3

Caption

당시 기준으로 일반적인 라운드는 보통 추천수가 300-500 정도에 머물렀습니다.

저는 당시에 제가 작성한 방식의 공지가 뭔가 특이해서 그랬나 싶었는데, 알고보니 더 중요한 효과가 하나 있었습니다. 바로 "군중심리"입니다.

당시 저는 외국인들과 알고리즘 관련 디스코드 친목 서버에서 놀고 있었고, 그 중에서는 고레이팅 계정을 여러 개 보유한 친구들이 있었습니다. 그 친구들이 제가 공지를 올리자마자 제 공지에 upvote를 하자고 단체로 prank를 한 거죠. CF에서는 레이팅이 높은 유저일수록 추천/비추천을 했을 때 그 숫자가 더 많이 움직이는 기능(하지만 대놓고 밝히지는 않은)이 있었습니다. 그래서 고레이팅 친구들이 추천 폭격을 하자 초반부터 추천수가 많이 올랐고, 거기에서 군중심리가 영향을 받았던 거죠.

Quote

"저렇게 많은 사람들이 추천을 했네? 음, 게시글을 읽어보니 그런 것 같아. 나도 추천해야지!"

이런 식으로 수많은 사람들이 추천을 했고 그게 결국 저렇게 거대한 추천수를 만들어버린거죠. 처음 알았을 때 많이 놀랐지만, 저는 이게 유투브나 인스타그램에서 마케팅이 작동하는 원리랑 매우 유사하다는 느낌이 들었습니다. 유투브에서도 돈 받고 좋아요랑 조회수 조작해주는 업체들이 있다고 알고 있는데, 다 저런 군중심리 원리를 이용한 것이 아닐까요? 이후로도 투자판에서도 다수는 손해를 보고 소수만 막대한 이득을 보는 것을 느끼고 그러다보니, 저는 집단지성과 군중심리의 함정에 빠지는 것을 경계하는 편입니다.

어쨌든, 대회는 그만큼 기대감이 커졌고 그래서 그런건지는 모르겠으나 Mike Mirazyanov(사이트 창시자)가 직접 개입해서 대회가 시작되기 전에 문제 하나의 이름을 바꿔버리는 일도 있었을 정도였습니다. arsijo도 평소랑 다르게 지문에 신경을 많이 쓰는 모습을 보였습니다. 실제로도 제 대회는 당시 코드포스 규모 치고는 상당히 많은 사람들이 참가하게 되었습니다. 13442명이 참가 신청을 했고, 8193명이 실제로 코드를 제출했습니다. 구체적인 수치는 다음과 같습니다.

문제 번호 문제 이름 해결(명) 해결 비율 시도(명) 난이도
Div2A Distinct Digits 7640 93% 8101 800
Div2B Filling the Grid 4110 50% 5795 1400
Div2C Primes and Multiplication 2371 29% 3075 1700
Div2D Complete Tripartite 1157 14% 1870 1900
Div2E Another Filling the Grid 273 3.3% 361 2300
Div2F One Node is Gone 49 0.6% 128 2500

대부분의 문제들에서 이슈가 거의 없었습니다. 문제의 아이디어가 아름답다거나 그런 건 없었지만, Div.2 대회에서는 그런 부분이 아주 요구될 필요도 없었고, systest라던가 지문 이슈라던가 그런 것들이 별로 없었기 때문에 호평을 꽤 많이 받았던 대회였던 것 같아요. F번은 아이디어 난이도에 비해서 구현을 덕지덕지해야 하는 문제라 혹평을 받았긴 한데, 어차피 Div.1에 낸 문제도 아니라서 비판은 별로 없었던 것 같습니다.

그래서, 저의 두 번째 대회는 성공적으로 마무리가 됩니다. 그리고 생각했습니다. "아 또 열고 싶다."


Codeforces Round 599

이 라운드는 제가 출제를 주도한 라운드는 아닙니다. 저는 사실 CF Round 589에 7문제를 내려고 했었습니다. 하지만 제가 만든 마지막 문제는 GM (레이팅 2400+) 레이팅을 가진 테스터들을 포함해 그 누구도 일주일 이상 동안 제대로 풀지 못했고, 결국 해당 문제는 Div.2 라운드에 내기에는 너무 어렵다고 arsijo가 저를 설득하였고, 저는 해당 문제를 제외했습니다. 이 문제는 다른 Div.1 라운드에서 어려운 문제에 뭔가 이슈가 생겼을 때 대신 내는 스페어 문제가 되었습니다. 그리고 얼마 안 가 Round 599의 Div.1 D번 문제에서 문제가 생겼고, 해당 문제는 제 문제로 대체가 됩니다.

해당 문제는 제가 살면서 만든 알고리즘 프로그래밍 문제들 중 가장 아름답고, 난이도가 높은 문제였습니다. 대회가 끝난 뒤에도 몇 달 동안 해당 문제의 제출 기록을 보면서 대회가 끝나고 나서도 해당 문제를 푸는 사람이 있나, 어떻게 풀었나 등을 열람했을 정도로(지금 생각해보면 좀 음침한 스토커 같네요..) 저는 해당 문제에 대해서 자부심이 많았습니다.

Div.2에는 10683명이 참가 신청 및 6201명이 코드를 제출했고, Div.1에는 1138명이 참가 신청 및 756명이 코드를 제출했습니다. 다음은 주요 통계입니다.

문제 번호 문제 이름 해결(명) 해결 비율 시도(명) 난이도
Div1D Number Discovery 6 0.8% 13 3400

img4

Quote

"LGM(CF 최고 레이팅 유저)들이 너가 만든 문제를 40분 넘게 고전하는데, 기분이 어때?" (어떤 IGM 유저가 한 말)

해당 문제는 같은 대회의 Div.1 E보다도 더 높은 난이도를 할당받았지만, 어차피 Div.1 후반 문제들은 난이도 밸런스보다 더 중요한 게 문제의 아름다움이나 유니크함이었기 때문에 오히려 더 좋았습니다. 한동안은 정말 뽕에 취해 살았던 것 같아요. 기분 좋았던 순간이었습니다. 위키백과에서 우연히 Ulam 수열을 보고 영감이 떠올라서 만든 문제였는데, 이런 식으로 exclusion이 inclusion에 직접적으로 영향을 주는 문제 유형이 생각보다 재밌는 걸 할만한게 많더군요. 그런데 또 고인물들은 문제 지문이 유사했던 수학 올림피아드(Putnam) 문제(문제가 요구하는 바가 많이 다르긴 하지만)를 가져오더군요.. 역시 세상은 넓구나 싶었습니다.


Codeforces Round 633

CF 589를 마치고 나서는 코딩테스트도 건드리고, ICPC도 수상하기도 했고, 여러가지 측면에서 2020년은 제가 정말 알고리즘 문제에 모든 걸 바쳤던 시기였던 것 같습니다. 이때는 arsijo가 아닌 antontrygubO_o (우크라이나 출신 IMO 금상, IGM 유저, MIT 학생, 이하 anton)를 배정받았습니다. 그리고 이 때도 Div.2 라운드를 열기로 했지만 어쩌다보니 Div.1+2로 격상되었고, 그 과정에서 저는 정말 머리를 쥐어짜내야만 했습니다.

Anton은 제가 만난 CF 대회 담당자들 중에서 가장 문제의 "아름다움"을 까다롭게 평가하는 사람이었습니다. arsijo는 그래도 좀 자비로운 편이었는데, anton은 진짜 자기 마음에 들지 않는 문제들은 가차없이 쓰레기통으로 다 집어던졌습니다. 이 문제가 단순히 특정 이론을 묻는 문제인지, 이미 있는 문제랑 비슷한 건지 등을 정말 까다롭게 심사했고, 저는 "괜찮은 아이디어"를 생각하기 위해 노력을 많이 했고, 진짜 머리 터지는 줄 알았습니다. 특히 당시에는 제가 코딩테스트 문제들을 대량생산하던 시기였기 때문에 머리가 약간 그쪽으로 align이 되어 있어서 더욱 양질의 문제를 생산하기가 힘들었던 것 같아요.

그 과정에서 anton이랑 gamegame (홍콩 LGM 유저, 옥스포드대 학생) 이랑 대화를 엄청 많이 하게 되었는데, 진짜 세계급 천재들을 정면대결로 승부하는 거는 어렵다는 생각을 많이 했습니다. 제가 문제를 머리 쥐어짜내서 생각해오면, 1분 정도 생각하더니 "응? 이거 이렇게 풀면 되는거 아님? 너무 전형적인데?" 하는 경우가 꽤 많았습니다. 저도 평소에 스스로가 똑똑하다는 자부심을 가지고 있고, 어디 가서 이런 쪽 지능으로 안 꿀린다고 생각했는데, 벽을 넘으면 더 큰 벽이 있고 그걸 또 넘으면 뒤에는 더 큰 벽이 있던 거죠. 물론 지능은 스칼라가 아니고 방향이 다양하기 때문에, 그리고 세상은 정점에게만 기회를 부여하는 것은 아니기에 다른 사람들도 먹고 살 방법이 다양하게 있다고 생각합니다.

또 하나 재밌는 썰을 풀어보면 제가 대회를 열 당시에는 오렌지(2100+)에서 추락해서 퍼플(1900+) 레이팅이었는데, 어떤 사람들은 "Div.1 자격을 간신히 가지고 있는 주제에 왜 Div.1 대회를 염?" 이라는 비난 덧글을 달기도 했습니다. 확실히 문제 푸는 실력이 좋을 수록 아는 게 많고 보이는 것도 많기 때문에 좋은 문제를 낼 확률이 높다고 생각하긴 합니다만, Danny Sleator 같이 레이팅은 별로지만 연구실적에서 대단한 경우도 있어서(이 분은 카네기멜론 컴공 교수십니다), 그리고 레이팅이 높다고 무조건 문제를 잘 내는 것은 아니어서 guarantee는 아니고 어디까지나 상관관계가 있는 random variable 정도로 보시면 될 것 같습니다. 그래서 출제를 하기 위해 레이팅을 꼭 어느 정도로 높여야겠다는 압박감을 가지실 필요는 없을 거 같아요. 좋은 문제를 만드는 데 더 집중하시는 게 여러가지 면에서 유익합니다.

이번 라운드에서는 Div.2는 19768명이 참가 신청을 했고 12032명이 실제로 코드를 제출했고, Div.1은 1983명이 참가 신청했습니다. (코드 제출자는 clist.by 통계가 조금 이상하네요) 다음은 주요 통계입니다.

문제 번호 문제 이름 Div.2 해결(명) Div.2 해결 비율 Div.2 시도(명) Div.1 해결(명) Div.1 해결 비율 Div.1 시도(명) 난이도
Div2A Filling Diamonds 10492 87% 11507 900
Div2B Sorted Adjacent Differences 8132 67.5% 9420 1200
Div2C, Div1A Powered Addition 5176 43% 8066 1346 97% 1385 1500
Div2D, Div1B Edge Weight Assignment 1157 14% 1870 1226 88.5% 1308 1800
Div2E, Div1C Perfect Triples 97 0.8% 299 708 51% 854 2200
Div1D Nested Rubber Bands 92 6.6% 396 2700

Div.1 E번 문제는 제가 만든 문제가 아니라 제외했습니다. 이 문제는 gamegame이 만들었고, 3500 난이도를 할당받게 됩니다.

저는 이때 어떤 문제들을 anton이 허가했다 거절했다 이런 말들을 되게 공개적으로 많이 했었는데, 이때 Um_nik 같은 유저들이 "너가 만든 문제인데 anton 뒤에 숨지 말고 책임감 좀 가져라" 라는 DM을 하기도 했습니다. 그때 생각해보면 제가 문제를 통해 저의 ego를 표현하는 것보다도 anton의 기준에 통과시키기 위해 급급했던 때도 있었던 것 같아서 좀 찔렸네요.


어쨌든 CF 대회 출제는 너무 좋은 경험이었고, 저는 지금도 CF에 대회 출제했다는 경력을 자랑스럽게 이력서에 박아두고 있습니다. 면접에서 아무도 관심 안 가지긴 하지만, 뭐 어때요.

읽어주셔서 감사합니다. 새해 복 많이 받으세요.