정화 코딩

SUAPC 2025 Summer 후기 본문

Contest

SUAPC 2025 Summer 후기

jungh150c 2025. 8. 31. 18:19

서론

사실 이 대회에서는 대대대 wlgh7407가 다했기 때문에 제가 후기글을 써도 될까 싶지만, 프로그래밍 대회에서 (교내 대회 제외) 첫 입상이기 때문에 오래오래 기억하고 싶어서 글을 써봅니다.
 


대회 전

5월부터 wlgh7407, g_grain, jungh150 이렇게 셋이서 UCPC 팀연습을 했었다.

 

이건 UCPC 예선 결과인데, 꽤 열심히 준비했지만 2등 차이로 정말 아쉽게 예선에서 떨어졌다.
예비 2번이었는데 최종 발표가 나올 때까지 팀원들 모두 매일매일 하루에도 몇십 번씩 메일함을 새로고침했고 최종 발표가 나온 후에는 매일매일 톡방에서 같이 울었다... 솔직히 내가 본선 진출 못 해서 아쉬워할 실력은 아니지만, 당시에 내가 보던 문제를 버리고 빨리 디버깅을 도와서 페널티를 조금만 덜 쌓았으면 가능했었을 거라는 생각에 아쉬움이 많이 남았던 것 같다.
 
암튼 너무 아쉬웠어서 셋이 나가는 대회 또 없나 하다가 SUAPC를 같이 나갈까 했는데, 안타깝게도 g_grain이 이번에 대회 운영을 맡아서 출전이 불가능한 상황이었다.
그래서 고민하다가 새로운 멤버 celina324 영입!
그리고 팀명은 루비에다가 UCPC 예선에서도 혼자서 5솔을 해주신 대대대대대 wlgh7407에게 감사의 마음을 담아 버스탑승감사합니다로 정했다.
 
wlgh7407, celina324, jungh150 이렇게 셋이서도 SUAPC 팀연습을 했는데, 좀 늦게 시작해서인지 3번 정도 하니까 대회 날이더라.
 


예비 소집

인터랙션 문제가 본 대회에서도 나온다길래 연습을 해봐야겠다고 생각했다.
A는 쉬운 문제였고, B가 인터랙션 문제였다. 일단 난 인터랙션 유형을 아예 처음 풀어봐서 입출력을 어떻게 하는지 이해하는 것부터 오래 걸렸다. 그래서 겨우 코드를 짜서 제출했는데 무려 10틀을 했고 끝까지 맞히지 못했다.
 

뭔가 구현에서 실수한 듯한데... 아직도 왜 틀렸는지 모르겠다.
대회 당일에 검수진이었던 ystaeyoon113 님을 만나서 이 문제에 대해서 얘기했는데, 내 코드를 보고 비웃었다고 하셨다. 그냥 모든 칸을 방문한 뒤 다시 돌아오면 되는 문제였다고.
 


대회 당일

대회는 오프라인으로 진행됐다.
 
솔직히 긴장될 줄 몰랐는데 생각보다 너무 긴장됐다. 그동안의 대회에서는 별로 떨렸던 적이 없었던 것 같은데, 아마 그때는 내가 PS에 별로 진심이 아니었어서 그랬던 것 같다.
 

다행히 나만 긴장한 건 아니었다.
 
대회장에 가니 익숙한 얼굴이 많이 보여서 좋았다. 대회 운영진인 g_grain, NYPC 코드배틀을 같이 했던 yeonee, jinhan814, 검수진인 ez_code, ystaeyoon113, 같이 참가자로 나온 sk091204091204, 2093ab이랑 인사했다.
 

케이터링이랑 굿즈도 받았다.
 

대회 시작 직전에 찍었다. ㅋㅋㅋ
 
jungh150가 A, B, C, D를, celina324가 E, F, G, H를, wlgh7407가 I, J, K, L, M을 보기로 했다.

A. SUAPC 의자 준비하기 AC (0:03)

브론즈 문제였다. 나름 빨리 풀었다고 생각했는데 역시나 퍼솔은 1분이었다. jungh150는 아마 6번째로 풀었던 것 같다.

D. 17마리 낙타 1WA (0:32)

jungh150는 A를 푼 뒤 B, C, D를 차례로 읽어 봤지만 대충 읽어봤을 때는 풀 수 있는 문제가 없어 보였다. 그러던 도중 12분 대에 공공면면공공 팀(sk091204091204, 2093ab, sparkjy18)이 D 퍼솔을 낸 것을 보고 D를 잡았다.
내가 풀 수 있는 문제라고 최면을 걸고 다시 읽어보니 식 정리가 술술 되었다. 근데 그러면서도 이렇게 푸는 거 맞나? 진짜 맞다고?? 하는 의심도 계속 들었던 것 같다.
그렇게 의심을 품고 제출을 했는데, 역시나 틀렸습니다를 받았다. 역시 이렇게 푸는 게 아니구나 하고 슬퍼하면서 프린트 요청을 하고 컴퓨터는 wlgh7407에게 넘겨주었다.

