코딩/코딩 이모저모

Semi Game cup 2 개최 후기글 (문제별 후기 포함)

stonejjun 2021. 8. 8. 13:26

전체 후기

 원래는 이번에도 5/18 부근에 열고 싶었지만, 시간이 충분하지 않아 미루게 되었고, 결국 방학 기간에 대회를 개최하게 되었다. 이번 대회에서 내가 중점적으로 생각한 것은 "형식적". 지난번 대회는 진짜 충동적으로 연 대회이기 때문에, 이 대회를 계속 이어나가려면 좀 더 대회스럽게 틀을 잡아볼 필요가 있다고 생각했다.
 문제 아이디어들을 좀 준비하고, 제일 먼저 생각한 것은 후원. 후원이 있다면 상품이 좋아지게 되고, 그러면 많은 참가자가 생길 수밖에 없다. 또한, 지난번 대회부터 아무런 대가 없이 나를 도와준 분들이 정말 너무나도 고맙기 때문에 검수 기념품도 정말 챙겨드리고 싶었다. 다양한 준비와 노력 끝에 NEXON 측에서 후원을 결심해 주셨다. 이 글에서도 다시 한번 감사드립니당.
 이번 대회를 준비하면서 가장 크게 느낀 점은 1회 대회 때 어떻게 그렇게 문제들을 잘 뽑아내었을까 하는 경외감이었다. 내가 최근에 배우고, 정말 좋아서 문제로 만들고 싶은 것들 (pbs, odc 등) 이 많았지만, 좋은 아이디어와 곁들여서 문제가 나오지가 않았다. 아마도 최근에 너무 ps를 안 한 것이 아닐까 생각도 든다. 무엇보다도 지난번의 ㄱ폭탄 게임과 같은 하드 한 게임 문제를 내지 못했다는 것이 너무 아쉬웠다. 거의 2주는 위키와 논문에서 게임 관련 항목을 뒤져본 것 같은데... 아마 논문 쪽을 좀 더 뒤졌으면 잘 나오지 않았을까 싶지만, 내 논문 검색 실력의 부족함이 여실히 드러났다. 그래도 문제들은 다른 분들이 꽤나 아이디어를 많이 줘서 10문제나 채울 수 있게 되었다.
 이번 대회로 좀 많이 성장했다고 생각한다. 가장 큰 것은 다양한 경험을 하게 되었다는 것. 어떻게 대회를 한번 열어본 사람이 체커라는 것도 모르고 있었는지 정말 의문이다. 이번에 실수오차, 스페셜 저지, 인터렉티브 문제를 출제하면서 정말 많은 경험을 할 수 있게 되었다. 다른 것보다도 대회 제작에 있어 모르는 것을 정말 많이 알 수 있었고, 많은 경험을 하게 되었다.
 다시 한 번 도움을 주신 많은 분들과 참여를 해주신 많은 분들께 감사를 표하며 가독성이 구데기인 전체 후기 파트를 마무리하려고 한다. 

※ 각 문제의 후기에 대해서는 살짝 식의 스포가 있을 수 있으니 이를 주의해주시기 바랍니다.

A. 인증된 쉬운 게임

 지난번에 대회를 2일 열었으나, 참여자 수는 생각보다 아쉬웠다. 거기에다가 이번에는 shiftpsh 님과 이야기를 해서 1 솔 이상에게 뱃지를 주려고 했기 때문에 골드 수준의 문제를 A에 배치하려고 생각했다. 마침 게임이론 쓰는 문제도 많이 없어서 간단한 게임이론 문제를 준비했다. 역시 예상대로 많은 분들이 이 문제를 풀고 뱃지를 받아가시게 되었다.

강력한 풀이 스포

더보기

  아무 생각 없이 간단한 아이디어에 dp정도 해서 풀라고 낸 문제인데... Kali를 출력하는 경우가 2, 6밖에 없다. 이 때문에 문제를 바꿀까 고민도 했지만 이 사실을 발견해서 쉽게 뱃지를 가져가는 것도 좋을 것 같아 그대로 놔두었다. 

 그런데 여기서 터진 큰 문제. 이런 식의 결과가 나오는 문제면, 데이터는 꼼꼼하게 만들었어야 했다. 그런데 그 생각을 까맣게 잊고 있었던 것. 결국 굉장히 약한 랜덤 데이터와 함께 첫 솔브가 if(k==2) kali 가 되었다. 분명히 Ringo 데이터가 두 개가 있었는데 2,2 였나보다... ... ... 긴급히 6 데이터를 넣고 재채점을 진행하고 공지를 작성했다. 그럼에도 불구하고 2,6,+@에서 칼리를 출력하는 몇몇 코드를 막지 못하고 있다. 정말 죄송하게 생각하며, 경험의 미숙이 여기서 나오게 되었다. 작년부터 생각하면 언젠가 한 번쯤 터질만한 일. 아마 대회가 끝나고 백준 문제로 올라가기 전에 데이터 보강을 한 번 하지 않을까 싶다. 

 

