티스토리 뷰

대회 후기

UCPC 2018 본선 후기

jwvg0425 2018. 7. 29. 21:38


아쉽게도 본선에서는 닉값을 하지 못했다 흑흑


조금만 더 신중하게 잘 했으면 충분히 8솔브할만 했는데 못 해서 더 아쉬운 것 같다. 아래는 타임라인 별 진행


~00:00


내가 상대적으로 구현 실력이 조금 더 나은 편이지만 5시간동안 나 혼자 코딩을 다 했다간 체력이 버틸 수가 없기 때문에, 초반의 쉬운 문제는 다른 팀원 두 분이 코딩을 맡아주시고 그 동안 나는 비교적 어려워 보이는 문제의 풀이를 고민하기로 했다. 처음부터 팀의 목표는 패널티 상관없이 무조건 8문제를 푸는 것이었고, 그래서 틀리거나 빠르게 못 풀거나 하는 것에 연연하지 않고 최대한 침착하게 풀기로 팀원들과 여러 번 이야기 했다.


~17:45 Solve J (WA 2)


내가 문제들을 쭉 훑어보는 사이, 다른 팀원 분이 2번의 실수 끝에 J를 푸셨다. 끝나고 나서 엄청 쉬운 문젠데 오타로 실수를 두 번이나 했다고 안타까워하셨다 ㅋㅋ


~25:10 Solve A


다른 팀원 분이 J를 푸시는 동안 내가 A의 풀이를 생각해뒀었고, 그래서 바로 컴퓨터를 넘겨받아서 A를 풀었다. 이 때 L번도 미리 봐뒀는데, 이 문제는 완전 구현 문제니 나중에 다른 문제 풀이가 더 생각나지 않을 때 풀자고 이야기하고 갈무리해두었다.


~48:43 E WA


그 다음에 다른 문제들 뒤적거리다가, E가 비교적 풀만해 보였고 풀이가 금방 생각나서 짰다. 하지만 WA


~49:47 E WA 2

~51:10 E WA 3

~54:32 E WA 4

~61:49 Solve E


말도 안 되는 실수의 연속으로(...) E를 무려 4번이나 WA한 끝에 맞췄다. 이상할 정도로 실수를 많이 했는데 다행히 멘탈이 나가진 않았고... 이 시점부터 정말로 패널티를 포기했다(ㅋㅋ)


내가 E를 푸는 동안 다른 팀원 두분이 C번이 풀만한 것 같다고 말씀하셨다. 그래서 C를 봤고, 이 전에 비슷한 문제를 몇 번 풀어본 적이 있어서 풀이를 꽤 금방 떠올렸다. 그리고 C를 짰는데, 뭔가 구현이 이상해서 예제도 제대로 안 나왔다. 이 시점에서 팀원 분이 H 풀이를 알겠다고 하셔서 컴퓨터를 넘겼고, C 코드를 인쇄해서 살펴봤다.


~100:47 Solve H


팀원 분이 컴퓨터를 넘겨 받아서 한 번에 H 솔브. 푸시는 동안 나는 C 풀이의 잘못된 점을 찾아서 생각을 정리해두었고, 그 다음에 남는 시간동안 G의 풀이도 찾아서 G 풀이도 정리해두었다.


~ 118:21 C WA


넘겨받은 다음 C 풀이의 잘못된 부분을 고쳤고, 예제가 모두 잘 나오길래 제출. 하지만 WA. 여기서 C가 생각보다 잘 안 풀리는 것 같아서, 풀이를 생각해 둔 G부터 풀자고 생각하고 G로 넘어갔다.


그런데 막상 G도 넘어가니 G를 DP라고 생각했는데(...) 풀이가 DP가 아니었다. 뭐 DP인지 아닌지는 별로 중요하지 않았고 처음에 생각한 아이디어 방향성은 맞았고 그걸 쓰는 방법만 다르게 접근하면 됐기 때문에 잘못 생각한 부분을 고치는 건 그다지 어렵지 않았다.


~ 136:29 G WA


하지만 막상 제출하니 WA(...) 그 다음에 코드를 다시 찬찬히 살펴보니 잘못 코딩한 부분이 있어서 그 부분을 고쳤다.


~ 142:33 Solve G


다행히 이번엔 AC. 대회 시간 절반 정도가 지난 시점에서 5솔브를 했고, 그래서 남은 2시간 반동안 세 문제만 더 풀면 8솔브를 할 수 있는 상황이었기 때문에 충분히 8솔브가 가능할 것 같다는 생각이 들었다. 특히나 C는 풀이에 대한 확신이 있어서 디버깅만 하면 된다고 생각했고 L은 단순 구현 문제였으니 사실상 7솔브까지는 충분히 빨리 할 수 있을 것 같았기 때문에 더욱더. 물론 생각대로 되지 않았다 ㅠ


~ 151:16 C WA 2


다시 돌아와보니 케이스를 하나 빠뜨린 게 있어서 그걸 고쳤다. 하지만 여전히 WA... C가 미궁속으로 빠져서 머리도 식힐 겸 L부터 풀고 오자고 생각.


~ 226:41 Solve L


