3회 경진대회 팀 2위인 Fast Hand Fancy (빠른손) 팀 전략 ([1002], [경태], [geniumin]) ---- B 문제, A 문제를 풀었고 (A 문제까지 대략 1시간 30분정도 소요. 패널티 2번) C 번 문제를 풀던중 시간초과. C 번에 대한 패널티 2번. === 준비 === 대회 1주일 전 [1002] 와 [geniumin] 군은 도서관에서 정보 올림피아드 관련 책을 빌렸었습니다. 그리고 대회 2시간 전 [1002] 와 [경태]군은 해당 책의 문제중 3문제 정도를 풀어봤습니다. 책은 '쉽게 배우는 실전 알고리즘 & 정보 올림피아드 도전하기'인데, 별로 추천하진 않습니다. 다른걸 떠나서, 쉽게 답이 나올 문제도 어렵게 풉니다..;; 단, 문제유형을 파악하기엔 어느정도 좋습니다. === 진행 === 해당 문제를 먼저 이해한 사람들이 구현을 주도하였으며 (B : [1002], A : [경태]) 중간 디버깅시에 자연스럽게 Pair를 진행했습니다. 알고리즘을 위해 연습장을 썼습니다. B 문제와 A 문제는 이전에 같은 프로그램을 짜 본 경험이 있던 관계로 특별한 계산을 하지 않았으며, C 번 문제에 대해서 분석차 이용하였습니다. 그리고 테스트를 위해 예제 입력값들을 텍스트 화일로 미리 작성해두고, 도스창에서 이를 redirection, 결과를 확인했습니다. 이러한 방법은 특히 A 번 문제에서 큰 힘을 발휘했습니다. (A번 문제는 입력값이 오목판 전체 이기 때문이죠.) 결과에 대한 확인 테스트 시간이 1초도 걸리지 않았고, 테스트 인풋 데이터 만드는데도 거의 시간소요가 없었습니다. C 번의 경우는 일단 [geniumin] 군이 초기 분석 & 알고리즘을 만들고 중반에 [1002]군이 pseudo-code 화, 후반 알고리즘 검산 & 알고리즘 수정에 대해서 [geniumin] & [경태]군이, 구현은 pseudo code 를 만들던 [1002]가 했습니다. 구현은 C++로 하였으며 iostream 과 vector 를 이용했습니다. ==== B 번 진행 ==== [1002] 가 이전에 비슷한 문제를 풀어본 경험이 있던 관계로 바로 구현을 맡았습니다. 대략 코딩에 2-3분정도 소요하였고, 그 동안 [경태]와 [geniumin] 가 3번문제에 대해 분석. ==== A 번 진행 ==== [경태]가 코딩을 맡았으며 그 동안 [1002] 와 [geniumin] 가 3번문제에 대해 분석. [1002]는 실제 문제를 이해하는 시간이 적었던 관계로 [geniumin] 이 주로 설명. 추후에 [1002] 는 [geniumin] 의 방법이 맞다는 전제하에 pseudo code로의 작성을 도왔습니다. 그동안 [경태]는 A 번 구현 완료. 테스트 데이터를 위해 editplus 로 입력데이터를 test.txt로 작성. DOS 창에서 redirection 으로 프로그램 실행 & 결과 확인. 중간에 5목이 일어난 부분의 첫 위치를 파악하는 부분에서는, 해당 오목 판정결과 함수에서 판정 방향값을 리턴해주는 형태로 함수를 수정, 이를 근거로 첫 위치를 구했습니다. A 번 진행중 아쉬웠던점은, 제출 전 test 겸 찍었던 데이터를 주석처리하지 않은 바람에 아쉬운 페널티를 먹었다는 점. 이에 대해서는 실제 결과 비교부분까지 fc 등의 프로그램으로 배치화일을 만들었다면 문제가 없지 않았을까 생각. ==== C 번 진행 ==== 처음에 두명은 C 번에 대해서 Graph 스타일의 접근을 하였고, 한명은 순차적인 링크드 리스트의 묶음 & recursive 한 순회로 접근했습니다. 의견을 이야기하던중, 실제 구현상으로 볼때 셋의 의견이 같다는 것을 파악하고, 마저 구현으로 들어갔습니다. 대강 디자인한 것으로는, Ball 이라는 객체가 있는데 이 Ball 은 각각 lower 와 higher 가 있어서 매 입력마다 자신보다 큰 Ball, 작은 Ball들을 가지고 있게 됩니다. 그리고 해당 Ball 중 그 Ball 과 연관이 있는 Ball 들, 즉 lower 의 수와 higher 의 수로 봤을때 전체 갯수의 평균값보다 큰 녀석들을 제하고 구한다 식이였습니다. 테스트 예제 값들은 잘 통과했는데, 실제 가서 확인해보니 약간 차이가 나는 input 이 있었는듯. === 마치며 === ComputerGraphicsClass 수업 레포트와 전자상거래 레포트, ComputerNetworkClass 레포트 구현 관계상 3명이 거의 일주일 내내 밤새면서 몸이 축난 중에도 수상을 하게 되어서 기뻤습니다. (문제풀던중 코 후비던 [1002]군이 피를 봤다는 후일담이 전해지고 있다는..;) 동기들끼리의 팀이여서 그런지 완벽한 룰 설정과 호흡, 아이디어의 모음이 빛을 발했다고 생각합니다. 사람들이 좀 더 맑은 정신상태에서 했었다면 건너편 자리 팀 보다 잘했을것이라 생각하며.. ;) 약간의 아쉬움이 남지만 일단 만족. :) [geniumin] & [경태] 군에게 다시금 감사하며.. 또하나 느낀점이라면, 협업에서는 사람들에 대한 믿음이 참 중요하다는 생각이 들었습니다. 역시 수학적인 사고 & 알고리즘 부분은 [geniumin]나 [경태]쪽이 저보다 보는 시야가 깊다는 것을 느꼈습니다. [1002]는 처음에 [geniumin] 과 같이 C 번에 대해 알고리즘 분석 & 디자인 할때는 약간 이해가 가지 않는 부분에 대해서 수긍을 잘 안했었는데, 추후 [geniumin]를 믿고 그의 의견이 맞다고 가정하고 문제를 풀고 코드화 했을때 테스트 예제 데이터에 대한 답이 정확히 나오는 것을 보면서, [geniumin]의 알고리즘을 코드화해주는것에 전념하게 되었습니다. 만일 혼자서 고민하고 문제를 각자 따로 풀려고 했었다면 그런 좋은 결과가 나오지 않았을 것입니다. (아쉽게 시간내에 C 번을 통과하지 못했지만, 조금만 더 시간이 있었으면 통과했을것이라는..~) 협업시에 상대에 대한 믿음이 얼마나 중요한가에 대해 다시금 느끼게 되었습니다. 그리고, [재동] & [상규] 커플. 다시한번 1위한 것 축하. :) --[1002] 건너편 자리 팀, 그리고 커플이라...=,=;;; 형도 축하드려요~^^ --재동 ;) --[1002] ---- [3rdPCinCAUCSE]