-
2026 RUN Spring Contest 후기PS하는 abra/후기 2026. 5. 7. 04:43
2026년 5월 3일 RUN 봄대회가 있었다.
핸들을 마음대로 정할 수 있어서 고민하다가 '@오태인 졸업 축하해'로 참가하기로 했다.
이유는 오태인(octane)이 원래 저번 학기에 졸업할 예정이었는데 F 받고 1학점이 부족해서 졸업을 못 했었기 때문이다.
최대한 많이 놀리기 위해 스코어보드를 깔 때 이름이 최대한 많이 불리도록 해야겠다는 생각이 들었고, 그래서 모든 제출을 프리즈 이후에 하기로 마음먹었다.
일부러 오태인한테 내 핸들도 안 알려줬었는데, 런방에서 굴러다니다가 운영진이 스포일러해버려서 약간 슬펐다.
PS는 Goodbye BOJ 이후로 정말 처음 하는 거였다. Goodbye BOJ도 APAC 이후 처음이었으니 정말 오랜만의 PS였다.
대회가 시작하고, A번을 깠는데 좀 당황스러웠다.
그리디하게 풀리는데, 좀 자신이 없어서 일단 미뤘다.
슼보를 보니까 A랑 함께 D가 풀리고 있길래 D를 보러 갔다.
D는 아주 자명한 이분탐색+그리디 문제길래 구현을 시작했다.
결정문제로 바꾸어서, x개가 정답이라고 하면 앞에서부터 x개의 병을 뽑아서 필요한 화력순으로 정렬하고, 큰 것부터 보면서 해당 화력 이상의 불 마법 중 가중치가 가장 큰 것을 고르면 된다. 이때 각 불 마법은 최대 한 번 사용 가능하므로, 사용 가능한 불 마법을 priority_queue에 넣고, 가중치가 가장 큰 것을 뽑는 연산을 반복함으로써 편하게 관리할 수 있다.
까먹고 타임라인을 안 적어와서 언제 다 짰는지 기억은 안 나는데 아무튼 큰 걸림 없이 구현을 끝냈다.
B도 풀리고 있길래 보러 갔다.
문제를 보자마자 FFT를 써야될지도 모르겠다는 생각이 들어 일단 팀노트에 FFT가 있는지 확인했다. 있어서 안심하고 문제를 풀기 시작했다.
피보나치 수열을 이용한 문제였는데, 내가 수학을 잘 못해서 쫄렸지만 뭔가 종이에 열심히 끼적이다보니 규칙을 찾을 수 있었다.
$a_1 = i$, $a_2 = j$인 수열의 $a_n$을 $b_{i, j}$라고 하자.
$f_1 = 0, f_2 = 1, f_n = f_{n-1} + f_{n-2} (n \ge 3)$이라고 하고, $U$를 $f_{n-1}$로 나눈 몫과 나머지를 각각 $Q$와 $r$이라고 하자.
$1 \le i \le R, 1 \le j \le R$에 대해서 $b_{i, j} + f_{n-1} = b_{i + 1, j}$, $b_{i, j} + f_n = b_{i, j + 1}$이라는 것을 알 수 있다.
R*U개의 b 값들 중에 중복된 것들을 빼주면 문제에서 구하는 값을 알 수 있다.
모든 $n \ge 3$에 대해 $f_n$과 $f_{n-1}$은 서로소이기 때문에 $b_{i, j} = b_{i-f_n, j+f_{n-1}}$이라는 것을 알 수 있다.
반복되는 부분의 처리를 위해 $b$를 $R$ * $f_{n-1}$짜리 블럭으로 나누어서 생각해봤다.
$R \ge f_n$이고, j를 $f_{n-1}$로 나눈 나머지가 같은 $b_{i, j}$를 모아서 나열했을 때, 중복을 제거하면 값이 $f_{n-1}$씩 커진다는 점을 볼 수 있다.
따라서 최솟값과 최댓값을 알면, 서로 다른 값의 개수를 구할 수 있다.
식을 정리하면 총 개수는 $((R - 1) + f_n * (Q - 1) + 1) * f_{n - 1} + f_n * r$이 된다.
$R < f_n$이라면 중복되는 것이 없으므로 R*U를 출력하면 된다.
개수를 세는 식을 정리할 때 1 차이가 계속 헷갈려서 시간이 좀 걸렸다. 당연하지만 구현은 매우 빨리 끝났다.
식에서 헷갈렸던 부분이 많아 틀릴 가능성이 높다고 생각했지만, 제출을 참았다.
A부터 E까지가 모두 풀리고 있었다. 그래서 C와 E를 읽었다.
C는 좀 생각해보니 세제곱 DP만 생각이 나서 부분점수를 긁을 수 있다는 생각을 하고 넘어갔다.
사실 대회가 끝나고 다시 생각해보니 제곱이었다. 어쩐지 n이 안 떼지더라..
E를 읽어보니 익숙한 맛이라서 쉽게 풀었다.
결정문제로 답이 x라고 생각하고, x가 몇번째 수인지를 세어보면 이분탐색이 가능해진다.
이를 위해 이진법으로 모든 수를 바꾸어서 생각한 다음, 가장 앞 비트부터 그 비트가 0일지 1일지를 결정하는 방식으로 풀었다.
i번째 비트의 값을 알기 위해 앞쪽 i-1개의 비트까지는 이미 답을 알고, i번째 비트를 0으로 한 것이 답이라고 가정한다.
이렇게 만들어진 답이 몇 번째 값인지 알기 위해서 이보다 작거나 같은 것의 개수를 센다.
하지만 i번째 비트 뒤쪽은 일단 신경을 안 쓸 거기 때문에 정확히는 i번째 비트를 0으로 했을 때의 값이 몇 번째부터 몇 번째까지 가능한지 범위를 구한다고 생각하면 된다.
답이 몇 번째 수인지를 구하기 위해, 모든 수를 i번째 비트까지만 남긴 뒤에 각 수에 대해서 xor 한 값이 답과 같아지도록 만드는 자신의 짝의 개수를 세 준다.
나는 map을 이용해서 카운트해줬다.
만약 우리가 설정했던 답이 k번째 수가 될 수 없다면 i번째 비트는 1이어야 하며, 답보다 작은 수의 개수를 관리하기 위해 방금 구한 값을 누적해준다.
이를 반복해서 마지막 비트까지 결정하면 정말로 올바른 답이 된다.
E를 구현했는데 버그가 있어서 디버깅을 하는 동안 스코어보드가 프리즈되었다.
미리 구현했던 D와 B를 제출했다. D는 당연히 맞을 거라고 생각했고, B는 틀릴 수도 있다고 생각했는데 결과가 반대였다.
D를 디버깅하기 시작했다. 실수로 변수 이름을 잘못 쓴 부분이 있어서 한 글자 고치고 제출해서 맞았다.
E를 다시 디버깅하기 시작했는데, E도 변수 이름을 잘못 썼다는 것을 발견했다. 그래서 이것도 고치니까 맞았다.
이로써 10분동안 300점을 올렸다.
C를 좀 더 생각해봤지만 DP는 여전히 세제곱이었다.
A를 구현해야겠다는 생각이 들어서 그리디한 방법으로 구현해줬다.
제출하니까 잘 돌아서 안심했다.
대회 종료가 약 20분 남은 시점이었다.
부분점수는 긁기 귀찮았다.
부분점수가 중요하다는 것은 알고 있지만, 그렇게까지 열심히 할 마음이 나지 않았다.
사실 원래 목표인 '오태인의 졸업을 최대한 많이 축하하기'를 하려면 모든 문제에서 부분점수를 긁는 게 중요하겠지만 문득 대회가 biko에서 진행되면서 슼보 오픈을 '최종 슼보를 그냥 보여주기'로 할 수도 있겠다는 생각이 들었다. 슼보에 프리즈 기능조차 없는 것 같았기 때문에..
사실 프리즈가 있었는지도 잘 기억이 안 나서 대회 시작 후 50분쯤 지났을 때 질문을 보내기도 했었다. 다행히 기존대로 1시간 프리즈가 있대서 안심했었는데 슼보를 어떻게 깔지는 생각하지 못했었다.
부분점수를 긁어도 딱히 바뀌는 게 없을 것 같아서 C를 좀 짜다가 던지고 나머지 문제를 읽어보기나 하기로 했다. 문제 공개가 안될지도 모른다는 생각이 들었기 때문이었지만, 결과적으로는 오히려 백준에서 할 때보다 빨리 공개되었다.
대회가 종료되고 바로 오태인을 놀리러 갔다.
갔더니 E 만점을 못 받았길래 정말로 놀리고 왔다.
대신 C는 맞았던데, 역시 팀에는 이유가 있다.
모든 제출을 프리즈 이후에 했기 때문에 특별상이라도 받을 수 있을까 싶었는데 정말로 받았다.
A번 문제의 제목이 Second Run이었는데, 내가 마지막에서 두번째로 AC를 받은 사람이라서 특별상(넙죽이)을 받았다.
2년 전 대회 때 특별상으로 넙죽이를 준비하면서 갖고 싶었었는데, 드디어 나도 넙죽이가 생겼다!
작년에 학원에서 가르쳤던 애도 참가했던데 나보다 더 높은 점수를 받아서 기특했다.
특별상 중 추첨 코드를 돌려야되는 상이 있었는데, 코드를 화면에 띄우려는 과정에서 시간이 좀 소요됐었다. 그걸 보고 PTSD가 왔다. 2년 전에도 특별상을 위해 추첨 코드를 준비하다가 결국 대회가 끝나고 공지하게 됐었다. 그때 전 회장이었던 SongC가 사람들 기다리게 하고 뭐하는 거냐고 혼냈었던 기억이 있다. 으에
대회가 끝나고 알게 된 사실인데, 운영에서 몇가지 마찰이 있었던 것 같다.
솔브드 서버에서도 말이 있었던 모양인데, 나는 솔브드 서버에 없어서 좀 나중에 알게 되었다.
말을 최대한 아끼려고 했으나, N의 해명글에 RUN의 운영에 대한 이야기가 있어 이 부분은 얘기해보려고 한다.
N의 해명글은 RUN의 2024년부터 지금까지의 운영 상태에 대해 언급한다. 의도인지는 알 수 없으나 관계자 외에는 알아차릴 수 없을 정도로 시간대를 교묘하게 감추며 운영을 비판하고 있다.
'RUN의 운영 자체가 위태롭게 굴러가고 있다는 느낌을 받았다', '한 사람이 맡은 일을 제대로 처리하지 않았을 때 그 부담이 조용히 다른 운영진에게 넘어간다는 점' 등의 발언은 충분히 공감 가능하나, 이 문제는 2025년 임원진 중 한 명의 일만을 가리킨다. 자칫 2024년부터, 혹은 그 이전부터 계속되어온 문제처럼 읽힐 수 있게 작성되었으나, 2024년에 회장을 했고, 그 이후에도 RUN의 운영에 관심을 갖고 있었던 입장으로서 분명히 말할 수 있다.
2024년에 N을 포함한 모든 임원진이 잘못을 했던 것은 사실이다. 하지만 그 일이 다른 임원진에게 넘어간 적은 없었고, 모두가 책임을 다했다.
2025년에는 한 임원진이 문제를 일으켰던 바 있다. (물론 다른 임원진은 전혀 잘못을 안했다는 뜻은 아니다. 다른 임원진도 잘못한 적은 있었으나 그에 대한 책임을 떠넘기거나 한 적은 없다.) 그 한 임원진의 행동으로 인해 결국 당시 임원진조차 아니었던 사람들마저 투입해 일처리를 하게 되었었다. 그렇게 대신 일처리를 해준 사람들이 2026년의 임원진이다.
N은 RUN의 운영 문제가 한 사람만의 문제가 아니라는 듯이 말한다. 운영이 좀 더 체계적이라면 이러한 문제가 일어나지 않았을 것이라고 말할 수는 있다. 하지만 N의 말은 현 임원진이 잘못을 했다는 마냥 믿을 수 없다고 주장하고 있다. 현 임원진은 N이 말하는 불안의 원흉의 피해자이자 뒷수습까지 해준 이들이다. 케이블을 챙겨오는 것을 깜빡한 게 그렇게 큰 잘못이라고 이들에게 '후배놈들 못 믿겠다', '운영진들 일 못하네' 등의 발언을 했어야 할까.
N은 자신이 잘못한 것이 오직 말을 거칠게 한 것 뿐이라고 생각하는 것 같다. N의 잘못은 자신이 오프라인 대회 운영의 총괄을 맡겠다고 했으면서 행동은 그렇지 않았으며, 책임조차 다른 사람에게로 돌린 것이라고 생각한다. 역시 의도인지는 모르겠지만 N은 RUN의 운영을 운운하며 초점을 흐리고 있으며, 자신의 잘못을 그저 감정적으로 일어난 일이라고 설명하고 있다.
RUN 운영에 대해 말해보자. N의 말처럼 시스템적 문제가 있을까?
나는 23년부터 재학하였기 때문에 23년부터 올해까지의 RUN밖에 모르지만, N이 말하는 다른 사람에게 부담이 넘어가는 위태로운 운영상태란 25년의 딱 그 한 번밖에 없었다고 생각한다. N 역시 23학번이기에 그보다 더 이전에 있었던 일을 염두에 두고 있다고 생각하기는 어렵다.
'특정 개인의 선의나 기억에 의존하는 방식으로 운영이 이어지면'이라고 하는데, RUN 임원진들이 접근할 수 있는 드라이브에는 매우 많은 내용이 기록되어있다. 무슨 일을 어떻게 해야하는지, 메일이나 기획서는 어떻게 썼는지, 활동보고서나 동아리연합회 회의 등의 KAIST 동아리로서 해야하는 일도 빠짐없이 기록되어 있다. 이를 위한 인수인계 문서 또한 존재한다. 대체 어디가 특정 개인의 기억에 의존하고 있는가? 드라이브 업데이트 및 공유를 미뤘던 일이 있었으나, 각각 24년, 25년 총무였던 N과 '그 임원진'이 저지른 잘못이었다. 올바르게 기록을 남겼던 다른 수많은 임원진들의 행동이 그저 개인의 선의라고 생각하는 것인가? 임원진으로서 당연히 가져야 할 책임감마저 선의로 돌린다면 시스템을 대체 어떻게 바꿔야 된다는 것일까.
임원진의 일은 너무나도 많고, 사람이기 때문에 당연히 잘못을 저지를 수 있다. 그 잘못을 발견하고 관리하는 것이 회장의 업무 중 하나다. 그렇기에 24년과 25년 모두 회장이 (심지어는 다른 임원진들까지) 그들을 수도 없이 멘션하며 공유를 부탁했다. 공유에 응하지 않은 것은 본인들이면서 '운영진 내부에서 명확하게 공유되어야 한다'라며 변화를 요하는 듯한 말은 대체 무엇인가.
RUN의 신뢰도를 제멋대로 떨어뜨리는 모습에 화가 나 글이 길어졌다. RUN에 애착이 깊기에 그저 안타까울 따름이다.
'PS하는 abra > 후기' 카테고리의 다른 글
2026 UCPC & 전대프연 세미나 운영 후기 (0) 2026.07.16 2025 전대프연 세미나 후기 (0) 2025.09.12 2023 UCPC 예선 후기 (1) 2023.07.05 2022 LG CNS Code Monster 예선 후기 (0) 2022.11.13 2022 이화여대 전국 여고생 프로그래밍 경진대회 후기 (2) 2022.09.21