Update history:

1. 연습용 추가 문제

stage3_problems.zip

위 파일을 다운로드해서 압축을 해제하면 총 3개의 json파일을 얻을 수 있습니다. 각각의 json파일은 참가팀이 알고리즘을 개발시에 활용할 수 있는 연습용 문제들입니다. 3개의 문제들의 특성(주문 개수, 고정비 등)은 모두 상이합니다. 공개된 문제들은 실제 주문 데이터를 바탕으로 익명화를 위한 가공을 거쳐서 만들어졌습니다.

이번에 공개되는 3개의 연습용 문제들과 예선/본선 단계에서 공개된 27개의 문제, 그리고 예선 평가에 사용된 세 문제 등 총 30개의 문제들을 연습용 문제로 사용하시면 됩니다.

<aside> 💡 알고리즘을 제출하면 위에 공개만 문제들이 아닌 별도의 숨겨진 문제들을 이용해서 평가가 이루어짐. 본선 평가용 숨겨진 문제들은 공개된 문제들과 비슷한 특성을 가지며, 평가용 문제의 특징(주문 개수 등)은 공개하지 않음

</aside>

2. 알고리즘 시간제한

결선의 알고리즘 실행시간 제한은 문제마다 다르게 주어집니다. 각 평가 문제마다 제한시간이 주어지고 (algorithm() 함수의 timelimit 파라메터**) 제한시간의 범위는 최소 15초(timelimit=15)에서 최대 8분(480초, timelimit=480)까지 입니다.** 알고리즘이 실행시간 제한을 넘기면 문제풀이를 강제로 종료하고 그 문제에 대해서는 최하 점수(-1점)을 받습니다. 각 팀별 득점 산출 방식은 예선과 동일합니다.

<aside> 💡 평가용 문제의 실행제한 시간은 공개하지 않음(단, 결선이 종료된 후 공개). 마찬가지로 공개된 연습용 문제들도 고정된 실행시간 제한은 없음. 즉, 공개된 연습용 문제들을 대상으로 다양한 실행시간 제한을 설정하여 알고리즘의 성능을 평가하고 개선해야 함

</aside>

<aside> 💡 알고리즘의 내부에서 지속적으로 실행시간을 체크하여 제한시간을 넘지 않아야 함. 예를 들어 알고리즘 내부에서 사용하는 특정 함수의 시간이 오래걸릴 수 있는 경우 그 함수 내부에서 제한시간을 체크하지 않는다면 알고리즘의 실행 시간이 제한시간을 넘길 수 있음. 참가팀은 이런 부분에 유의하여 알고리즘이 제한 시간을 넘지 않도록 할고리즘의 실행단계 마다 충분한 여유시간이 있는지 확인해야 함

</aside>

<aside> 💡 참가팀이 알고리즘을 개발하는 환경과 평가 서버의 환경 차이로 발생할 수 있는 실행 시간차이도 주의필요. 특히 같은 알고리즘을 같은 서버 환경에서 실행하더라도 알고리즘 실행시간에는 약간의 차이가 발생할 수 있는데, 이점을 고려해야 함

</aside>

3. Randomized 알고리즘

알고리즘에서 randomness를 사용하는 경우에는 알고리즘의 실행시마다 결과가 다르게 나올 수 있습니다. 알고리즘 평가는 알고리즘을 제출한 직후 단 한번만 이루어집니다. 따라서, 같은 알고리즘을 여러번 재 제출하면 제출 시마다 다른 난수(random number)를 얻어 상이한 결과를 얻을수도 있습니다. 주최측은 제출한 알고리즘이 특정 난수조건(random seed)를 가지는 것을 보장하지 않습니다. 즉, 알고리즘의 평가 결과는 알고리즘이 난수를 사용하는 경우 항상 같다는 것을 보장하지 않습니다.