B. 루미너스와 모험 중 마주친 퍼즐게임

 문제 아이디어를 계속 고민하던 중 blackking26이 동전을 뒤집는 문제를 가져왔다. 뒷면 동전을 없애고 근처 동전을 뒤집는. 하지만, 그 주간이 마침 넥슨 관계자 분께서 문제에 넥슨 IP를 활용하고 싶으면 상부 허락을 받기 위해 그 주 내로 알려달라고 하셨고, blackking이 ㄹㅈㄷ 지문을 만들어냈다...

 원래는 메소를 뒤집으려고 하다가, 앞뒤? 빛과 어둠? 루미너스? 라는 의식의 흐름으로 미궁에서 함정을 없애는 컨셉이 되었다. 두 스킬 다 실제 루미너스의 스킬에서 따왔다. 본인은 법사를 굉장히 좋아하는 편이다. 지문 관련 이야기를 하는 이유는 blackking이 -메-로 오해받기 싫다고 지문의 제작자를 밝히는 것을 강력히 주장했기 때문이다.  
 TMI : stonejjun은 2020-2021 겨울 방학 때 친구들의 극구 만류에도 불구하고 플레임 위자드를 선택했으며, 함께 시작한 많은 친구들과 함께 플레이를 하며 버닝 2 서버 플레임 위자드 랭킹 1등을 달성했었다...

 아무튼 문제 이야기로 돌아오면, 맨 처음에는 run/solve 만 출력에 N, M에 특이한 조건이 있었다. 하지만 흑왕신이 일반적인 N, M에 대해서 풀어냈고, 이 것을 찍어서 맞추거나 사풀이 싫다는 이유로 스페셜 저지로 바꾸고 그것도 모자라서 테케 형식의 문제로 바꿔버렸다. 참으로 :blobfacepalm:이 아닐 수 없다... 예상 대로 0솔... 풀이 설명을 어떻게 할지 벌써부터 막막하다.

 

 

C. 조화로운 마법 농구 게임

 문제 낼 아이디어가 없어 고통을 받고 있을 때, 작년의 문제 중 기존 문제를 잘 못 읽어서 나온 문제가 좀 있음을 깨닫고, 내가 푼 문제들을 뒤지기 시작했다. 그중에서 Max or Min이 뭔가 베이스로 선택하기 좋아 보였다. 기존 문제와 달라지기 위해서 최선을 다했고, 그 결과 기존 문제와 풀이부터 내용까지 유사성은 1도 찾아보기 어려워진 문제가 되었다.

이와 별개로 설명해야 할 개념이 많아서 정말 지문 제작에 애를 먹었던 문제이다. 맨 처음 지문은 새벽 4시에 작성했는데, 4명 읽으면 질문 7개가 들어올 정도. 1명이 7개를 질문하고, 나머지 3명은 아예 이해를 못해 어떻게 질문을 해야 할지 모를 정도였다. 그래도 계속되는 토론과 대화 끝에 나름 판타지적인 예쁜 ㄴㄷㅆ 지문이 탄생했다! 변화를 좋아하는 마법사와 균형을 좋아하는 흑마법사가 조화를 이루는 마법 농구!

시간제한은 적절히 조절하여 적절한 정도의 풀이는 모두 TLE가 나게 만들었다. 느린로그와 빠른 로그에 그 나름의 경계에 잘 설정을 한 것 같다. 대회 중 적절한 4솔.

 

D. 수식 알아맞히기 퀴즈 게임

ahgus가 문제를 하나 내고 싶어 하길래. "님 이번에도 정수론?"  "ㅇㅇ"  "하... ㄱㄱ" 로 탄생한 문제. ahgus가 문제 지문에 오타를 내었지만 그 정도는 너그럽게 넘어가지 말도록 하자.

(아마도) 정수론을 좋아하시는 분들이 와서 문제를 풀고 가셨다.

 

E. 초콜릿 쪼개기 게임

 초반에 간단한 게임 dp가 하나쯤은 있어야 하지 않을까 하면서 만든 문제. 원래 제한은 500이었다. 그런데 제한이 100000이어도 풀 수 있다는 사실이 발견되고... 어떻게 제한을 안 늘릴 수가 있겠는가! 바로 수정.

 근데 그렇게 만든 문제는 어디에서인가 익숙한 냄새가 나게 되었다... 모든 게임 문제는 "그 수"로 통하는 것일까? 굉장히 신기한 현상이 일어나게 되었다. 만약 sg1의 숫자 카드 제거 게임을 풀어봤다면 무슨 뜻인지 알 수 있을 것이다.
 예상대로 두번째로 많이 풀린 문제였다.

 

