U E D R , A S I H C RSS

3rdPCinCAUCSE/Fast Hand전략

3회 경진대회 팀 2위인 Fast Hand Fancy (빠른손) 팀 전략 (1002, 경태, geniumin)

B 문제, A 문제를 풀었고 (A 문제까지 대략 1시간 30분정도 소요. 패널티 2번) C 번 문제를 풀던중 시간초과. C 번에 대한 패널티 2번.

준비

대회 1주일 전 1002geniumin 군은 도서관에서 정보 올림피아드 관련 책을 빌렸었습니다. 그리고 대회 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 번 진행

경태가 코딩을 맡았으며 그 동안 1002geniumin 가 3번문제에 대해 분석. 1002는 실제 문제를 이해하는 시간이 적었던 관계로 geniumin 이 주로 설명. 추후에 1002geniumin 의 방법이 맞다는 전제하에 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


Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:22:17
Processing time 0.0349 sec