맞춤 검사기 만들기
Last updated: July 9, 2026
맞춤 검사기 코드는 3부분으로 구성됩니다. 수정할 수 없는 두 부분은 헤드 & 테일 섹션이라고 합니다. 맞춤 검사기의 수정 가능한 부분은 본문 섹션이라고 합니다. 본문 섹션에는 run_custom_checker()라는 메서드가 있습니다. 이 메서드는 TestStructure 객체와 ResultStructure 객체라는 두 개의 인수를 받습니다. 이 메서드는 후보자의 제출이 실행된 후에 실행됩니다. 각 테스트 케이스는 후보자의 제출 결과를 평가합니다.

테스트 구조
testcase_id
[int] 테스트 케이스의 ID
testcase_input_path
[str] 테스트 케이스 입력 파일 경로
testcase_output_path
[str] 문제 해결자가 생성한 테스트 케이스 출력 파일 경로
testcase_expected_output_path
[str] 일치시켜야 하는 테스트 케이스 예상 출력 파일 경로
metadata_file_paths
[list<str>] 질문 메타데이터 파일 경로 (추가 파일은 보통 학습 세트 정의에 사용됨)
submission_code_path
[str] 제출 소스 코드 파일 경로
testcase_result
[bool] 테스트 케이스 출력이 테스트 케이스 예상 출력과 일치하면 True로 설정. 일치는 줄 단위로 수행됨
testcase_signal
[int] 테스트 케이스 프로세스의 종료 코드
testcase_time
[float] 테스트 케이스 프로세스가 소요한 시간(초)
testcase_memory
[int] 바이트 단위로 결정된 테스트 케이스 프로세스의 피크 메모리
data
[str] <미래 사용>
결과 구조
result
[bool] 테스트 케이스 결과 할당. True는 성공을 의미. False는 실패를 의미
score
[float] 테스트 케이스 점수 할당. 0에서 1 사이로 정규화됨
message
[str] 테스트 케이스 메시지 할당. 이 메시지는 문제 해결자에게 표시됨.
테스트 케이스 결과는 ResultStructure 객체에 값을 설정하여 결정됩니다.
결과: 최소 컷오프 점수에 도달하면 True로 설정하고, 그렇지 않으면 False로 설정합니다. 이는 이 테스트 케이스를 통과했는지 여부를 결정합니다.
점수: 이것은 정규화된 점수로, 전체 점수를 가져오고 0.5는 절반의 점수를 가져옵니다.
메시지: 이것은 테스트 케이스 결과에 관한 메시지를 전달하는 데 사용할 수 있는 사용자 정의 메시지입니다, 예를 들어, “컷오프에 도달하지 못했기 때문에 실패했습니다."
참고: run_custom_checker 함수에서 STDOUT에 아무것도 출력하지 마십시오.
100 이하의 5개 소수 목록에 대한 커스텀 체크
import re
# 주어진 정수가 소수인지 판단하는 함수def is_prime_number(x):
if x >= 2:
for y in range(2, x):
if not x % y:
return False
else:
return False
return True
def run_custom_checker(t_obj, r_obj):
result_data = ''
try:
result_data = open(t_obj.testcase_output_path, 'r').read()
except IOError:
r_obj.result = False
r_obj.score = 0
r_obj.message = '결과 파일 읽기 오류'
return
# 결과 파일의 내용 읽기
values = re.split(' |\n', result_data)
# 모든 값이 고유한지 확인
uniq_values = set(values)
# 소수의 개수 세기
correct_values = 0
for value in uniq_values:
if value and is_prime_number(int(value)):
correct_values = correct_values + 1
# 성공 여부를 결정하는 컷오프 점수
if correct_values > 3:
r_obj.result = True
else:
r_obj.result = False
r_obj.score = correct_values / 5
r_obj.message = '정확한 값은 ' + str(correct_values) + '개 / 5개입니다'결과
이와 유사한 자바 커스텀 체크는 -https://gist.github.com/patilarpith/7b17b5afb9218f770ebc528747017d25
근사 해결책 질문 채점
대략적인 해결책 질문은 사용자 지정 검사기를 기반으로 자동 채점됩니다. 이들은 테스트 케이스를 사용하여 최종 점수를 결정하는 코딩 질문과 유사하게 채점됩니다. 질문 작성자는 코딩 질문에 대한 입력-출력 쌍이 포함된 개별 테스트 케이스를 정의합니다. 각 테스트 케이스에는 할당된 점수가 있으며, 총 점수는 모든 테스트 케이스 점수의 합입니다. 사용자 지정 검사기를 사용하는 경우, 각 테스트 케이스마다 한 번씩 실행됩니다. 테스트 동안, 후보자의 코드는 각 테스트 케이스 입력으로 테스트됩니다. 사용자 지정 검사기는 각 테스트 케이스를 평가하고 점수를 매기며, 후보자의 최종 점수는 이 점수들의 합입니다.
관련 기사: