그런데 이번에는 부분점수가 그룹마다 점수 부여되는 것이 아닌 거 같은데요…

고둥부 1번을 예로 들면 이렇게 써있습니다.

“제출된 프로그램은 여러 개의 테스트 케이스로 평가되며, 맞은 테스트 케이스에 대해서 해당 테스트 케이스에 배정된 점수를 받는다. 모든 테스트 케이스를 맞았을 시 100점을 받는다. // 각 테스트 케이스에 대한 배점 정보와, 제약 조건은 다음과 같다: 그룹 1: 총 20점 상당의 테스트 케이스로 구성되어 있다. 각각의 테스트 케이스에서 모든 사람이 구입한 물건의 수가 항상 1개이다. (후략)”

여기서의 언급을 보면 분명 그룹(이전의 부분문제 1,2,3과 같은 것)과 테스트 케이스는 분명히 구분되어 있습니다. 그룹은 ‘총 n점 상당의 테스트 케이스로 구성’되어 있고, 이들에 대한 설명에서도 ‘각각의’ 테스트 케이스라고 언급하였으므로 하나의 그룹 안에 그 조건을 만족하는 여러 개의 테스트 케이스가 있다고 봐야할 것입니다.

또한 아래 사진을 보시면 당시 개발 환경과 동일한 구름 EDU에서 확인한 결과 각각의 입력들을 테스트케이스라고 칭하고 있는 것을 알 수 있습니다.

이를 종합하여 볼 때, 이번 대회 2교시 점수는 각각의 테스트 케이스에 대해, 즉 각각의 입력에 대해 개별적으로 점수가 부여되고, 이것이 실제 점수로 반영되었으며, 그래야 한다고 추론할 수 있습니다.

그리고 결정적인 증거를 제시하자면 고등부 1번문제는 그룹이 20점/36점/44점으로 구성되어 있는데, 저는 그룹 단위로 점수를 부여한다면 나올 수가 없는 점수인 50점이 나왔습니다.

그렇다면 당시 채점 결과와 실제 결과가 다르게 나온 분들은 어떻게 된 것일까요?

물론 실제로 채점에 문제가 있었을 가능성도 배제할 수는 없지만, 제대로 된 대회라면 적어도 채점에는 문제가 없어야 되지 않을까 생각하기 때문에 채점이 정상적으로 되었다고 가정하고 생각해보면 첫번째로 제출한 코드가 시간 제한에 아주 근접하게 문제를 풀어냈을 경우입니다. 1차 대회 응시자 유의사항에는 다음과 같이 적혀있습니다.

“□ 재채점 및 동점자 처리
○ 참가자들의 점수는 다음과 같은 경우 채점할 때마다 달라질 수 있습니다.
(1) pseudo-random number generator를 사용해서 난수를 발생시킨 경우, (2) 실행시간이 시간제한에 매우 근접한 경우
○ 위의 경우 각 제출된 풀이에 대해서 재채점이 있을 수 있으며, 재채점 여부와 그 횟수를 결정하는 권한은 심사위원회에 있습니다. 최종 점수는 재채점 점수 중에서 최저점수로 합니다. ”

이처럼 심사위원회의 결정에 따라 재채점을 진행할 수가 있고, 최종 점수는 여러 번의 결과 중 최저점이 부여됩니다. 그렇기 때문에 시험 당시 봤던 점수와는 차이가 있을 수 있습니다.

두번째는 확실하지는 않은 가설이지만, 마지막 채점 이후 코드를 변경하고 저장만 했을 경우입니다. 이 경우는 어느 것을 기준으로 한다고 공지가 되지 않았기 때문에 확신할 수는 없지만, 만약에 의도하였든 의도하지 않았든 소스코드에 변경이 있은 후 저장 버튼만 눌렀을 때 그 결과가 바뀌었을 수도 있습니다.
수정합니다. https://koi.or.kr/board?uid=517&mod=document 참고

물론 주최 측이 기존의 정올과 채점 기준이 달라진 점을 공지하였다면 이러한 혼란은 없었을 것이란 점에서 아쉬움이 남습니다. 또한 앞서 말했듯 채점이 잘못됐을 가능성 역시 배제할 수 없기 때문에 주최 측은 최대한 빠른 시일 내에 이러한 사항들에 대해 공지가 있어야 할 것으로 생각이 됩니다.