2019년 정보올림피아드 2차 대회 연습 경시 및 채점 기준 안내

최종 업데이트: 7월 15일 오전 9시

연습 경시 안내

연습 경시는 응시자가 편한 시간에 실제 경시시스템을 자유롭게 사용해 보고 익숙해지는 것이 목적입니다. 시간을 정해서 치르는 모의 대회와는 다릅니다.

  • 기간: 7/15(월) 09:00 – 7/20(토) 12:00
  • 사이트: https://test-cms.koi.or.kr
  • 로그인 ID/PW:
    • 아이디: 수험번호 (ex. 수험번호가 12345678인 경우 아이디는 12345678)
    • 비밀번호: koi+수험번호  (ex. 수험번호가 12345678인 경우 아이디는 koi12345678)
    • 수험번호는 1차 대회 당시와 같은 방법으로 확인할 수 있습니다. 접수 사이트 바로가기

채점 환경

  • OS: Ubuntu 18.04 LTS
  • 컴파일러 및 인터프리터
    • C/C++: gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0
    • Java: openjdk version "1.8.0_212"
    • Python 2: Python 2.7.15+
    • Python 3: Python 3.6.8
    • 컴파일 옵션은 문제 설명을 내려받는 페이지에서 확인할 수 있습니다.

채점 기준

답안의 채점 방식에 대한 설명

제출된 답안의 채점에는 여러 개의 부분문제를 이용합니다. 부분문제의 구성은 문제마다 다르며, 문제에 설명이 되어 있습니다. 하나의 부분문제는 여러 개의 테스트 데이터로 구성되어 있습니다.

하나의 부분문제에 포함된 모든 테스트 데이터에 대하여 제출된 프로그램이 정답을 출력할 경우 그 부분문제에 주어진 점수를 얻게 됩니다. 그렇지 않은 경우 (즉 1개 이상의 데이터에서 오답 판정을 받은 경우) 해당 부분문제에 대한 점수는 0점이 됩니다. 주어진 문제에 대해 만점을 얻기 위해서는 모든 부분문제에 대해 만점을 얻어야 합니다.

작성된 프로그램의 한 번의 수행에서는 부분문제를 입력으로 받는 것이 아니라, 한 개의 테스트 데이터만 입력으로 받습니다.

예를 들어 테스트 데이터 입력이 1, 2, 3, … 12, 13 이렇게 13개가 있을 때,

  • 첫 번째 부분문제 : 1, 2, 3
  • 두 번째 부분문제 : 4, 5, 6, 7
  • 세 번째 부분문제 : 1, 2, 3, 8, 9, 10
  • 네 번째 부분문제: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13

이렇게 각각 1, 2, 3 데이터가 첫 번째 부분문제에, 4, 5, 6, 7 데이터가 두 번째 부분문제에, 1, 2, 3, 8, 9, 10 데이터가 세 번째 부분문제에, 그리고 모든 데이터가 네 번째 부분문제에 포함된다고 가정합시다. 이 예시와 같이 하나의 데이터가 여러 개의 부분문제에 포함되어 있을 수 있습니다.

이 경우 학생이 1, 2, 3번 데이터를 전부 맞춘 경우에 첫 번째 부분문제에 대한 점수를 받을 수 있습니다. 1, 2, 3번 중 하나라도 틀리면 첫 번째 부분문제에 대한 점수를 받을 수 없습니다. 두 번째, 세 번째 부분문제에 대해서도 각각 4, 5, 6, 7을 전부 맞추었을 때와 1, 2, 3, 8, 9, 10을 전부 맞추었을 때 각 부분문제에 대한 점수를 얻을 수 있습니다.

총점 계산 방식 및 동점자 처리

  • 각 문제에 대한 점수는 응시자가 제출한 모든 답안의 점수 중 최댓값입니다. 각 답안의 점수는 윗 문단의 방식에 의해 계산됩니다.
  • 응시자의 총점은 응시자가 각 문제에 대해서 받은 점수의 합입니다.
  • 순위는 아래와 같은 방식으로 계산됩니다.
    • 1순위: 총점이 높은 사람이 앞선 순위입니다.
    • 2순위: 총점이 같을 경우, 마지막 유효 점수를 받은 시각이 빠른 사람이 앞선 순위입니다.
      • “마지막 유효 점수를 받은 시각”은 (시각 T 전에 제출한 답안들로 계산한 총점) < (모든 답안들로 계산한 총점)을 만족하는 T 중 가장 늦은 시각으로 계산됩니다. 즉, 총점이 증가하는 가장 늦은 시각입니다.
  • 작년까지와는 달리 제출 횟수가 순위에 반영되지 않습니다.

피드백

  • 참가자들은 채점시스템을 통해서 참가자들이 제출한 소스 프로그램에 대한 피드백을 볼 수 있습니다.
  • 피드백이 전달되는 시간은 일정하지 않을 수 있으므로, 제출한 코드에 대한 피드백이 진행되는 동안 참가자들은 해당 문제 혹은 다른 문제에 대한 풀이를 계속 진행하여야 합니다.
  • 피드백은 각각의 부분문제를 올바르게 풀었는지, 총점이 얼마인지를 알려줍니다.
  • 각각의 테스트 데이터에 대해 채점 시스템은 아래와 같은 메시지를 줍니다.
    • (1) 해당 테스트 데이터가 부분문제에서 최초로 오답 판정을 받은 테스트 데이터가 아님: “N/A”
    • (2) 답이 맞음: “맞았습니다.”
    • (3) 답이 틀림: “틀렸습니다.”
    • (4) 실행제한 시간을 넘음: “시간 초과”
    • (5) 메모리 제한 초과, main이 0을 리턴하지 않음, 금지된 시스템 함수 호출(프로세스 제어, 파일 조작, 장치 관리, 정보 유지, 통신 등, 입출력을 제외한 시스템 콜의 사용), 메모리 접근 오류, 금지된 파일에 접근 시도 등: “런타임 에러”
  • 실제 입력 데이터, 제출된 풀이의 출력 데이터 및 실행에 관련된 상세사항들은 주어지지 않습니다.

소스 프로그램 제출

  • 참가자들은 채점시스템을 이용해서 문제의 풀이를 제출해야만 합니다.
  • 문제의 풀이는 하나의 소스코드 파일에 작성하여 제출해야 합니다.
  • 참가자들은 한 번의 소스 프로그램 제출이 끝난 후 1분이 경과한 후에야 다시 제출할 수 있습니다. 그리고 문제별로 최대 50번까지(컴파일 오류 포함) 제출할 수 있습니다.
  • 제출한 소스 코드는 C, C++, Java, Python 2, Python 3 중 하나로 작성되어야 합니다. 시험 내내 같은 언어를 사용할 필요는 없습니다.
  • 소스코드의 크기는 100,000 bytes 이하여야 하며, 코드를 컴파일 하는데 10초를 넘어서는 안 됩니다.
  • 각 문제마다 명시된 시간과 메모리 제한을 반드시 지켜야 하며, 그렇지 않을 시 오답 처리됩니다.