포스트

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

sorohue가 PS하는 블로그

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

개요

저는 미워하셔도 되긴 하는데 다른 운영진이나 저희 대회 너무 미워하지는 말아주세요 좋은 문제도 많음 엉엉

디비전 별 문제는 다음 링크에서 확인할 수 있습니다. (딥1) (딥2) (딥3)

운영 얘기

선제 얘기

내부 인원들끼리 Call for Tasks를 했습니다. 일단 제가 심심해서 다른 출제진 분들이 올리시는 아이디어를 싹다 풀고 난이도랑 풀이 코멘트 같은 걸 짤막하게 남겨서 혼자 보면서 자기만족을 얻으려고 했는데요. 그냥 그거 가지고 1차 선제를 했습니다.

괜찮은 문제가 제 생각보다도 꽤 많았습니다. 출제진 == 선제진의 형태로 1차 선제를 하다 보니 문제를 최대한 살리는 방향으로 흘러간 거 같고, 어쩌다보니 디비전 3개 도합 2625문제짜리 고봉밥 셋이 되었습니다. 세팅/검수에 부하가 너무 과했던 거 같네요. 미안합니다 엉엉

추려진 문제에 대한 검수진 의견을 받아 이를 바탕으로 디비전 별 문제 배치를 진행했고, 그 최종 결과가 여러분이 대회장에서 보신 그 문제 배치입니다. 각 디비전 별로 (적어도 제가) 의도했던 바는 이렇습니다.

  • Div. 3: CP 및 프로그래밍 자체에 익숙하지 않은 사람들까지 대회에 즐겁게 참가할 수 있도록 해야 했습니다. 구현이 상대적으로 어렵지 않으며 간단한 관찰을 통해 정답에 도달할 수 있는 아이디어성 문제 위주로 좀 배치하려고 했습니다.
  • Div. 2: 사실 별 생각 없었고 그냥 어려운거 Div. 1에 올리고 쉬운 걸 Div. 3에 내린 다음 남은 걸 다 밀어넣었습니다. 근데 결과를 보니까 딥2가 제일 재밌게 생겼더라.
  • Div. 1: UFC 셋입니다 에디토리얼에는 플래반 다이아반 정도로 돼있긴 한데 사실상 준 플랜디 셋입니다. 대회 특성상 템플릿을 검색해 가져와 쓸 수 있었다는 점 때문에 템플릿 기반의 문제가 깡 아이디어성 플래 문제들보다 체감상 더 쉽게 느껴질 거다라는 생각이 있었어요. 그런 점을 고려해서 다이아급 문제들을 좀 내려치기를 하면 대충 다 플래로 수렴한다?는 느낌.
    • 그렇다고 이렇게 전부 다이아 쌀에 몰릴 줄은 몰랐는데. 내년에는 다이아를 그냥 다 갖다 버리고 아이디어성 플래 범벅으로 박아버려고 괜찮지 않나 싶기도 하네요.

앳코더에 문제 세팅하는 얘기

AtCoder에의 문제 세팅이 기존 BOJ Stack과 다른 점은 대충 다음과 같았습니다.

  • 체커, 문제에의 배점, 입출력 파일, 지문을 로컬에서 업로드하는 방식입니다.
  • 지문은 Mardown 형식으로 작성합니다. 해당 md 파일을 HTML로 포트해 앳코더에 올리는 프로그램을 제공해 주셨습니다.
    • 근데 해당 프로그램의 수식 parser의 동작이 저희 예상과 좀 달랐습니다. Div. 2의 C번 문제에서 있었던 LaTeX 수식 깨짐 이슈가 이것 때문입니다. 제가 앳코더에 그 문제 지문 업데이트에서 올라올 때마다 보고 고쳤는데 대회 직전에 Div. 1 쪽 유의사항 설명하고 하느라 못 봤어요. ㅈㅅ

로컬의 파일을 업로드하는 방식이라 다른 출제진들의 수정 사항을 모두가 실시간으로 확인하려면 Git 등의 파일 공유 시스템을 사용해야 했습니다. Git 사용법이 익숙치 않은 출제진도 많았고 AtCoder는 전원이 처음 사용해 보는지라 에러도 여러 번 내고 하면서 우당탕탕 어떻게든 앳코더에 세팅을 했습니다.

그냥 개인에게 과부하를 주더라도 아예 한 사람이 패권 잡고 모든 문제 패키지 긁어와서 정리하고 올리는 방식으로 하는 게 나았을 거 같기도 하네요. 인권을 포기할 운영진이 필요하다