K. 숫자 놀이 AC (0:37)

wlgh7407가 컴퓨터를 잡은 지 5분 만에 K를 풀어버렸다. 개고수라고 생각했는데 대 wlgh7407는 퍼솔 못 한 걸 아쉽게 생각하시더라. 아쉬울 법도 한 게 우리팀이 두 번째로 푼 팀이었고 그다음이 60분대였음. 대지호 ㄷ.ㄷ

D. 17마리 낙타 AC (0:41)

wlgh7407에게 컴을 넘겨주고 프린트 요청한 종이를 받자마자 실수한 부분을 찾았다. k가 음수인 경우와 (n + k)가 각각 a, b, c로 나누어떨어지지 않는 경우를 생각하지 못했던 것이다. wlgh7407가 K를 풀고 다시 컴을 넘겨줘서 jungh150가 바로 그 부분만 수정해서 제출했더니 AC를 받았다. 어이없게 페널티를 쌓은 건 아쉬웠지만, 그래도 틀린 부분을 그나마 빨리 찾아서 다행이라고 생각했다. 
이 문제를 풀면서 우리 팀은 3등으로 올라갔다. 이때 도파민이 진짜 미쳤었다. ㅋㅋㅋㅋ

E. 솹씨 몇 도예요? 4WA AC (1:45)

D까지 풀고 정신을 차려보니 E 솔브가 꽤 나있는 상태였어서 E를 빨리 풀어야겠다고 생각했다. celina324가 잘 정리해서 설명해 줘서 빨리 이해할 수 있었다. celina324가 자신의 풀이를 설명한 뒤 이게 맞는 풀이인 것 같은지 같이 생각해달라고 하고, 컴퓨터를 잡고 구현을 시작했다. 대충 이분 탐색을 하다가 마지막에 후보가 3-4개 남은 상태에서 케이스를 나눠서 잘 처리해 주는 풀이였던 것 같다.
그러다가 잠깐 celina324가 화장실을 간 사이에 wlgh7407가 컴을 잡았다. ㅋㅋ
wlgh7407가 이거 이분 탐색 필요 없이 그냥 온도가 1013보다 큰지 작은지만 나눠서 각 구간의 가운데 온도인 506, 1520으로 계속 쏴서 대충 그 언저리로 맞춰준 다음에 celina324가 설명해 준 대로 마지막 처리만 해주면 되지 않냐고 했다. jungh150는 그 설명을 듣고 "천잰가?" 하고 "ㅋㅋ 맞는 것 같음 ㄱㄱ 짜셈" 했다.
E는 wlgh7407에게 맡기고 celina324jungh150는 그다음으로 솔브가 많이 나있던 G를 보기로 했다. 우리가 G를 보는 동안 wlgh7407는 E 맞왜틀로 괴로워하고 있었다. UCPC 예선을 통해 '나대지 말자. 내가 문제를 풀 수 있을 거라고 생각하지 말고 대지호의 디버깅을 돕자.'라는 교훈을 얻었기 때문에 G를 그만 보고 E를 돕기로 했다. 그래서 프린트 요청을 하고 jungh150도 이제 코드를 읽어보려는데... wlgh7407가 아 이거 때문이네 일케 하면 되네 하면서 맞혀버렸다.

G. 두 수열 만들기 3WA AC (2:29)

wlgh7407가 E를 푸는 동안 celina324 jungh150 G에 대한 풀이를 대충 생각해뒀어서 celina324가 컴퓨터를 잡고 구현을 시작했다.
그동안에 jungh150wlgh7407에게 G 문제를 설명해 주고 지금까지 정리한 내용을 간단히 설명해 주었다. 대충 모든 쌍에 대해서 xor 해보고 0...010...0 형태면 둘은 무조건 같은 그룹에 있어야 한다는... 지금 생각해 보면 그냥 너무나 단순한... 정리였다. 그래서 사실 그 뒤에는 정확히 어떻게 구현해야 할지 감이 안 잡혔는데, wlgh7407가 그러면 다 구해두고 냅색하면 되겠는데? 하고 바로 풀어버렸다.
이때쯤부터는 한 문제 풀 때마다 얼굴이 빨개져서 은채가 괜찮냐고 물어봐 줬다. ㅋㅋㅋㅋ

F. Tri-Tree XOR 1WA (2:39)

