2022 Winter SUAPC 후기
왜 `지금` 후기를 쓰느냐.. 에 대한 말씀에는 할 말이 없지만 미루고 미루다가 쓰는 후기입니다.
사실 ICPC Sinchon 블로그 이벤트 후기 선정을 위해 읽어봐야 해서 읽다가
같이 팀을 나갔던 2명이 다 후기를 썼길래 `질 수 없지` 하고 쓰는 후기이기도 합니다. 하하
이번 주부터는 시간이 좀 많을 것 같아서 기쁘네요 세상 행복해라

SUAPC는 2번째 참여하는 대회였다.
작년 여름에 지은언니랑 고민재 님이랑 첫 대회를 나갔었고 개인적으로 한 문제도 못 풀었다는 아쉬움에 다음 대회에서는
스스로에게 떳떳한 결과물을 가져오자는 것이 대회 참여의 목표였다.
어쩌다 보니 인연이 닿아서 danhan과 uwoobeat와 친해지게 되었는데 좀 똘똘해 보여서 같이 대회를 나가자고 제안했다.
장난이고 PS에 그나마 관심이 있어 보여서 나가자고 했다.
제안하니까 uwoobeat는 군대 가야 해서 못 할 수도 있다는 미적지근한 반응이었고 danhan은 좋다고 같이 신나 해줬다.
danhan 짱
어쨌든 그렇게 셋이서 팀을 이뤘고 어쩌다 보니 uwoobeat님의 군대 일정은 올해 겨울 정도로 미뤄졌다.
그래서 겨울방학동안 이 SUAPC 대회를 주제로 잡고 자기 주도 학습동아리를 진행했고
나름 팀 연습도 여러 차례 해보면서 대회를 준비하였다. 연습하고 맛있는 밥 먹으려고 만난 것 같다는 의견도 어느 정도 맞는 듯
아니 그래서 대회 후기를 써보려 한다.
/*사실 문제 이야기는 한 문제밖에 안 나옴 주의*/
우선 대회 시작 시간은 2월 26일 12시였는데 12시부터 스터디룸을 들어가기에는 시간이 좀 힘들다는 생각으로 우리는 11시부터 스터디룸 예약을 해놓았다.
그리고 나는 당연히 12시까지만 가면 된다는 생각으로 10시 40분 정도에 집을 나서고 지하철을 탔다.
그리고 SUAPC 톡방에 다들 언제까지 오냐고 물어봤다.
"정시"
라는 대답에 `그렇지 당연히 12시 정시지..`라고 생각을 했는데 갑자기 불안감에 휩싸였다.
그래서 의문을 해소하기 위해 한 번 더 물어봤다. 혹시 정시가 언제냐고 물어봤는데 11시란다.
망했다
그렇지.. 당연히 대회 시작을 급하게 할 수 없으니까 먼저 가있어야 하는 게 맞는데 왜 난 10시 40분에 출발했던 것인가..?
어쨌거나 일단 도착은 하고 보자 라는 생각에 열심히 뛰어갔다. 뛰어가는 척이 아니라 정말 뛰어갔다.