당일 운영 얘기

KMO랑 또 겹쳤습니다. 이번에는 토요일 공개강좌?랑도 겹쳤어요. 덕분에 등록 전후로 강의실 주변이 좀 혼잡했습니다. 데스크를 두개 펼쳐서 등록 프로세스를 투 코어로 돌리고 싶었는데 상태가 그리 여의치 않아서 단일 코어로 돌아갔는데 데스크에 있던 스태프 분들이 어떻게 잘 열심히 해서 등록 잘 해준 거 같습니다. 굿

출제진과 대회장 현장 감독을 동시에 하는 게 쉽지 않네요. 스태프 비용을 더 주고서라도 현장 감독을 위한 운영진을 더 차출하는 게 편할 거 같습니다.

대회 종료 후는 기억이 날라갔습니다. 그냥 에디토리얼 설명 빨리 하고 Div. 1 방으로 넘어가서 잠깐 쉬다가 스코어보드 열 때쯤 돌아와서 보고 친구들이랑 밥 먹고 자버렸습니다. 덕분에 다른 모든 운영진의 4시간에 걸친 저에게의 모든 멘션을 씹어버렸습니다. ㅈㅅ

문제 오류 얘기

딥1에서 있었던 일을 아는 사람: ㄱ-

경위는 대회 중에 간단히 설명을 드리긴 했는데, Div.1의 K번 문제에서 리차오에 선분 집어넣는 ${\cal O}(L \lg^2 L)$ 풀이를 저격하려고 $L$ 제한을 $1\,000\,000$에서 $5\,000\,000$으로 키웠는데 그게 지문에 반영이 되지 않은 버전이 앳코더에 올라가서 그리 됐습니다. 미안합니다.

당일에 제가 딥1 진행을 맡았는데, 이슈 확인하자마자 멘탈이 갈려서 좀 멍한 상태로 있다가 일단 문제 터진 것부터 공지를 하고 운영진 분들이랑 후속 대응에 관해 논의했습니다. 그니까 이걸 출제진이 싹다 밖에 나가 있었어야 좀 편하게 했겠는데. 아쉽네요.

암튼 그래서 일차적으로 딥1 전원에게 30분의 추가 시간 부여 + 데이터 오류로 인해 정적 배열 크기 $1\,000\,000$으로 잡고 터진 분들에게 추가 보상을 공지했습니다. 이 공지를 너무 급하게 결정하고 날린 감이 있었던 거 같긴 하네요.

그러고 나서 개인별 추가 시간을 부여해야 하는지, 부여한다면 산정은 어떻게 할 것인지에 관해 좀 길게 논의했습니다. 이런저런 의견이 있었는데 결과적으로는 개인 별로 추가-추가-시간을 부여하는 후속 공지를 날리게 되었습니다. 후원사 세션 수가 기존 계획보다 좀 단축돼서 어떻게든 스케줄 상에 큰 문제 없이 전원에게 산정한 대로의 추가 시간을 부여할 수 있긴 했습니다.

다른 Div. 1 참가자 분들이 이러한 결정에 관해 어떻게 생각하셨을 지는 잘 모르겠습니다. 추가 시간 30분에서 추가로 몇 문제 더 풀고 LGTM을 외치시는 분도 계실 거고, 제가 자꾸 앞에서 머라머라 해서 집중 깨져서 싫다!! 싶은 분도 계셨을 거 같네요. 애초에 문제 오류를 안 냈거나, 대회 중에라도 코드 미리 까보고 엥 이거 이상한데요를 미리 찾았으면 없었을 문제긴 합니다. BOJ 서비스 종료 이후 좀 혼란스럽게 세팅 프로세스를 돌린 것과 출제진을 감독관으로 차출해야 했던 이슈가 겹친 결과로 생각합니다. 다시 한 번 죄송합니다.

출제 얘기

이번에는 2J/3E, 3F, 1J/2L/3J, 1F, 1G, 2K로 총 6문제 출제했습니다. 앳코더에서 문제 공개하기 전에 제목을 영어로 한 번 싹 바꿨으니 참고해 주세요.

2J/3E. DETOX

O인지 X인지 DETermine하는 문제라 DETOX입니다.

찍어서 기분 좋게 맞히라고 냈습니다. 찍고 짜다 보면 증명이 그냥 됩니다. 제 능력 안에서 저렙 문제에서 뽑아낼 수 있는 만큼의 재미는 뽑아낸 문제라고 생각해요.

