10th KAIST ICPC Mock Competition

마지막 수정 시각: 2020-10-26 22:59:26

두번째 오프라인 연습. rkm0959 1인팀에게 발려버린 3인.. 좀 더 잘 할 수 있었을 것 같은데, 초반에 쉬운 문제들을 빨리 풀지 못한 것과 후반에 어떤 문제를 풀지 선택 두 가지 측면이 조금 아쉬웠다. 왜 온라인으로 할 때가 더 퍼포먼스가 좋지??

그리고 위의 코드포스에 있는 스코어보드는 오픈컵 기준 스코어보드라 실제 카이스트 교내대회랑은 조금 다르다. 오픈컵 div2였어서 잘하는 팀들이 다 div1을 쳤기 때문에 스코어보드가 퍼포먼스에 비해 좋게 나온다. 그리고 문제 순서도 카이스트 대회랑 다르다.. 타임라인에서 문제 설명은 카이스트 교내대회 번호를 기준으로 썼다.

아래는 타임라인에 따른 진행. 문제는 인쇄한 문제지 대충 섞어서 나눠 가져가서 첨에 누가 어떤 문제 어떻게 받아서 읽었는지 모르겠다.

00:24 G AC

맨 처음 문제를 받고 쭉 읽어보다 보니 스탠딩에서 B가 많이 풀려 있었다. xtalclr님이 B를 마침 봤었기 때문에 키보드를 잡았다. 그 동안 나는 다른 문제를 보다가 G의 풀이를 생각해뒀었다.

그런데 뭔가 생각대로 답이 잘 안 나와서, xtalclr님은 코드를 인쇄해서 디버깅을 하고 내가 키보드를 이어 받아 H를 짜서 24분에 AC를 받았다.

00:33 K WA

그 다음으로는 acka님이 키보드를 넘겨 받아서 K를 붙잡았다. 제출하니 WA가 떠서 xtalxlr님이 다시 B를 넘겨받아서 짰다. 이 과정에서 B/K/G 간에 몇 번 키보드 왔다갔다 했던 것 같다.

00:35 B AC

xtalclr님이 B AC.

00:40 D AC

D도 쉽고 빨리 짤 수 있는 문제였고, 다른 분들이 코딩하는 중에 풀이를 생각해 둔 상태였기 때문에 이후에 바로 키보드를 넘겨 받아서 D를 해결했다.

00:42 K WA

acka님이 다시 K를 디버깅해서 제출했는데 wa가 나왔다.

00:52 K AC

조금 더 디버깅 후 K AC.

01:00 F WA

xtalclr님이 이후 키보드를 넘겨 받아서 F를 짜서 제출했다. 그리고 WA.

01:07 F AC

디버깅 후 AC.

이 시점에서 5솔브, 남은 문제는 8문제였다. 그런데 몇몇 문제는 너무 난이도가 높아 보였고, 뭘 건드리는게 좋을지 몰라서 좀 이 문제 저 문제 잡으며 헤맸던 것 같다. 중간에 여기서 L의 풀이가 나왔다고 생각하고 내가 키보드를 잡아서 잠깐 구현했다. 구현이 양이 좀 많아서 언제든 다른 문제 풀이가 나오면 키보드를 넘겨주기로 하고 들어갔고, 구현하는 중간에 acka님이 키보드를 넘겨 받아서 J의 구현에 들어갔다.

그리고 이 때 다시 xtalclr님과 L의 풀이에 대해 얘기했는데, 원래 생각한 풀이에 반례가 있다는 걸 찾았다. 그래서 이 문제는 묻어두고 다른 문제를 생각하기 시작.

01:48 J AC

acka님이 J AC. 이 다음에는 A번과 I번 두 문제의 풀이를 고민했다. 나와 acka님 둘이서 I번 문제를 이렇게 저렇게 고민하다 풀이가 어느 정도 구체화가 됐고, 비슷한 타이밍에 xtalclr님이 A번의 풀이도 구체화했다. A번의 경우 풀이가 자료구조를 요구했는데, xtalclr님이 해당 자료구조를 구현 못 하겠다고 하셔서, 자료 구조 부분을 API로 비워두고 나머지만 구현하면 내가 넘겨받아서 구현하기로 하고 A의 구현에 들어가셨다.

그리고 구현 완료 후 내가 자료구조를 모두 구현했는데 뭔가 답이 잘 안 나와서 디버깅에 들어갔다. 이 때 I번의 풀이도 완성돼서 중간에 I번과 A번을 몇 번 왔다갔다 하며 구현했다.

03:03 A AC

그리고 A AC.

03:38 I AC

이어서 I도 AC. 여기서 남은 4문제가 모두 정말 어려운 문제였다. 이 중에 뭘 잡을지를 고민했는데, 내가 I를 구현하는 동안 xtalclr님과 acka님은 C를 계속 보고 계신 중이었고, xtalclr님이 E번에 대한 간단한 아이디어는 있는 상황, H는 복잡한 자료구조가 필요해보이는 상황이었고, L은 반례가 있는 풀이를 생각했던 상황(접근법은 맞다는 느낌)이었다.

남은 문제가 다 너무 어려워보여서 한 문제를 골라서 몰빵해야겠다고 판단했고, 다들 고민중이었고 뭔가 될 것 같아 보이는 C에 남은 모든 시간을 투자했다.

종료

그리고 못 풀었다... 끝나고 풀이를 들어보니 C가 제일 어려운 문제였고 사전 지식이 없으면 풀 수가 없는 문제였다. 그리고 L은 접근법이 맞았고 좀 더 발전시켰으면 풀었을만한 문제, E도 xtalclr님이 생각한 아이디어가 기본적으로 방향성은 맞는 상황이었다. 남은 문제 중에 제일 잡으면 안 될 문제를 잡고 시간을 쓴 셈이 됐다. L을 잡았으면 아마 9솔브까진 했을 것 같은데 그게 참 아쉬웠다. 그 외에 초중반에 뭔가 좀 더 빨리 잘 풀 수 있었을만한 문제에서 전체적으로 많이 헤맨 것 같은 느낌도 있었다. 초중반 문제 배분이나 코딩 / 디버깅과 관련해서 뭔가 전략 혹은 규칙을 세우는 게 좋을 것 같은 생각도 든다. 아무튼 문제가 재밌었고, 끝나고 뒤풀이도 신나게 놀아제꼈기 때문에 만족스러운 연습이었다.