이번 글에는 조금 다른 주제를 가져와 보았습니다. 몇 번에 걸쳐 Codeforces에 관련된 글들을 써보려고 하고, 이 글은 그 중 첫 번째입니다.
Rated 라운드의 종류
Rated 라운드는 참가자들의 레이팅에 변동을 주는 라운드로, 라운드 종류마다 이 영향을 받는 참가자들의 레이팅 범위가 다릅니다. 실력 수준에 적절하게 맞추어 구성된 문제 셋에서만 경쟁을 하도록 디비전이 여럿으로 나뉘어 있습니다.
우선 전체 목록을 정리하면 다음과 같습니다.
Division | Rated | Format | Trusted Participant | 문제 수 | 비고 |
Div. 1 + Div. 2 | 전원 | 일반 | 8-9 | 일반적으로 스폰서 라운드 | |
Div. 1 | >= 1900 | 일반 | 5-7 | Div. 2와 동시 개최 | |
Div. 2 (with Div. 1) | < 1900 | 일반 | 5-7 | Div. 1과 동시 개최 | |
Div. 2-only | < 2100 | 일반 | 5-7 | ||
Educational | < 2100 | 확장 ICPC | 6-7 | 모두가 official이지만 2100 미만에게만 rated | |
Div. 3 | < 1600 | 확장 ICPC | Rated 5회 이상, 1900 이상 달성한 적 없음 | 7-8 | |
Div. 4 | < 1400 | 확장 ICPC | Rated 5회 이상, 1400 이상 달성한 적 없음 | 7-8 |
다소 복잡하지만, 사실 rated 여부만 알면 나머지는 크게 중요하지 않습니다. 용어들을 보다 자세하게 정리해보면 다음과 같습니다.
- 대회 포맷: 일반 라운드와 확장 ICPC 규칙을 사용하는 라운드로 나뉩니다.
- 일반 라운드는 Codeforces만의 점수 시스템을 사용하는 라운드로, 각 문제에 배점이 미리 정해져 있고, 대회 시작 시 해당 배점에서 시작하여 시간이 지날수록 배점이 정해져 있는 형태로 되어 있습니다. 즉, 각 문제를 빨리 풀수록 획득 가능한 점수가 높습니다. 또한 틀린 제출 각각에는 50점의 페널티가 부여되는데 이 페널티는 해당 문제를 실제로 풀었을 때에 한꺼번에 받고, 풀지 못한 문제에 대해서는 별도의 불이익이 없습니다. 채점은 대회 중에는 pretest라고 하는 전체 테스트의 부분집합으로만 채점을 해주는데, 이 테스트를 통과했다고 하더라도 대회가 끝난 이후 진행하는 system test에서 전체 테스트 중에 틀리면 실패한 것으로 간주됩니다. 또한 각 참가자는 수십 명 정도가 모인 room에 배정이 되어, 대회 중 pretest를 통과한 문제는 lock을 하고 (lock을 한 문제에는 재제출을 할 수 없습니다) room 내의 다른 참가자들의 코드에 hack을 시도할 수 있습니다. 이 hack에 대해서는 추후에 다른 글로 자세하게 다룰까 합니다.
- 확장 ICPC 라운드는 ICPC에서 사용하는 룰에 몇 가지 요소가 첨가된 방식입니다. 즉, 문제에 배점이 따로 정해져 있지 않고 순위는 무조건 문제를 많이 푼 순, 문제 수가 같다면 페널티가 적은 순으로 산정됩니다. 페널티는 (각 문제를 풀기까지 걸린 시간) + (각 문제에 처음으로 정답을 받기까지 틀린 횟수 * 10)의 합으로, 풀지 못한 문제에 대한 페널티는 없습니다. 일반 라운드와 달리 pretest가 존재하지 않고 대회 중에는 room이나 hack이 없는 대신 대회가 끝난 이후 12시간의 open hack 시간이 주어지는데, 이 시간 동안 모든 사람 (비참가자 포함)은 모든 정답 코드에 hack을 시도할 수 있습니다. Open hack이 끝나면 성공한 hack 데이터들을 전부 데이터에 추가한 뒤 모든 정답 코드에 대한 system test가 이루어지고 (이 때문에 기본 테스트가 사실상의 pretest로 취급됩니다), 여기서의 결과가 최종 랭킹이 됩니다.
- Trusted participant: Codeforces에서는 부계정의 생성이 금지되어 있지만, 실제로는 고수들이 이러한 낮은 레이팅의 부계정들을 가지고 와서 낮은 디비전에서 스코어보드를 점령하는 일이 많기에 이를 방지하고자 만들어진 시스템입니다. 헷갈리기 쉽지만 trusted participant 여부는 rated 여부와는 상관이 없습니다. 다만 스코어보드에 unofficial로 기록될 뿐입니다.
- 문제 수는 대략적인 수치로, 라운드마다 다를 수 있고, subtask가 포함된 경우 늘어날 수 있습니다.
- Educational round는 고정된 스폰서 라운드로 Div. 2와 비슷한 수준으로 취급되지만 방식은 확장 ICPC를 사용합니다. 또한 특이하게도 모두가 official로 취급되어 스코어보드에 이름을 올리지만 rated는 2100 미만 유저들에 대해서만 계산됩니다.
대략적인 난이도
디비전마다의 문제 난이도가 어느 정도인지 궁금한 분들이 많을 것입니다. solved.ac 기준으로 설명하자면, 기여 가이드라인에 대략적으로 나와있지만 조금 더 풀어서 다음과 같이 나타낼 수 있습니다. 개인적인 체감이기 때문에 사람마다 괴리가 있을 수 있습니다.
Division | A | B | C | D | E | F | G | H |
Div. 2 | B3 - S4 | S4 - G4 | G5 - G1 | G2 - P4 | P4 - P1 | P1 - D3 | ||
Div. 3 | B4 - B1 | B1 - S3 | S3 - S1 | S1 - G4 | G4 - G2 | G2 - P5 | P5 - P3 | |
Div. 4 | B5 - B4 | B3 - B1 | B1 - S4 | S4 - S2 | S2 - G5 | G5 - G3 | G3 - G1 | G1 - P4 |
Div. 2 6문제, Div. 3 7문제, Div. 4 8문제의 전형적인 셋을 가정한 표고, 문제 수가 적으면 전체적으로 문제간 간격이 조금씩 넓어진다고 보면 됩니다. 또한 Div. 1은 Div. 2 C부터 시작하여 뒤에 다이아몬드 상위 및 루비 하위 정도의 문제가 추가된 것으로 보면 되고, Div. 1 + Div. 2는 Div. 2 A부터 시작하여 Div. 1 마지막 문제까지 모두 있는 형태로 보면 됩니다.
어떤 라운드에 참가해야 할까
그냥 가리지 말고 다 참가하기를 권장합니다. 몇 가지 이유로 인해 낮은 디비전에서 레이팅을 획득하기가 더 쉽기는 하지만, 어차피 rated 범위를 넘어서 계속 올라가기 위해서는 언젠가는 더 높은 디비전에 참가해야 하며, 레이팅 시스템의 특성상 금방 실력에 수렴하도록 변동되기 때문에 지금 당장의 레이팅에 연연하기보다는 하나라도 더 참가하여 경험을 쌓는 것을 더 추천합니다.
'PS > 자주 하는 답변' 카테고리의 다른 글
좋은 질문을 하는 방법 (0) | 2024.09.20 |
---|---|
런타임 에러의 이유가 힌트입니다. (0) | 2024.05.09 |
모든 조건을 함께 고려한 입력만 주어집니다. (0) | 2024.05.07 |
예제가 아닌, 문제의 조건에 맞는 코드를 작성해야 합니다. (2) | 2024.04.08 |
라이브러리 함수는 공짜가 아닙니다. (0) | 2024.02.19 |