13. 답안 제출 & 채점 확인
● 정답(AC) : 정상적으로 테스트 케이스를 통과함.
● 틀렸습니다 : 테스트 케이스와 결과가 다름.
● 컴파일 에러 : 언어 선택, 잘못된 문법
● 런타임 에러 : 메모리 참조 오류
● 시간 초과(TLE) : 잘못된 풀이 OR 무한 루프(무한 재귀)
24. 테스트 케이스 만들기
● 잘못된 알고리즘, 실수, 꼼수 등을 잡아낼 수 있어야 함.
○ 시간 복잡도 상으로 시간 초과가 날 수 밖에 없는 데이터
○ 비교 횟수가 최대가 되는 데이터
○ 입력 예에서 나오지 않았던 데이터
○ 다른 알고리즘으로 풀리지 않도록 하는 데이터
● 일부 Case에서 오답/시간초과가 나는 알고리즘들을 다수 커버하
는 강력하고 일반적인 데이터를 생성하는 것은 하나의 문제
25. 테스트 케이스 만들기
● 테스트 케이스를 만드는 것이 문제 & 풀이를 만드는 것보다 어려
운 경우도..
ex) 점이 N개 주어지는 기하문제
○ N은 매우 크고 모든 좌표는 정수이고 범위는 매우 좁다.
○ 세 점이 한 직선위에 있지 않다.
○ 네 점이 한 원 위에 있지는 않다.
○ 모든 점은 e이상 떨어져 있다.
29. Good Problem?
● 앞서 얘기했지만 문제의 목적에 따라 달라짐
○ 다양한 알고리즘으로 풀 수 있는 것
○ 문제에 해결 방법/시간 복잡도 따로 적어두지 않기
○ 예외 케이스가 너무 많은 문제
○ 문제와 관련 없는 내용의 구현 최소화
30. 문제를 출제하면 좋은 점
● 문제를 풀면서 느끼지 못했던 많은 부분을 깨닫게 됨.
○ 해당하는 알고리즘에 대한 폭 넓은 폭넓게 알고 있어야 재미
있는 문제를 만들 수 있다.
○ 데이터 범위/문제 조건/시간 복잡도 등에 대하여 다시 생각
해보게 됨.
○ 구현하기 힘든 부분 등을 생각하게 됨.
31. 문제를 출제하면 좋은 점
● 출제자의 시점을 파악하는데 도움이 됨.
○ 무슨 심정으로 출제자는 이런 조건을 추가했을까?
○ 범위를 왜 더 크게 할 수 없었을까?
○ 왜 이러한 예제를 주었을까?
○ 어떠한 목적으로 출제한 문제일까?
32. How to Make a Problem?
● 문제 내용
● 테스트 케이스(input/output)
● 풀이 및 해답 소스
40. 참고 자료
● 김재홍 (xhark) - 알고리즘 문제 출제 전략
https://www.slideshare.net/startlinkio/startlinklive-
xhark
● 김성민(atez) - [OMS]프로그래밍 대회와 알고리즘
http://zeropage.org/seminar/107418