새발블로그
EUG
새발블로그
테스트케이스 본문
1. 단순케이스 (Normal Case)
- 가장 기본적인 입력을 넣어 프로그램이 제대로 동작하는지 확인.
2. 히든케이스 (Hidden Case)
- 공개되지 않은 테스트케이스로, 보통 경계값이나 엣지케이스, 특수상황을 포함.
3. 최대케이스 (Max Case)
- 문제 조건에서 가능한 가장 큰 입력을 넣어 시간초과를 확인하는 테스트.
4. 경계값 테스트 (Boundary Value Test)
- 입력 범위의 최소값과 최대값을 테스트하는 기법.
- 예: 1 ≤ 배열 길이 ≤ 100 일 때, 배열 길이 1개와 100개 테스트.
5. 엣지케이스 (Edge Case)
- 극단적이거나 예상치 못한 입력을 넣어 코드의 취약점을 확인하는 케이스.
6. 예외케이스 (Exception Case)
- 잘못된 입력이나 특이한 상황을 넣어 예외 처리 여부를 확인.
- 예: 음수 나이, NULL 값, 너무 긴 문자열 등.
7. 특수케이스 (Special Case)
- 문제 특성상 특별히 신경 써야 하는 입력.
- 예: 정렬된 배열, 중복된 숫자만 있는 배열 등.
활용 방법
엣지케이스 활용
- 극단적인 값이나 특이상황을 넣어 코드가 예상치 못한 상황에서 어떻게 동작하는지 확인.
- 예시:
- 빈 배열, 최소/최대 크기 입력
- 특수 문자 입력 등
최대케이스 활용
- 입력 크기가 클 때 시간초과가 발생하는지 확인.
- 1초 내 처리 가능한 최대 값은 10^8 기준.
- 시간복잡도 체크:
- O(N^2)는 N=10^4 정도까지만 허용.
- O(N log N)은 N=10^6까지 처리 가능.
시간복잡도별 실행 가능 범위 (1초 기준)
| 시간복잡도 |
최대 실행 값 |
설명 |
| O(1) |
제한 없음 |
상수 시간 |
| O(logN) |
10^18 |
로그 시간 |
| O(N) |
10^8 |
선형 시간 |
| O(N log N) |
10^6 |
정렬 포함 |
| O(N^2) |
10^4 |
이중 루프 |
| O(2^N) |
20 |
브루트포스 |
| O(N!) |
10 |
순열 탐색 |
최적화 방법
- O(N^2) → O(N log N):
- O(N log N) → O(N):
- O(2^N) → O(N log N) / O(N):