L을 푸는데 무려 1시간 반정도가 걸렸다(...) 코딩을 내가 많이 하면 안 된다고 생각했지만 정신차리고 보니 내가 대부분의 시간을 컴퓨터를 잡고 있었고, 그래서 체력이 떨어져서인지 평소에 안하던 실수를 너무 많이 했다(그냥 오늘 전반적으로 실수가 많았던 것 같기도 하다).


L번은 짜면서 제일 처음에 소팅 이상하게 했고, 두 번째로는 x,y를 뒤집어서 반대로 처리하는 실수를 했다. 이 두가지 고치면서 디버깅하는데 시간을 정말 오래 쓴 듯... 실수가 없었다면 훨씬 빨리 구현했을 거고 그러면 좀 더 시간이 남았을텐데 그게 아쉽다.


이 시점에서 3시간 40분 정도가 지난 상황이었고, L을 푸는 동안 K번을 팀원 분들이 꽤 정리를 해 둔 상황이었다. 그래서 C 디버깅을 빨리 끝내고 K를 풀면 8솔브가 가능할거야! 라고 희망찬 생각을 하며 C 디버깅을 했는데...


~ 269:47 C WA 3


여기서 또 하나 생각 못한 부분을 발견했고, 이걸 고쳤다. 이번엔 정말 맞을 거라고 생각했고 게이지가 40%를 넘길래 문제 없겠거니 했으나... 48%에서 WA. 여기서 약간 멘탈도 나가고 체력도 고갈된 것 같다. 이 다음에 계속 이런 저런 테스트 케이스를 만들어보면서 시험해봤지만 결국 대회 시간이 끝날 때까지 못 풀고 6솔브로 대회를 마치고 말았다.



끝나고 난 후 ~


그리고 풀이를 보고, C 분명히 슬라이드랑 똑같은 풀이인데 답이 안 나와서 어떤 걸 잘못 짠 건지 더 암담해졌다. 이거 잘 짜서 빨리 맞았으면 시간 한 2시간은 더 있었을텐데.. 그리고 K 풀이를 보고 K번은 아마 시간이 있었어도 풀었을지 장담하기가 힘들것 같다는 생각이 들었다. 수학 베이스가 너무 부족하다 ㅠ 나머지 문제들은 다 풀이를 보니 내 실력으로는 풀 수 없는 안드로메다에 있는 문제인 것 같아서 깔끔하게 포기.


그리고 집에 와서 저녁을 먹고 느긋하게 C번 코드를 다시 봤는데.. 보자마자 잘못된 부분을 깨달아버렸다. 심지어 처음 짤 때 머릿속에 있었던 케이스인데 ㅠㅠ 아마 다른 문제 풀고 왔다갔다 하는 사이 그걸 잊어버렸던 것 같다. 그 부분 추가해서 제출하니 바로 AC...


이런 긴 시간동안 푸는 대회, 그리고 이 문제 저 문제 왔다갔다 해야 하는 대회에서는 중간에 내가 컴퓨터를 안 잡고 있을 때 생각한 풀이가 휘발되지 않게 잘 정리해두는게 중요하다는 걸 느꼈다. 풀이를 경우의 수 잘 정리해서 적어뒀다면 안 까먹었을 것이고, 그랬다면 시간을 정말 많이 아꼈을텐데 이걸 정리해두지 않고 머릿속에만 넣어둬서 많이 고생한 것 같다.


코드포스같이 짧고 빠르게 하는 대회 위주로만 풀다보니 더 그런 습관이 생긴 것 같은데, 앞으로는 의도적으로라도 풀이를 정말 확실하게 정리해둬야겠다는 생각이 들었다. 그러니까, 코드를 짠 후 내가 짠 코드와 적어 둔 풀이를 비교하면서 풀이에는 적어뒀는데 코드에는 빠진 부분이 없는지 확인할 수 있을 정도로 상세하게 풀이를 적어 둔 다음 그걸 코드로 옮기는 정도로. 이런 연습이 많이 되어 있지 않아서 더 실수를 많이 하는 것 같다. 정확히는, 처음에는 생각을 했었는데 짜면서 까먹고 그걸 계속 못 찾는 실수를 상당히 많이 하는 것 같다. 풀이를 자세히 적는 연습을 하면 이런 실수는 좀 줄일 수 있지 않을까?


정리


아무튼 뭐 6솔브 했지만 예선이랑 비슷한 등수(18등 - 하지만 외부 팀 제외하면 16등이니 예선보단 한 등수 올랐다!)도 했고 전체적으로 정말 재밌고 좋은 경험이었다. 닉값까지 했으면 정말 좋았을텐데.. 하지만 8솔브한 팀들 순위를 보면 아마 지금의 내 실력에는 힘든 수준이었지 않을까 싶긴 하다. 7솔브는 정말 할 수 있었는데! C를 못 맞춘게 가장 아쉬울 따름.


 그리고 팀 대회가 정말 재미있는데 또 이런 오프라인 팀 대회에 나갈 일이 있을까? 싶어서 슬프다 흑흑 나도 ICPC 나가고 싶은데..

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함