도착하니까 11시 54분..? 이어서 얼른 노트북 세팅을 하는데 대환장 파티였다.
노트북 비밀번호를 한번도 틀린 적이 없었는데 아무리 올바른 비밀번호를 입력해도 틀렸다고 뜨는 것이다.
나중에 알고보니까 caps lock 키 버튼 고장 나서 그랬던 것이다. 그냥 컴퓨터를 껐다가 켜니까 해결되었다.
어쨌든 나는 그렇게 대회를 5분 정도 늦참해 버렸다. 팀원들께 죄송합니다.
몇 번 말한 적이 있는 것 같은데 나는 독해력이 안 좋다. (그래서 수능 국어도 개판으로 친 듯)
그렇기에 문제 하나 읽는데 굉장히 많은 시간이 소요가 된다.
팀 연습을 할때도 danhan과 uwoobeat는 문제 여러 개를 읽고 문어발처럼 왔다 갔다 하면서 이거 풀다가 저거 풀다가
`이거 완성` , `저거 완성`
이런 식으로 활약을 했는데 나는 그냥 1~2문제 읽고 푸는 것도 어렵다. 물론 난이도가 쉬운 문제라면 다르겠지만.
그래서 앞에서 부터 문제를 읽어 내려가는 danhan과 겹치지 않기 위해서 뒤에서부터 문제를 읽어봤는데 뒤에서 2번째 문제였던 L번을 읽다가 `펠린드롬`이라는 개념은 좀 쉽겠는데? 하고 덤볐다.
이 문제에서 가장 어려웠던 부분은 상윤이와 승우 모두 1000판의 게임을 해온 고수들이라 항상 최선의 수만을 둔다는 점이었다.
`항상 최선의 수`
어느 정도 앞까지 내다보아야 최선의 수라고 할 수 있는 것일까..라는 포인트가 이해하기 어려웠다.
이때 마치 베스킨라빈스 31이라는 게임이 떠올랐다.
이 게임을 그냥 운빨게임으로 생각하는 사람도 많았고 그중 나도 하나였는데 정말 옛날에 이 게임을 무조건 이기는 공략이 있었던 것 같다.
그 생각이 들어 구글에 얼른 서칭을 해봤다. 검색어는 `배스킨라빈스 31 알고리즘 `
찾아보니 스프라그-그런디 정리 라는 것이 나오긴 하더라.
근데 이걸 이해하고 적용시켜볼 그런 자신감은 없었다.
이 3장의 페이지를 쓰다 보니까 기대했던 난이도보다 훨씬 어려워 보였다.
그래서 머리 환기를 위해 스코어보드를 한번 휙 둘러봤는데
10? 분도 안 지났는데 이 문제를 맞힌 팀이 나왔던 것 같다. 그래서 굉장히 혼란스러웠다.
나 같은 뉴비들은 잘 모르는 웰-노운 문제인가 싶기도 했다.
어쨌거나 이 문제를 혼자 낑낑대다가 포-기 를 선언했다.
어떤 문제를 건드려야 할지 감도 안 잡혔다.
A번을 다수의 사람들이 풀었길래 나도.. 해볼 수 있지 않을까?라는 생각에 문제 읽기를 시작했다.
`포레스트`, `양방향 그래프`.. 용어가 어려워서 집중력이 바닥을 쳤다. 음. 패스.
이제서야 말을 하지만 내가 danhan이랑 같이 uwoobeat랑 스터디룸에서 대회를 진행하자고 졸라서 얻어낸 오프라인 대회 진행이었는데 여러 번 후회를 했다.
팀 연습을 4차례 정도 했는데 4차례 모두에서 느꼈던 것이 굳이 모여서 문제를 푸는 것이 어떤 이득이 있을까 라는 생각이다.
danhan이랑 uwoobeat는 같은 문제를 가지고 토론을 하고 방법을 공유하고 반례를 찾으면서 문제를 풀길래 의미가 있어 보였다.
하지만 팀 연습 때 내가 팀원들과 함께 문제를 해결한 적이 없었다. 약간 팀 활동 사이에 피어난 개인플레이 느낌이었다.
danhan과 uwoobeat는 완벽한 팀플레이를 보여줬는데 나는 음 뭐랄까 깍두기 같은 느낌이었다.
팀 연습때만 해도 둘이 같은 문제에 대해 대화하는데 옆에서 나는 다른 문제를 풀고 있어서 `조용한 곳으로 자리를 옮겨도 될까?`라는 말을 속으로 10번 정도 한 것 같은데 이러면 팀 활동에 마이너스가 될 것 같아서 꾹 참았다.
거기다가 나는 누가 떠드는 곳에서 문제를 못 푼다.
고3 때나 재수할 때나 시험기간에는 공부에 집중하려면 내 귀에는 에어팟이나 귀마개를 항상 끼고 있었다. 소음이 있으면 집중력이 낮아지고 대화 소리를 들으면 집중을 전혀 못한다. 그런데 옆에서 danhan과 uwoobeat가 올바른 괄호 문제에 대한 방법을 토론하고 있었는데 나 혼자 집중력 제로인 상태로 이 문제 저 문제 왔다 갔다 했다.
팀원들에게 말 안한 비밀이 있는데
아 이날은 스터디룸 근처에서 정말 요란하게 공사를 하더라. 그런데 스터디룸 후기에서 창문 있는 방이 더 좋다는 후기를 보고 일부러 예약할 때 창문 있는 방을 부탁했던 것이었다.
그래서 우리는 낑낑 깡깡 되는 공사 현장 바로 옆에서 대회에 참여했던 것이었고,
그 극한의 환경 사실 나로 인해 비롯된 것이었다. 대단했다. 아 다시 한번 죄송합니다.
그렇게 집중력 0인 나와 토론하는 둘 사이에서 둘이서 함께 고민했던 올바른 괄호 문제를 danhan이 AC 했다길래 박수를 쳐줬다. danhan은 정말 최고다.
uwoobeat가 펠린드롬 문제를 다시 보자길래 같이 합류했다. 셋이서 이 문제를 함께 고민했다.
(팀 연습 통틀어서 이런 적은 처음이었다.)
이 문제를 해결하는데 1부터 30까지 수의 경우를 모조리 생각해보기로 했다.
정말 규칙찾기 문제가 거지 같은 이유는 바로 내가 하나의 케이스에 해당하는 답을 잘못 내게 되면 규칙성이 정말 어그러진다는 것이었다.
그래서 나는 1부터 30까지의 수에 대해 어떤 답이 나오는 지를 내 노트에다 다 정리했는데,
danhan이 이를 notion에다가 공유해달라고 했다. 사실 이 정리한 모든 케이스들이 정답일 거라는 확신이 없었다.
그래서 uwoobeat한테 이 수가 0이 나오는지 확인해달라는 말을 몇 번이고 했다.
uwoobeat가 n는 왜 0이 나오지? n는 왜 1이 나오지?라는 질문을 계속했다.
그렇게 몇몇 오류가 고쳐졌고 마지막으로 uwoobeat가 28은 왜 0이 나오지?라는 질문을 했다.
그래서 28이 왜 0이 나와야 하는지에 대해 uwoobeat에게 설명을 하던 도중에 이 문제를 이해해버렸다.
28 = 8 +20 = 8 + 9 + 1 + 9 + 1
결국 `항상 최선의 수`를 내기 위해서는 내 차례가 되었을 때 10의 자릿수에 해당하는 돌 개수를 받으면 게임에서 졌고 그렇기에 게임에서 이기기 위해서는 내 차례의 돌 개수에서 10의 자리가 되도록 돌을 가져가야 한다는 방식이었다.
이렇게 설명을 했다. 안타깝게도 사실 확신이 없었다.
그런데 설명을 들은 danhan이 확신에 차서 맞는 것 같다며 나보고 코드를 작성해보라 해서 코드를 작성했고
uwoobeat는 다른 케이스들(네 자릿수)도 검사를 해보아야 한다고 주장했지만 1000이 넘는 케이스를 머릿속으로 검사해보기에는 어차피 똑같은 알고리즘을 사용할 것이라 생각이 들어서 그냥 제출하기로 마음을 먹었다 (메롱)
에라 모르겠다 심정으로 제출한 후 AC를 맞았다.
import sys
input = sys.stdin.readline
pair = lambda : map(int, input().split())
tesc = int(input())
for i in range(tesc):
tmp = int(input())
if tmp % 10==0:
print('1')
else:
print('0')
이게 바로 `팀플` 인가 싶었다.
집에서 혼자 문제를 풀었다면 그냥 포기했을 문제인데, 팀원들과 함께 토론했기에 맞출 수 있었던 것이다.
요즘 들어서 느끼는 것인데
내가 알고 있는 지식을 다른 사람들도 이해할 수 있도록 설명하는 과정에서 더 명료하게 배워간다.
머릿속으로만 알고 있는 지식과 내뱉을 수 있는 지식은 깊이에서부터 다르다는 것이다.
대회에서 얻어간 점은 바로
말하는 연습과 생각을 정리하는 연습이 많이 필요하다는 것과 `팀 활동`의 필요성을 몸소 깨달았다는 점이다.
어쨌거나 함께 반년 동안 머리를 맞대고 문제와 씨름해준 블데팀이 최고다.
danhan이 블로그에다가 우리 팀 이름이 촌스럽다고 써놓은 것을 봤는데 난 전혀 그렇게 생각하지 않는다. 블데 짱~