F. 흑왕과 어둠의 게임 대진표

 맨 처음에 인터렉티브 문제 제작이 가능하다는 것을 알았을 때부터 대회에 넣으려고 질문을 통해 특정 사람이 우승하는 가위바위보 대진표를 짜는 문제에 대한 아이디어 구상을 했었다. 

 전체적인 베이스만 있는 채로 세부적인 경기 규칙이나, 질문 내용에 대해서 다양한 고민을 했었다. 특히 인터렉티브로 어떠한 질문을 해야 관찰을 잘해서 이로부터 해결하는데 필요한 정보를 얻어 멋있는 문제가 탄생할지 오래 고민했었다. 그렇게 나온 결과물은 꽤나 만족스러웠다. 내가 만든 질문과 조건으로 풀리는 것이 계산되었을 때의 쾌감. 

하지만 그와 별개로 인터렉티브 문제를 처음 제작해봐서 정말 많이 어려움을 겪었다. 그 과정에서 Tamref에게 정말 많은 도움을 받았다. 

채점이 굉장히 오래 걸려서 데이터를 좀 덜어내고, 채점 우선순위를 2로 바꾸었다. 실제로 채점이 약 10분 정도 걸린다... 다행히도 예상대로 인터렉티브 문제이기 때문에 제출 시도가 그렇게 많지는 않았다. 본인의 기준에서 꽤나 좋은 문제라고 생각되어 추천드리는 문제이다!

 

G. 다리 건너기 게임

jhwest가 졸업 논문의 일부에 쓰일 문제를 보여줬었다. 그것이 J와 K가 각자 다리를 쓰는 것이 아니라, 기존 게임판이 있고 다리를 공유하는 다리 건너기 게임이었다. 그 문제를 풀어내고서 아이디어가 괜찮다는 생각과 함께 sg2에 쓰겠다고 약속을 했었다. 이 문제는 약 9달 전부터 예정이 되어있었던 것이었다. 

사실 근데 이 문제는 jhwest가 거의 다 준비했다. :blobthx:

 

H. 기둥과 성벽 디펜스 게임

 지난번에 정말 좋은 문제인 경비병 세우기 게임의 아이디어를 준 dillion에게 다시 찾아갔다. 그 결과 또 하나의 엄청난 문제를 받을 수 있었다. 정확히는 하나의 lemma. 자신의 졸업 논문에 일부분으로 사용되었다고 했다. 나름 이 문제도 "논문 문제"라고 할 수 있지 않을까?

 나는 lemma를 들은 상태에서 문제를 만든 것이기 때문에 모르는 사람이 이 lemma를 생각하기까지 얼마나 걸릴지 궁금했다. 이 문제에 대해서는 많은 토론이 오고 갔었다. 예외처리를 얼마나 하게 만들 것인가. 결국 최대한 예외처리를 안 하게끔 깔끔하게 문제를 주는 쪽으로 결론이 났고, 이러한 문제가 만들어지게 되었다.

 그 관찰과 생각, 어쩌면 증명이 중요한 문제인데 이 문제에 대한 풀이를 그냥 공개하는 것이 맞나라는 생각도 들기도 한다. 

I와 J는 각각 blackking과 jhwest를 믿고 맡긴 문제라서 쓸 내용이 크게 없어 딱히 작성을 하지 않으려고 한다. 

 

그 외

풀이 슬라이드를 작성하고 있는데 굉장히 힘들다. Tamref 이 UCPC 풀이 슬라이드 템플릿을 들고 왔다. 이를 이용해서 그래도 풀이를 좀 제대로 작성중인데, '갖춰진' '형식적인' 이런것을 대회에서 이루어내기 위해서는 정말 꼼꼼해야하고 많은 노력이 필요하다는 것을 알게 되었다. 작년에 풀이 슬라이드 쓱싹 만들어서 올린 것을 생각하면 힘들기는 하지만 이것이 내가 추구하는 길이라고 생각하며 열심히 작성을 하고 있다. 하지만, 그 대신 풀이가 바로 안올라가고 천천히 올라갈 예정이다. 그렇기 때문에 저에게 어떠한 방식으로든지 풀이를 질문하면 바로 답변해드릴 것이다!

1차 로고와 뱃지가 나왔다!

다시 한번 이 대회에 관심을 가져주신 모든 분들께 감사의 말씀을 드립니다. 덕분에 성공적으로 2회 차도 마무리될 수 있었습니다. 가능하면 내년에 Semi - Game cup 3로 뵙겠습니당!

개최 일지를 읽어보고 싶다면 https://stonejjun.tistory.com/176

'코딩 > 코딩 이모저모' 카테고리의 다른 글

Semi - Game Cup 2 Editorial  (2) 2021.08.11
Stonejjun의 참회 글  (0) 2021.08.11
Semi - Game Cup 2 홍보글  (0) 2021.08.01
Semi - Game Cup 2 일기장  (1) 2021.05.24
idea - 원에서 두 호의 위치 관계  (1) 2021.05.04