티스토리 뷰

0. 서론 + 잡담


 제가 처음으로 프로그래밍을 시작한 것은 08년도 1월입니다. 10년째 프로그래밍을 했고, 고비도 엄청 많았지만, (자세한 내용은 나중에 말해보기로 하고) 드디어 이 대회를 그만할 수 있게 되어 영광입니다.


 이제 선수생활은 그만하기로 했고, 더이상 병신같은 새로운 내용을 공부하지 않고, 대회는 하고싶을 때 칠 것 같습니다. 이제 진짜 하고싶은 것들에 매진할 생각입니다. 그 전에, 머리를 비우기 위해 ICPC를 하면서 생각했던 것들을 몇 가지 쓰고 있습니다.


잠깐 변명을 하자면, ICPC World Final을 이끌고 있는 사람들의 생각이 저희팀과는 많이 달랐고, 때문에 출제진에게 뒤통수를 얻어맞은 것이라고 생각합니다. 저희가 잘못했다고 생각하지 않습니다.


 ICPC World Final에 대해서도 주제가 하나 있지만, 이것도 나중에 풀어보기로 하겠습니다.

(ICPC 문제 퀄리티와, ICPC Syllabus에 관한 내용이 될 것 같습니다.)



 제가 예전에 팀 전략 관련해서 글을 썼음에도 불구하고, 한 번 더 쓰기로 결심한 이유는 DEGwer님의 팀 전략 글을 보고 나서 입니다. (일본어를 못하기 때문에 구글번역기의 도움을 받았습니다.) Cxiv-Dxiv 팀은 제가 ICPC를 못하던 시절에도 잘 하는 팀으로 기억하고 있습니다. 3년간 호흡을 맞춘 WF Medalist의 팀 전략을 읽는 것은 매우 재밌는 일이기도 해서, 저희 팀 전략도 자세하게 적어보려고 합니다.


 이제는 다 끝나서 쓰는 내용이지만, Tokyo라는 단어에 거부감을 느끼고 있습니다. Cxiv-Dxiv 팀과의 연습 승률은 과장해서 90% 정도 될 것 같은데, 정작 중요한 대회인 츠쿠바 리저널과 ICPC WF에서만 패배하니까 너무 억울합니다. 그래도 일본의 경쟁 프로그래밍 분야 커뮤니티는 매우 좋아보이기 때문에, 앞으로 한국과 일본이 협력하면 좋을 것 같다고 생각하고 있습니다.




1. 팀원 소개


(1) cki86201

 약한 분야가 없고 모든 분야를 고르게 잘 합니다. 3인 연습에서도 혼자서 문제를 푸는 경우가 많습니다. 구현이 매우 어려운 문제를 dotorya와 나눠서 코딩할 때 역활 분담을 매우 잘 합니다.


(2) dotorya

 분야와 상관 없이 구현속도가 엄청나게 빠르고 정확하며, 평범한 문제도 엄청나게 잘 풉니다. 한 문제의 풀이를 30분 내에 구상하지 못하면 문제 해결 능력이 엄청나게 감소하는 특징이 있습니다. 제가 코딩을 안하는 만큼 코딩을 더 합니다. (그리고 기하를 못합니다)


(3) zigui

 다른 팀원에 비해 구현속도와 정확도가 떨어지지만, 분야에 상관 없이 문제 해결 능력이 빠르고, 매우 어려운 문제도 해결할 수 있는 능력이 있습니다. 기하 일부 문제를 제외하고는 코딩을 절대 하지 않습니다.


 놀라운 점은, 저는 문제를 "성질을 찾아나가는 방식"으로 푸는 반면에, dotorya는 "비슷한 문제를 풀어봤는가"로 풀기 때문에 호흡이 매우 잘 맞습니다. 혼자서도 몇몇 대회 온사이트를 뚫을 정도의 사람 두 명의 장점이 완벽하게 다르기 때문에, 매우 높은 시너지 효과를 받은 것이라고 생각합니다.


 각자의 전문분야가 없기 때문에 어떤 문제가 어떻게 나와도 일정한 실력이 나오고, 풀이도 빠르고 코딩도 빨라서 중반에 엄청나게 강합니다. 다만 구데기 "러시아"쪽에서만 많이 나온 문제에 대해서는 다른 팀보다 약하다는 단점이 있어 GP나 WF에 약한 모습을 보였습니다.


