DOJ logoDOJ
문제
최근 추가된 문제들저장한 문제
카테고리DLC대회그룹팀게시판
랭킹
문제 풀이 랭킹스트릭 랭킹DOJ Power 랭킹
현황
문제 제안로그인회원가입
DOJ logoDOJ

OI 서브태스크 채점, Elo 레이팅, Discord 인증을 갖춘 커뮤니티 온라인 저지.

문제
문제 목록카테고리
커뮤니티
대회랭킹게시판공지사항외부 대회 개최이용 안내
계정
로그인회원가입채점 현황
정책
이용약관DLC 이용 규칙개인정보 처리방침API 사용 설명서언어별 채점 환경대회 순위 보상레이팅과 퍼포먼스
© 2026 DOJ
모든 권리 보유

정책

  • 이용약관
  • DLC 이용 규칙
  • 개인정보 처리방침
  • API 사용 설명서
  • 언어별 채점 환경
  • 대회 순위 보상
  • 레이팅과 퍼포먼스

레이팅과 퍼포먼스

레이팅은 여러 대회를 통해 쌓이는 실력 지표이고, 퍼포먼스는 한 대회에서의 성적을 레이팅 척도로 표현한 값입니다.

현재 레이팅 등급

현재 서비스에 설정된 등급입니다. 구간의 양 끝값을 포함하며, 프로필과 사용자 핸들에도 같은 색상을 사용합니다.

레이팅 구간등급 명칭색상
0–1199Newbie#64748b
1200–1399Pupil#22c55e
1400–1599Specialist#14b8a6
1600–1799Expert#3b82f6
1800–1999Candidate Master#8b5cf6
2000–2199Master#f97316
2200–2399International Master#ef4444
2400 이상Grandmaster#dc2626

계산에 사용하는 참가자와 순위

레이팅 대상 대회의 등록된 공식 참가자 중 레이팅 참가 범위에 들어가는 일반 계정을 사용합니다. 비공식 참가자, 스코어보드 제외 대상, 영구 정지 계정은 제외합니다. 총점이 높은 순서, 총점이 같으면 패널티가 낮은 순서로 정렬하며 두 값이 모두 같으면 동순위입니다. 0점 참가자도 계산에 포함됩니다.

DOJ Arena 퍼포먼스

첫 3회의 레이팅 대회를 마친 참가자를 기준으로 계산합니다. 참가자의 현재 레이팅을 R_j, 자신보다 앞선 참가자 수를 a, 동순위 인원을 t라고 할 때 아래 식을 만족하는 P를 이분 탐색으로 구합니다. 사이트 설정에 가상 0점 참가자가 있으면 그 인원과 설정 레이팅도 계산에 포함합니다. 일시 정지된 기존 참가자는 공식 참가자들과 별도로 계산하며, 다른 참가자의 퍼포먼스에는 영향을 주지 않습니다.

수식에서 F는 상한 적용 전 퍼포먼스, F_final은 최종 퍼포먼스입니다. F_upper와 F_lower는 위·아래 참가자의 퍼포먼스이며, R_old와 R_new는 변경 전·후 레이팅입니다.

∑j11+10(P−Rj)/400=a+t2\sum_j\frac{1}{1+10^{(P-R_j)/400}}=a+\frac{t}{2}j∑​1+10(P−Rj​)/4001​=a+2t​

표시 퍼포먼스로 변환

P가 400 이상 2400 미만이면 그대로 사용합니다. 400 미만은 지수 변환, 2400 이상은 로그 변환을 거칩니다. 이 변환을 마친 값에 아래의 상한 규칙을 적용합니다.

F(P)={max⁡ ⁣(1,400e(P−400)/400)P<400P400≤P<24002400+800ln⁡ ⁣(P−1600800)P≥2400F(P)=\begin{cases}\max\!\left(1,400e^{(P-400)/400}\right)&P<400\\P&400\le P<2400\\2400+800\ln\!\left(\frac{P-1600}{800}\right)&P\ge2400\end{cases}F(P)=⎩⎨⎧​max(1,400e(P−400)/400)P2400+800ln(800P−1600​)​P<400400≤P<2400P≥2400​

처음 3회의 레이팅 대회

첫 3회는 신규 참가자 보간 방식을 사용합니다. 자신의 순위 바로 위와 아래에 있는 기존 참가자의 퍼포먼스 평균을 사용하며, 위에 기존 참가자가 없으면 3000, 아래에 없으면 0을 기준으로 삼습니다. 기존 참가자가 한 명도 없으면 1500입니다. 보간을 마친 뒤에도 같은 퍼포먼스 상한을 적용합니다.

F=Fupper+Flower2F=\frac{F_{\mathrm{upper}}+F_{\mathrm{lower}}}{2}F=2Fupper​+Flower​​

대회 레이팅 상한 + 400

대회에 설정된 레이팅 참가 상한이 L이면 최종 퍼포먼스는 L + 400을 넘지 않습니다. 실제 참가자 중 최고 레이팅이 아니라 대회 설정값을 사용합니다. 상한이 없는 대회에는 이 제한을 적용하지 않습니다. 최종 퍼포먼스는 정수로 반올림해 표시합니다.

Ffinal=min⁡ ⁣(F,L+400)F_{\mathrm{final}}=\min\!\left(F,L+400\right)Ffinal​=min(F,L+400)

예: 상한 1600인 대회에서 계산 퍼포먼스가 2300이면 최종 퍼포먼스는 2000입니다. 기존 레이팅이 1200이라면 Arena의 새 레이팅은 1400이 됩니다.

퍼포먼스와 레이팅 변화

DOJ Arena에서는 제한된 최종 퍼포먼스를 사용해 현재 레이팅에서 그 차이의 1/4만큼 이동합니다. 새 레이팅은 정수로 반올림하고 최소 1로 유지합니다. 레이팅 적용은 대회 종료 후 운영자가 계산 결과를 확인하고 확정한 시점에 이루어집니다.

Rnew=max⁡ ⁣(1,round⁡ ⁣(Rold+Ffinal−Rold4))R_{\mathrm{new}}=\max\!\left(1,\operatorname{round}\!\left(R_{\mathrm{old}}+\frac{F_{\mathrm{final}}-R_{\mathrm{old}}}{4}\right)\right)Rnew​=max(1,round(Rold​+4Ffinal​−Rold​​))

Codeforces 방식 대회

Codeforces 방식도 순위에 대응하는 퍼포먼스를 계산하며 같은 상한을 적용합니다. 기존 참가자의 레이팅 변화량은 기대 순위, 실제 순위와 기대 순위의 기하평균, 절반 이동, 전체 및 상위 레이팅 참가자 보정으로 별도 계산합니다. 따라서 기존 참가자에게는 Arena의 1/4 이동 식을 사용하지 않습니다. 첫 3회 참가자는 위의 보간과 1/4 이동 방식을 사용합니다. Codeforces 방식에서는 일시 정지를 포함해 활성 정지 상태인 계정을 모두 계산에서 제외합니다.