G까지 풀고 나니 F와 I가 그나마 솔브가 많이 나있어서 그 두 문제를 나눠서 보기로 했다. wlgh7407가 자기가 I를 좀 보다 말았는데 게임 이론이라서 님이 잘하니까 함 봐보셈 ㅇㅇ 했다. 그래서 wlgh7407 F를 보고 celina324 jungh150가 I를 보기로 했다.

I. 돌 뒤집기 게임 AC (3:02)

wlgh7407가 F와 싸우는 동안 I를 열심히 째려봤다. 규칙에 따라서 앞면을 보이는 돌을 뒤집을 수 있고, 뒤집을 돌이 없으면 패배하는 게임이었다. jungh150가 H(앞면)의 개수가 1일 때, 2일 때, 3일 때, ...를 차례로 보는 삽질을 할 동안 (물론 그 과정에서 알게 된 것들이 이후 풀이에 도움이 되긴 했다.) celina324는 연속된 H의 그룹으로 나눠 경우를 따져 봤다. 둘의 풀이를 공유해서 적당히 합치니 뭔가 될듯 말듯 알듯 말듯 했다. 이때쯤 머리가 아파와서 케이터링을 좀 주워 먹었다.
wlgh7407가 F가 빡셌는지 다른 걸 먼저 푸는 게 나을 것 같다고 해서 I 관련해서 지금까지 나온 아이디어들을 공유해 주었다. 근데 정말 신기하게도 둘이 얘기할 때는 잘 모르겠다가, 그렇게 wlgh7407에게 설명해 주고 얘기를 하는 과정에서 뭔가 정리가 되는 느낌이 들었다.
그래서 jungh150는 아래와 같이 정리해 봤다.
1. 일단 H가 2개 연속인 그룹은 H가 하나인 것과 동일하다. (할 수 있는 행동이 H가 한 개씩만 있을 때와 동일함)
2. H를 전부 1개 혹은 2개 연속이 되도록 쪼개고 나면, H의 총 개수만으로 승패를 가릴 수 있다. (정확히는 총 개수의 홀짝성만으로 판단할 수 있음)
3. H가 5개 이상으로 연속하면 상대에게 전부 다 1개/2개로 잘라서 넘겨줄 수 있고, 심지어 H의 총 개수의 홀/짝도 원하는 대로 조절해서 줄 수 있다.
여기까지 정리하고 나서 든 생각이 "아 잠만 그럼 5개 이상으로 연속인 건 생각할 필요가 없고, 4개 연속인 게 좀 문제네. 4개 연속은 그걸 잘라서 주고 싶으면 무조건 2개를 사용해야 하고, 1개만 사용하고 싶은 상황에서는 상대에게 3개 연속을 넘겨줄 수밖에 없으니까. 그것만 처리해 주면 되겠는데?" 였다. 이 jungh150의 말을 옆에서 듣더니 wlgh7407가 "천잰데?" 하더니 몇 분 만에 타닥타닥 구현하더니 맞혀버렸다. 아직도 어케 했는지 모르겠다.
celina324 jungh150가 벙쪄서 ??? 아니 님 어케 함??? 했더니 그냥 내가 한 말대로 했더니 됐다고 했다. 그걸 보고 진짜 벽 느껴졌다. 왜냐하면 내가 낸 아이디어는 정말 일부에 불과하고, 그것 외에 처리해 줄 게 꽤 많을 것 같았기 때문이다. 그런데도 대대대 wlgh7407는 또 겸손하게 나보고 아이디어를 잘 냈다며, 그걸 그대로 했더니 맞았다며, 내 칭찬을 엄청 해줘서 ㄹㅇ 난 행복사 할 뻔했다.
암튼 이 I 문제를 풀어낸 게 이 대회에서 가장 짜릿한 순간이었던 것 같다. celina324의 H를 그룹화해서 보고 큰 그룹들은 전부 1개로 쪼개는 아이디어, jungh150의 4개 연속만 잘 처리하면 된다는 아이디어, 그리고 그 둘의 대화를 들으면서 한  wlgh7407의 깔끔한 구현, 이 세 가지가 전부 빛났던 솔브였기 때문이다.

M. 물고기와 쿼리 AC (3:54)