2. 실적


WF 2018 : 은

츠쿠바 17 : 3등, 은 (공부를 엄청나게 열심히 하게 된 계기가 되었습니다)

각종 연습 대회에서 수많은 좋은 성적들 (ex. GP 1등 2번)


이렇게 보니 한 건 더럽게 없네요.


3. 전략


 제가 구현을 하지 않는 전략을 택했기 때문에, 매우 많은 3인 연습을 해야 했습니다. 팀이 제대로 굴러가지 않는 경우가 꽤 많았고, 연습을 통해 어떤 경우에 어떻게 해야 하는지 배웠습니다.


 대회 시작때는 제가 컴퓨터 세팅을 하고, 나머지 2명이 쉬운 문제를 찾아 읽습니다. (제가 쉬운 문제를 잡으면 풀이를 전달해야 하기 때문에 그만큼 손해입니다.) 저는 팀원이 쉬운 문제임에도 풀이를 생각하지 못하는 경우에는 도와주고, 중간~어려운 문제를 풀러갑니다. 중요한 점은, 이때부터 컴퓨터를 쉬게 하지 않는다는 것입니다. 두 명이 쉬운 문제를 구현하는 동안 제가 중간 문제를 풀고, 중간 문제를 구현하는 동안 어려운 문제를 풉니다. 마지막으로 어려운 문제를 풀면 끝!


 기본적인 팀 전략은 이것이지만, 세부 내용은 매우 까다롭습니다. 몇 가지를 정리하지 않고 써보면,


1. 구현을 하기 위한 준비단계는 컴퓨터 밖에서 하기 때문에 다른 사람이 코딩할 수 있습니다. 이 시간도 아끼는 것이 목표이고, 때문에 문제를 푸는 사람과 순서가 매우 중요합니다. 대부분 문제의 풀이를 제가 생각하기 때문에, 두 명에게 적절히 분배하는 것도 해야 합니다. (머릿속에서 또 다른 스케쥴링 문제를 풀어야 합니다.)


2. 한 사람에게 문제가 많이 몰리는 경우가 있을 수 있고, 매우 비효율적입니다. 이런 일은 구현이 너무 오래 걸려서 반대쪽으로 풀이가 몰림과 동시에, 풀이가 어려워 전달도 힘든 경우 자주 일어납니다. 해결 방법은 억지로 풀이를 반대쪽에게 넘기거나 그냥 dotorya를 믿는 방법이 있습니다.


3. 문제가 너무 어려워 컴퓨터가 비는 경우가 생깁니다. 이 경우 3명이 힘을 합쳐 풀이를 고민하거나, 문제를 욕하고 대회를 던집니다.


4. 마지막에는 저와 구현하지 않는 1명이 일을 하지 않기 때문에 비효율적입니다. 이 경우 구현하지 않는 쪽에게도 풀이를 전달하여 페어코딩을 하게 됩니다.


5. 3명 모두 분야를 가리면 안됩니다. 분야를 가리는 경우 풀이가 안나오거나, 코딩이 한사람에게 몰리게 됩니다.


6. 구현이 어렵지만 풀이는 나온 문제의 경우 문제를 모두 읽은 이후 컴퓨터가 비는 즉시 코딩을 들어갑니다. 구현이 어려운 문제의 경우 구현을 하는 도중 막히는 경우가 매우 많습니다. 때문에 A 문제를 코딩하다가 B 문제의 풀이가 나온 경우, A 문제의 코딩을 멈추고 B 문제를 풀게 되는 경우가 꽤 있습니다.

6-1) A 코드의 완성이 얼마 남지 않았다. -> A

6-2) B 문제의 구상이 끝났고, A 문제 구현이 막혔다 / 필요하다 -> B

