본문 바로가기
IT 이야기

프로그래밍 대회 준비2

by 준샤인 2022. 7. 31.
반응형

팀단위 프로그래밍 대회의 준비

 

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  등) 
- 그러므로 프로그램용으로 만들어진 글꼴을 사용하는 것이 좋음

 

 

어떠신가요?.. 제가 정리해서 올린 위 글들을 보시면서 개별 또는 팀단위의 각종 프로그래밍 대회에 참가해 보고 싶은 마음이 드시는지 모르겠습니다! 도전한다는 것이 쉬운 것은 아니지만, 도전 그 자체가 젊음이고 삶의 멋진 변곡점이 될 수 있습니다. 좋은 코딩으로 좋은 프로그램을 만들고 싶은 컴퓨터 공학도 및 초보 개발자 분들의 도전을 응원합니다!~~ ^^

 

 

[참고 및 추천 도서 : 프로그래밍 대회에서 배우는 알고리즘 문제해결 전략 - 구종만 저 -]

728x90

'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

댓글