팀단위 프로그래밍 대회의 준비
ACM-ICPC 대회의 경우, 3인 1팀의 팀제인데, 아무래도 팀별 프로그래밍 대회는 개인별 프로그래밍 대회와는 준비부터 조금 달라질 수 밖에 없습니다. 그럼 한번 살펴볼까요?
◎ 팀 단위 대회 참석 시
팀 단위의 대회를 준비할 때는 개인대회에서 신경 쓰지 않았던 부분들이 중요한데, 아래와 같은 점들을 연습해 두는 것이 좋습니다.
1 | 종이 위에 답안 스케치 하기 | - 컴퓨터가 한 대밖에 없어서 키보드를 항상 잡고 있을 수 없기 때문에 답안의 중요 부분들을 종이 위에 미리 적어 두면 빠르게 작성할 수 있어 도움이 됨 - 어떤 자료 구조를 사용할 것인지, 각 함수의 이름과 역할, 중요 부분의 의사 코드까지 미리 종이 위에 구상해 두고 코딩을 빨리 할 수 있도록 연습을 하는 것이 좋음 |
2 | 치밀한 역할 분담 | - 팀원이 전문 분야를 정해 집중적으로 준비하는 연습이 필요함 - 코딩은 두 명만 하고, 한 명은 문제를 전부 보면서 어느 것을 먼저 풀어야 할 지를 결정하는 형식으로 진행하는 등 팀원의 취향이나 상대적 실력에 따라 정하면 됨 |
3 | 페어 프로그래밍 연습하기 |
- 구현에 신경 쓸 점이 많은 까다로운 문제의 경우 두 사람이 같은 코드를 보면서 코딩하는 연습을 해 두면 좋음 - 키보드 잡는 사람은 프로그램을 작성하면서 자신의 생각을 입으로 설명하고, 보는 사람은 배열 크기 등 일반적으로 실수하기 쉬운 지점을 눈여겨 보는 식으로 하면 좋음 |
4 | 디버거 없이 디버깅 하기 |
- 컴퓨터가 한 대밖에 없으므로 디버거를 켜는 것은 팀의 전체 속도에 치명적인 영향을 미침 - 그러므로 디버깅은 항상 눈으로 할 수 있도록 연습해야 함 |
5 | 인쇄 대기 감소를 위한 두 화면 분할 | - ICPC에서는 소스 코드를 출력하면 진행요원들이 가져다 주는데, 여기서 시간이 오래 걸릴 수 있음 - 그러므로 *Vim 같이 화면 분할을 지원하는 에디터를 사용하면 한 쪽에서 프로그램을 작성하면서 다른 반 쪽에는 디버깅 중인 소스 코드를 띄워 놓을 수 있음 |
[참고] *Vim(Vi Improved) ; Bram Moolenaar가 만든 vi호환 텍스트 편집기로 CLI용 Vim과 GUI용 gVim이 있음. 본래 아미가 컴퓨터 용 프로그램이었으나 현재는 MS윈도우, 리눅스, 맥OS10을 비롯한 여러 환경을 지원함
◎ 팀 노트북 준비하기
: ACM-ICPC가 다른 대회와 다른 점 중 하나는 참고 자료를 대회장내에 지참하고 들어갈 수 있다는 것입니다. 그렇다고 아무 책이나 들고 들어갈 수 있는 것이 아니고, 팀이 준비한 20여 장 분량의 출력물만을 가지고 들어갈 수 있는데 이 출력물을 '팀 노트북'이라고 부릅니다. 이 노트북을 준비할 때 다음을 참조하면 좋습니다.
1 | 미리 미리 준비하기 | - 문제를 풀 때 나중에도 유용하게 사용하게 될 것 같은 코드를 정리해서 팀 노트에 추가해 두어야 함 - 문제를 푼 직후에는 코드 검증이 이루어진 뒤일 뿐더러 알고리즘에 대한 이해도도 높기 때문에 정리하는 작업이 용이함 |
2 | 간단한 형태의 문서화 | - 소스 코드들이 하는 일, 실행 전 조건, 실행 후 조건들을 간략하게 주석으로 적어 두면 대회 중에 큰 도움이 됨 - ex) 각 함수의 사전 조건과 사후 조건을 명시해 두면 대회 중에 큰 실수를 방지할 수 있음 |
3 | 클래스 형태로 준비하기 | - 소스 코드가 복잡한 자료 구조를 이용하는 경우에는 이 자료들을 클래스 형태로 정의 해 두는 것이 좋음 - 클래스로 만드는 작업은 타이핑도 길어지고 번거롭지만, 코드의 블랙박스화가 강제되기 때문에 팀 노트를 만드는 사람과 실제 사용하는 사람이 다르더라도 초기화나 기타 까다로운 점들에 신경을 쓰지 않아도 된다는 장점이 있음 |
4 | 적절한 글꼴 선택하기 | - 소스 코드를 어떤 글꼴로 인쇄하느냐에 따라 특정 글자들이 구분되지 않는 경우가 있음 (대문자 O와 숫자 0 / 소문자 l과 숫자 1 등) - 그러므로 프로그램용으로 만들어진 글꼴을 사용하는 것이 좋음 |
어떠신가요?.. 제가 정리해서 올린 위 글들을 보시면서 개별 또는 팀단위의 각종 프로그래밍 대회에 참가해 보고 싶은 마음이 드시는지 모르겠습니다! 도전한다는 것이 쉬운 것은 아니지만, 도전 그 자체가 젊음이고 삶의 멋진 변곡점이 될 수 있습니다. 좋은 코딩으로 좋은 프로그램을 만들고 싶은 컴퓨터 공학도 및 초보 개발자 분들의 도전을 응원합니다!~~ ^^
[참고 및 추천 도서 : 프로그래밍 대회에서 배우는 알고리즘 문제해결 전략 - 구종만 저 -]
'IT 이야기' 카테고리의 다른 글
5G보다 50배 빠른 6G (0) | 2022.08.04 |
---|---|
4차 산업과 해커톤 (0) | 2022.08.03 |
프로그래밍 대회 준비1 (0) | 2022.07.31 |
프로그래밍과 수학 (0) | 2022.07.29 |
모의 해킹대회 (0) | 2022.07.27 |
댓글