아까 wlgh7407가 풀던 F를 다 같이 같이 봤다. 좀 보다가 아무래도 M이 더 쉬워 보여서 M으로 갈아탔다.
M도 전에 celina324가 보면서 정리해둔 내용이 있었기 때문에 그 설명을 같이 들었다. celina324가 연속으로 달라질 때 +1 해주고 3인 경우가 물고기가 되는 경우니까 3의 개수만 세면 된다는 아주 천재적인 아이디어를 알려줬다. (지난 SUAPC 때부터 느낀 건데 celina324는 어떤 상황을 단순한 형태로 치환하는 아이디어를 정말 잘 내는 것 같다. 이런 게 재능일까?)
근데 문제는 뒤집는 게 너무 오래 걸릴 것 같아서 그게 고민이라고 하니까 wlgh7407가 걍 레이지 쓰면 되겠는데? 해서 또 컴퓨터를 가져가더니 또 또 몇 분 만에 맞혀버렸다. celina324 jungh150AC를 보고 대지호 숭배를 하면서 소리 질렀던 것 같음. ㅋㅋ
대회 끝나고 사람들이랑 얘기해 보니 이 문제 정해가 레이지가 아니었고 골드 문제였다고 한다. 근데 더 웃긴 건 레이지로 풀지 않은 팀이 없었다는 거다. ㅋㅋㅋㅋ 아마 퍼솔이 좀 늦게 나와서 다들 어렵게 생각한 게 아닌가 싶다. 이 문제 출제자분께서 의도적으로 레이지로도 AC 받을 수 있도록 했다고 하셨는데 정말 다행이라고 생각했다.
 
이 이후에는 F 하나만 더 풀면 너무 좋겠다고 생각하며 다 같이 머리를 모아서 F를 고민해 봤다. 셋 다 각자 종이에 트리만 몇십 개 그린 것 같다. 근데 결국은 못 풀었다. 좀만 더 시간이 있어서 좀만 더 생각했으면 풀었을 수도 있었을 텐데 약간 아쉬웠다.
 

트리 지옥...
 


대회 후

프리즈 전 5솔! 퍼솔 풍선이 예쁘던데 우리팀은 퍼솔이 없었어서 아쉬웠다.
 

끝나고 나니 긴장이 확 풀리는 느낌이었다. 그제서야 배고픈 게 느껴져서 기업 세션 때 몰래 샌드위치를 먹었다. wlgh7407가 자기 계속 심박수가 100이 넘어있었다고 해서 ㅋㅋㅋㅋ에바다 그 정도라고? 했는데 나도 확인해 보니 100 넘어있었음;;; 그리고 wlgh7407는 우리 수상시켜야 한다는 생각 때문에 긴장했었다고... 감동스 ㅜ.ㅜ
 

슼보 까기 전에 각자 우리팀이 몇 등할 것 같은지 예상해 보기로 했다. wlgh7407는 7등, celina324는 8등으로 예상했다. 나도 솔직히 7등 아니면 8등 할 것 같았지만 그냥 내 염원과 희망 사항을 담아 6등으로 예상해보기로 했다. 사실 나에게는 동상도 너무 높고 과분해서 입상만 해도 행복할 것 같다고 생각했다.
cf. 1등이 대상, 2-3등이 금상, 4-6등이 은상, 7-10등이 동상이다.
 


결과

결과는 5등!!!! 와!!!!!!
진짜 말도 안 돼서 현장에서 소리를 질렀던 것 같다. 6등으로 예상하는 것도 너무 높게 예상한 거라고 생각했는데, 7솔 중에 가장 페널티를 적게 쌓아서 5등으로 마무리할 수 있었다. 솔직히 아직도 은상을 받았다는 게 안 믿기고 그냥 은상 받게 해준 대지호랑 대은채에게 너무 감사한 마음이다. 
슼보도 프리즈 이후 솔브가 엄청 많아서 보는 게 엄청 재미있었다. 역시 대 plast 님이 계신 저녁 뭐 먹지 팀이 1등 했고 공공면면공공 팀이 3등 했다.
 

우왕~~ 사이좋게 나눠가졌는데... 은채는 버렸다고 한다...
 

이대생끼리도 찍었다 후후 이대 대회 꼭 열자


소감

너무너무 재밌었다. 대면 대회가 이렇게 재밌는 줄 알았더라면 좀 저학년부터 시작할걸 그랬다. 이제 참가할 수 있는 대회가 몇 개 안 남은 게 너무 슬프다.
 
wlgh7407celina324에게 흔쾌히 같이 팀 해줘서, 둘 다 바쁜데도 시간 내서 팀연습도 같이 해줘서, 그리고 은상 탈 수 있게 해줘서 너무 감사한 마음이다. 특히 wlgh7407 아니었으면 내가 또 언제 입상을 해보겠나 싶어서 감사하고... 대 wlgh7407는 실력이 너무 웅장해서 누구랑 팀을 해도 입상이었을 텐데 우리랑 해줘서 또 너무 감사하다.
 
그리고 대회 개최해주시느라 너무 고생하신 캠프장님들, 운영진분들, 좋은 문제 만들어주신 출제진분들, 검수진분들 너무 감사합니다. 덕분에 너무 좋은 경험 쌓을 수 있었습니다.
 

결론은 지능과 겸손을 겸비한 대대대대대 wlgh7407를 숭배하자.
후기 끝.
 
후기글 쓰는 것도 재밌네용
 

Comments