6-3) A 코드를 디버깅하고 있고, 오래 걸릴 것 같다. -> B, A를 프린트하여 종이로 디버깅


7. 1명이 WA를 계속 받는 경우. 나머지 2명이 어떻게든 모든 문제를 다 밀어버립니다. 저와 cki86201, 혹은 저와 dotorya 2인팀만으로도 좋은 결과를 자주 내기 때문에, 2명이 최선을 다하면서 1명이 그 문제를 풀길 기대하는 수밖에 없습니다. 2명이 최선을 다하는 동안 1명이 디버깅을 계속 하기 때문에, 생각보다 나쁜 상황은 아닙니다.


8. 2명이 WA를 계속 받는 경우. 이번 ICPC WF에서 그랬는데, 이런 경우 문제를 욕하면서 망하면 되겠습니다. 일반적으로는 제가 dotorya와 같이 AC를 내려고 노력합니다. 보통 dotorya가 코딩에서 망하는 경우는 문제 세팅이 나쁜 경우 구데기 뿐이기 때문에, 정상적인 상황이라면 자주 일어나는 일이 아닙니다. (이런 일이 많이 일어난다면, 전략을 수정하거나 코딩정확도 연습을 하시기 바랍니다)

 


특징: 코딩하는데 10분~20분 남짓 걸리는 초~중반 문제를 초반부터 쉬지 않고 코딩하기 때문에 중반이 매우 강력합니다. 연습 대회에서도 문제수로 밀리는 경우는 많이 있지만 패널티로 밀리는 경우는 거의 없습니다. (그래서 문제수만 붙으면 이긴다는 느낌으로 공부했으나 구데기 러시아에게 패배하고 말았습니다.)


 팀 전략 설명은 여기까지입니다.




 4. 또 다시 잡담


 지난 2일동안 Codeforces 커뮤니티에서 WF 문제의 질에 대해 토론이 있었습니다. 그리고 그곳에서 느낀 것은, WF는 러시아 리저널이라는 느낌이 들었습니다. 저희 팀과 우리나라는 러시아쪽 커뮤니티와 교류가 전혀 없었기 때문에 정보의 불균등이 있을 수밖에 없었고, GP와 ICPC WF의 방향성, syllabus가 없는 이유에 대해 이제야 알게 되었습니다. 그리고 ICPC 커뮤니티가 변화를 싫어하는 느낌이 엄청나게 강해서, 적어도 몇년간은 러시아 계열 나라가 계속 강할 것 같습니다. 제가 할 수 있는 것이 다음 년도 팀을 응원하는 것 뿐이라는 것이 매우 짜증납니다.


 ICPC는 지역 이점이 있는 대회입니다. 대표적인 예로 Cxiv-Dxiv 팀이 17 호치민 리저널에서 2등을 했고, MolaMola가 17 츠쿠바 리저널에서 3등을 한 것이 있습니다. 월파에서 ITMO, Warsaw, Moscow 등 러시아 계열 대학이 고평가를 받는 이유도 이것이라고 생각합니다.


 애초에 ICPC 출제 범위가 "인류가 알고 있는 지식"이라는 것도 어이가 없는데, 저 문장 자체는 그럴듯하지만 실상은 "출제자가 알고 있는 지식"이 출제 범위입니다. 이러니 당연히 지역 이점이 생길 수밖에 없고, 때문에 ICPC WF가 공평한 대회라고 생각하지 않습니다.


 마지막으로, 많은 팀들에게 이 글이 도움이 되었으면 좋겠습니다. Cxiv-Dxiv 팀 전략은 저희 팀과 매우 다르기 때문에, 같이 보는 것도 좋을 것입니다. 



 어쨋거나, 이제 ICPC 코칭을 해보고 싶은 마음이 있어서, 코칭을 받고싶으신 분들은 팀을 만든 뒤 코포 dm으로 연락해주세요. 다만 코칭은 처음이라는 점과, 아직 코칭 계획이 하나도 없다는 점 유의하시기 바랍니다..

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
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
글 보관함