반례 찾기
testcase.ac는 제출 코드와 정답 코드를 같은 입력에서 실행하고, 출력이 달라지는 입력을 찾습니다.
사용 방법
등록된 문제로 실행하기
홈 화면에서 문제 번호, 문제 유형, 제목으로 검색할 수 있습니다: https://testcase.ac/
문제에서 반례 찾기를 실행하려면 리포지토리의 문제 디렉터리에 다음 파일이 필요합니다.
correct_*: 정답 코드가 하나 이상 필요합니다.generator_*,singlegen_*,testcase_*.txt: 입력을 만드는 파일이 하나 이상 필요합니다.checker.cpp: 체커는 스페셜 저지 문제에서는 필요합니다. (metadata.yaml에서isSpecialJudge: true로 설정)
반례 찾기를 실행할 수 있는 문제라면, 제출 코드를 붙여넣고 “반례 찾기” 버튼을 눌러 반례를 찾을 수 있습니다.
저장된 문제 없이 실행하기
링크: https://testcase.ac/custom-invocation
커스텀 실행 페이지에서는 리포지토리에 등록되지 않은 코드도 실행할 수 있습니다. 제출 코드, 정답 코드, 실행 제한, 제너레이터, 텍스트 테스트케이스, (선택) 체커를 직접 입력합니다.
실행 방식
제너레이터, 단일 제너레이터, 텍스트 테스트케이스로 입력을 만든 후, 각 입력으로 제출 코드와 정답 코드를 각각 실행합니다.
각 입력에 대해 제출 코드와 정답 코드의 출력을 비교합니다. 체커가 없는 경우 BOJ와 비슷한 방식으로 출력을 직접 비교합니다. 공백과 개행 문자의 차이를 일부 무시하고, 출력 끝의 공백 문자는 무시합니다. 체커가 있는 경우, 체커가 입력, 제출 코드 출력, 정답 코드 출력을 받아 제출 코드의 출력이 정답으로 인정되는지 판단합니다.
결과 보기
반례를 찾으면 오답 출력 예시와 실행 실패 예시를 나누어 보여줍니다. 각 종류마다 최대 3개까지 보여주며, 중복을 제거한 뒤 짧은 예시부터 정렬합니다.
반례를 찾지 못했다는 결과는 시도한 입력에서는 제출 코드와 정답 코드가 모두 정상적으로 실행되고 같은 출력을 냈다는 뜻입니다. 그 결과가 제출 코드가 항상 맞다는 증명은 아닙니다.
공통 제약
- 코드 컴파일 시간을 포함해 반례 찾기 시간은 최대 90초로 제한됩니다.
- 생성한 입력에서 반례나 실행 실패가 너무 자주 나오면, 입력한 시도 횟수보다 적은 횟수만 시도하고 반례 찾기를 중단할 수 있습니다. 이는 반례 찾기가 너무 오래 걸리는 것을 방지하기 위함입니다.