저희 동아리 위키 페이지에서 몇 줄만;

- 룰 -

Algorithm Competition 의 라운드하나는 다음 과정으로 나뉘어진다.

Coding phase: 75분.
문제를 보고 코딩을 한다. 문제별로 최대 점수가 있고, 해당 문제를 여는 시점부터 시간이 계산되어, 답을 제출할 때까지 시간이 길수록 점수가 낮아진다. 대개는 문제 최대 점수와 난이도는 비례한다.

만약 easy 를 열고, 답을 제출하지 않은 뒤, 다시 medium 을 열어서 풀고, 다시 easy 를 제출한다면, 처음 easy 를 연 이후까지의 시간이 쭉 계산된다. 그러므로, 한번 연 문제를 풀지 않고 포기하는 것은 왠만해선 하면 안 될 행동이다.

대개의 경우, easy 는 250점, med 는 500점, 그리고 hard 는 1000점이다. 세 문제를 다 안정적으로 계속 풀 수 있다면, 전체 10위 안에 계속 들 수 있다.


Intermission: 5분.


Challenge phase: 15분.
같은 방에 있는 다른 사람들의 제출된 솔루션을 room summary 에서 보고, 잘못된 입력을 집어넣어 솔루션이 틀림을 보인다. 애플릿을 통해 상대의 프로그램을 원하는 패러미터를 넣어 실행할 수 있으며, 저자 solution 과 다른 결과가 나오면 성공. 내 프로그램이 상대방의 challenge 를 통과하지 못하면 해당 문제 점수는 0점이 된다.

성공시엔 50점, 실패시엔 -25점을 얻는다. 꽤 큰 factor 가 된다.

System test: 실제 테스트 케이스로 프로그램을 테스트해본다. 실패하면 0점이 되고, 여기에서 살아남아야만 최종 점수가 된다. 다 하려면 15분에서 30분 정도가 걸린다.

위 라운드 하나로 이루어지는 경기를 SRM (싱글 라운드 매치) 라고 한다. 멀티 라운드 매치는 없고, 일년에 몇번 하는 큰 대회인 토너먼트가 있다. 토너먼트에는 TopCoder open, TopCoder Collegiate Challenge 가 있다.

- 문제 예제 -

http://www.topcoder.com/tc 에서 Launch Arena Applet / 로그인 / Practice Room / SRM237 Div 1 로 들어간다. (274번방) Select One 에서 250 을 눌러보면 BoxUnion 이란 문제가 나온다.

요는, 좌표들을 포함하는 4개까지의 사각형들의 합집합의 넓이를 구하라는 것이다. 클래스의 멤버 함수를 작성하기 때문에, 입출력을 작성하지 않아도 되지만 내 컴퓨터에서 직접 실행해서 테스트할 수는 없다. JongMan 이 작성한 C++ 코드는 다음과 같다. JongManBoxUnion

보면, 일반적인 좋은 코드에 요구되는 것과 다른 것을 쉽게 알 수 있다. 모든 게 다 빨리 짜기 위한 방편이다.

- 코드 템플릿 -

빨리 짜기 위한 방편으로 코드 템플릿을 쓴다. 자주 쓰는 #include 나 typedef 등을 미리 해 둔다. JongManTopCoderTemplate 을 참조하면 좋다. 단, 쓰지 않는 코드가 코드 안에 많을 경우 엄청난 페널티를 받기 때문에, tomatrix() 함수군 등은 필요할 때만 복사해 쓰면 좋다.

그 외, 계산기하 같은 것들은 미리 구현해서 가지고 있는 것이 좋다.

- 플러그인 -

기본 Arena 에서 코딩하기란 거의 불가능하기 때문에 (esperance 는 한다) 여러 플러그인들이 존재해, 프로그램 작성을 쉽게 해 준다. 요 링크를 참조하며, KawigiEdit 를 쓰는 것을 추천한다.

syntax highlight, autoindent 등을 지원하며, 로컬 컴파일러로 실행하고 테스트해볼 수 있는 환경 또한 제공한다.

- 연습을 하고 나서 -

에디토리얼
은 잘 정리된 설명들을 갖고있다.

-----------------------------------------------------------------------------
예전에 JongMan님이 http://acm.kaist.ac.kr 포럼에 올린 글..
아직 뭔지 잘 모르지만.. 조만간에 시도해봐야겠다..

관련글: 온라인 프로그래밍 경시대회 TopCoder 소개


'Problem Solving > TopCoder logs' 카테고리의 다른 글

TopCoder SRM 371 Div2 (완료)  (2) 2007.10.14
TopCoder SRM 370 Div2  (0) 2007.10.14
TopCoder SRM369 DIV2  (6) 2007.10.05
TopCoder SRM 368 Div 1  (0) 2007.10.03
TopCoder SRM 367 Div 2 (완료)  (10) 2007.09.27
TopCoder SRM 366 DIV 1  (2) 2007.09.18
TopCoder SRM 365 Div 1  (0) 2007.09.13
TopCoder SRM 364 Div 1  (0) 2007.09.09
TopCoder SRM 363 Div 2 (완료)  (0) 2007.08.12
TopCoder SRM 362 Div 2  (0) 2007.08.08

to Top