3F. SQL

쉬운 문제가 좀 부족하기도 했고 해서 제목으로 드립 치려고 냈습니다. 문제 내용 자체는 이번에 제가 낸 문제 중에서는 제일 그냥저냥스러운 느낌입니다.

1J/2L/3J. 채널톡 워크플로우 (ChannelTalk Workflow)

딥123에 공통으로 들어갈 후원사 문제가 필요하다고 해서 한 두 시간만에 급조했습니다. 문제를 생성하고 한 10분 정도 쓰니까 풀리길래 이 정도면 골중이지 하고 내놨는데요.

그렇게 됐습니다.

난이도 예측이 실패했다는 점을 빼면 개인적으로 잘 냈다고 생각하는 문제입니다. 정해가 이쁨.

1F. 칩 연결하기 (Connecting Chips)

원래는 후원사 문제가 아니였고, 이에 스시가 끼면?으로 시작하는 긴 드립을 치기 위해 존재하는 문제였는데요. 후원 문제가 모자라서 눈물을 머금고 스킨을 씌웠습니다.

눈에 보이는 대로 그냥 세제곱 DP를 짜고 보면 알고 보니 제곱이였다?? 류의 문제를 의도했습니다. 그래서 그냥 P5 박아서 내놨는데 애초에 조합 체급이 높아서 플상위 포지션이 되어버린 듯.

해설 때 언급했듯이 NTT 등을 쓰면 ${\cal O}(N \lg N)$ 스케일로도 문제를 풀 수 있습니다. ACL을 쓰면 제 C++ 코드가 3ms에 돌더라고요. 원래 이 문제를 작년 가을 대회 때 쓰려고 냈었는데, 그때는 아이거 걍 온라인 FFT 딸깍하면 또 로그제곱에 풀리네 흠 까지만 전개하고 넘어갔었는데요. 이번에 다시 보니까 온라인으로 안 해도 되더라고요 ㄱ-

제곱 풀이가 그냥 이뻐서 이게 안 돌게 설정할 이유가 없다 + NTT 풀이를 강제해도 ACL이 쌀먹이라 난이도 차이가 그렇게 많이 안 남 같은 생각을 해서 subquadratic 풀이를 강제하지 않았습니다. 덕분에 그래도 대회 중에 좀 풀린 듯?

1G. 오fill

잘 냈다고 생각했는데 안 풀려서 슬픈 문제 1입니다.

파이프 퍼즐 딸깍딸깍 풀다가 대충 오? 하고 문제화 해서 냈습니다. 내고 보니까 쓸 수 있는 타일이 오 모양이라 오? 하고 제목을 바꿨습니다.

지문의 그림 배치는 @flakepowders의 제안이였습니다. 굿

2K. 찬란한 연방의 놀이터에 대해 (Cosmic Playground)

잘 냈다고 생각했는데 안 풀려서 슬픈 문제 2입니다. 딥1에 집어넣었으면 좀 풀렸을 거 같은데 딥1에 트리 문제가 너무 많다는 이유로 딥2 보스로 밀려나서 안 풀리고 말았습니다. 엉엉

후손들의 이야기 재밌음 당장 정독 ㄱㄱ

찬란한 연방 단행본을 사비로 사서 특별상으로 드려볼까 했는데 책 상태가 랜덤성이 좀 심해서 포기했습니다. 어차피 아무도 못 풀어서 상관이 없었다는 나쁜 말은 ㄴㄴㄴㄴㄴㄴ

문제 풀어다오

그래서… 대신 1G번과 2K번 업솔빙 이벤트를 엽니다. 운영진 및 검수진을 제외하고 1G번 또는 2K번 문제를 각각 AtCoder에서 해결 후 처음으로 저에게 인증해주신 분들께 각각 부거 하나씩 드립니다. ~인증은 디스코드 sorohue로 보내주세요. 문제를 처음으로 해결한 사람이 아닌 해결 후 처음으로 인증한 사람임에 유의해 주세요. 블로그를 열심히 읽어주시는 분들을 위한 이벤트라고 생각해 주시면 되겠습니다. 이벤트 마감됐습니다.

UPD: 1G번 문제 품절됐습니다. @makon님 축하드립니다. (2026/5/18 13:18)

UPD2: 2K 문제 품절됐습니다. @ibasic님 축하드립니다. (2026/5/18 14:45)

내년이든 다음 학기든 기회 되면 더 재밌는 문제로 돌아오겠습니다. 고마워요.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.