채점 결과와 디버깅
실패 입력 줄이기
틀리는 입력을 찾았다면 같은 오류가 재현되는 범위에서 입력을 줄여 원인을 확인하세요. 줄인 입력의 정답을 직접 계산해 출력과 비교합니다.
실패 입력이 없다면 최소 크기, 값의 경계, 중복값과 정렬 순서를 나누어 검사하세요. 그래프의 연결 여부나 구간의 포함 관계처럼 풀이가 가정한 조건도 확인합니다.
작은 입력의 정답을 완전 탐색으로 구할 수 있다면 풀이의 출력과 비교합니다. 다른 결과가 나온 입력을 줄이면 놓친 조건을 찾기 쉽습니다. 테스트 통과만으로 모든 입력의 정답을 보장하지는 않습니다.
결과별 점검
| 결과 | 먼저 확인할 항목 |
|---|---|
| WA | 지문의 조건과 코드의 가정이 같은지 확인한 뒤 최소 반례를 만듭니다. 정수 나눗셈, 부등호, 인덱스 범위, 중복 처리, 출력 순서·공백처럼 작은 차이도 함께 확인합니다. |
| TLE | 최대 입력에서 실제 반복 횟수를 식으로 세어 봅니다. 겉으로 한 번 도는 반복문 안에서 정렬·탐색·문자열 복사·컨테이너 연산이 반복되지 않는지 확인하고 언어별 실제 시간 제한도 함께 봅니다. |
| MLE | 원소 개수 × 원소 크기로 대략적인 저장량을 계산합니다. 큰 2차원 배열, 중복된 그래프 간선, 재귀 스택, 컨테이너 오버헤드와 동시에 유지되는 임시 복사본을 확인합니다. |
| RTE | 배열·벡터 범위, 빈 컨테이너 접근, 0으로 나누기, 지나치게 깊은 재귀, 잘못된 반복자와 언어별 예외를 확인합니다. C/C++에서는 undefined behavior가 로컬에서 우연히 정상처럼 보일 수도 있습니다. |
| CE | 제출 언어를 올바르게 선택했는지 확인하고 컴파일 오류의 첫 원인부터 읽습니다. 로컬에서만 제공되는 헤더·라이브러리·컴파일 옵션에 의존하지 않았는지도 실행 환경과 비교합니다. |
| SE | 코드의 정답 여부를 확정한 판정이 아닙니다. 같은 문제에서 시스템 오류가 반복되거나 재현 정보가 있다면 제출 번호와 상황을 정리해 건의로 알려 주세요. |
중간 계산과 반복 비용
C/C++에서는 두 int를 곱한 뒤 long long에 저장해도 곱셈이 먼저 넘칠 수 있습니다. 1LL * a * b처럼 곱하기 전에 자료형을 바꿉니다.
반복문 안의 정렬·문자열 복사·컨테이너 연산도 수행량에 포함합니다. 여러 테스트케이스가 있다면 상태 초기화 비용과 이전 값이 남는지도 확인하세요.
재제출 전에는 실패했던 입력과 예제를 다시 실행하고 디버그 출력을 제거하세요. 제출 언어와 실행 환경도 확인합니다.