한국정보올림피아드
1. 개요
2018년까지 국내 과학 올림피아드 가운데 유일하게 대한민국 정부에서 주관했던 올림피아드 대회이다.[1] 초/중/고등학생이 참가하는 컴퓨터 프로그래밍 대회이다. 2018년까지는 과학기술정보통신부에서 주최하였지만, 2018년 출제 오류 사건이 발생하여, 2019년부터는 한국정보과학회에서 주최 및 주관을 하게 되었다. 한국코드페어는 새로 만들어진 별도의 대회이다.
2. 상세
1984년 전국 퍼스널컴퓨터 경진대회라는 이름으로 처음 개최되었으며, 지금과는 달리 국가주도로 거창하게 치러졌다. 대통령상, 국무총리상 등 상의 명칭조차 거창했으며 대통령상 상금이 200만원이였다. 당시 대학 1학기 등록금이 50만원 남짓으로 200만원은 2017년 물가로 2000~3000만원 정도 된다. 또한 KBS TV에서 2시간동안 생방송으로 중계해줄 정도였다. 그리고 대회 진행 중 정전되어 모든 컴퓨터가 꺼진 것도 생방송으로 중계되었다. 특히 당시 대통령이 '''직접 대회장을 방문'''했다. 관람석의 관중들에게는 컴퓨터 40대가 경품으로 주어졌는데 당시 컴퓨터 한 대의 가격은 대학 한학기 등록금에 육박할 정도였다. 정부가 얼마나 공을 들인 대회인지 짐작할 듯. 하지만 90년대 들어서는 지금과 같이 조용히 치러졌으며, 1996년에 이름이 현재와 같이 바뀌었다.
공과계열 학생들에게 대학 특기자전형의 가장 큰 무기이다. 전국 수상경력이 있다면, 내신이 좀 낮아도 높은 학교를 갈 수 있는 경우도 있다. 특히나 이쪽 학생들은 의대같은거 관심없고 골수 공돌이들이라서 대학에서 좋아한다. 게다가 이전엔 이런 교외대회 실적을 자소서 등에 기재하는 것이 '''공식적으로는''' 금지였던 반면, 2018년 대입부터는 소프트웨어 중점 대학에 소프트웨어 특기자 전형이 신설되어서 대회실적을 기재할 수 있게 되었으니 대입에 더욱 유리할 것으로 보인다.
초등부는 대개 초5 / 초6만 출전해 6학년이 수상권 대부분을 차지하고, 중등부는 초등부에 비해 고르게 상을 받지만 학년이 높을 수록 수상권에 많이 들어가는 편이다. 고등부는 인프라가 좋고, 고3이 출전하기 상대적으로 수월한 영재고나 과학고가 많이 쓸어간다. 특히 경기과고.
여담으로 공식 홈페이지, 특히 커뮤니티 관련 부분은 대회시즌을 제외하고는 이용이 저조해서인지 거의 관리되지 않는 수준이다. 그나마 있던 게시판들도 후술할 병크가 터지면서 이의제기 및 Q&A를 이메일로 답장을 해주는 방식으로 변경되었다. 커뮤니티 게시판은 남아있긴 하지만 무슨 일이라도 터지면 칼같이 닫아버린다(...).[2]
콘텐츠 뱅크에 있는 교재, 온라인 강의, 기출문제[3] 등은 대회에 도움될 만한 것들이니 참가할 생각이 있다면 보는 것이 좋다. 공식 초급, 중급, 고급 교재들은 중고등학교 선생님들에 의해서 집필되었다.[4]
2019년부터는 '''한국코드페어'''라는 이름의 새로운 대회가 과학기술정보통신부(前 미래창조과학부)에 의해 신설되었으며, 2019년부터 '''한국정보올림피아드'''는 한국정보과학회에서 주관한다.
2019년 1차 대회에서는 원래 처럼 Ubuntu가 설치된 가상머신으로 시험을 치루려 하였지만 전국의 고사장 사정에 의해서 경시 사이트에서 프로그래밍을 하게 되었다, 하지만 이 공지가 시험일이 1~2주 쯤 남은 상태에서 공지되어 학생들과 학부모들은 갑작스러운 환경 변화의 적응 하지 못 할 것을 걱정하고 있다.[5]
하술되는 사건사고 항목을 열람하면 알 수 있듯 주최측의 운영 수준은 말할 필요가 없이 처참하다. 최근에는 거의 매년 사고를 일으키는 수준.
2.1. 경시 부문
수학적 지식과 논리적 사고능력을 필요로 하는 알고리즘과 자료구조를 적절히 사용하여 프로그램 작성 능력을 평가하는 것으로, 시/도별 지역대회를 거쳐 전국대회를 여는 형식이다. 경시대회 우수 시상자에게는 국제 정보 올림피아드(IOI)의 교육생 자격이 주어진다. 2010년 들어서 대회 우수 시상자에게 주어지던 교육생 자격이 따로 면접 및 문제 풀이를 하여서 주어지게 변경되었으나, 2015년부터는 KOI 성적 우수자 몇몇에게도 교육생 기회를 주게 되었다. 2012년부터는 중고등학교 은상 이상의 수상자에게 APIO(아시아태평양정보올림피아드)에 출전할 기회를 주고 있다.
2.1.1. 1차 대회 (구 지역 대회)
2019년도부터 한국정보과학회 주관 대회로 바뀌고 명칭이 '''1차 대회'''로 되었다. 이전까지 없던 전형료가 생겼으며, 시험 방식 또한 변경되었다. 전국 각지의 고사장에서 구름EDU 플랫폼을 이용하여 진행이 되며, '''실기 문제가 부활했다'''. 총 3가지의 유형이 있으며, 첫번째는 '''기존의 사고력 문제 스타일'''(전체 배점의 25~30%), 두번째는 '''비버 챌린지 스타일'''(전체 배점의 15~20%), 그리고 마지막으로 '''실기 문제'''(전체 배점의 50~60%)로 이루어져 있다. 실기 문제의 경우 기존의 C/C++ 뿐만이 아니라 Python이나 Java의 사용도 가능하다. 이전과 다르게 C/C++의 문법 지식을 물어 보거나 코드의 실행 결과를 묻는 문제는 출제되지 않는다.
시상 방식 또한 변경되었다. 초등부 및 중등부의 경우 '''전국 부문'''(금, 은, 동, 장려)과 '''지역 부문'''(금, 은, 동, 장려)으로 나누어 시상하되, 전국 부문과 지역 부문은 중복 수상이 가능하다. 고등부의 경우 '''전체 응시자 부문'''(금, 은, 동, 장려)과 '''일반고 부문'''(금, 은, 동, 장려)으로 나누어 시상하되, 역시 전체 응시자 부문과 일반고 부문은 중복 수상이 가능하다. 그런데 이 부분에서도 약간의 논란이 있다. 일반고 부문이 일반고만 수상할 수 있는 것이 아니다. 영재학교와 과학고등학교를 제외한 전체 응시자가 수상할 수 있다. 즉, 영재학교와 과학고등학교의 학생들은 전체 응시자 부문만 수상이 가능하고, 일반고 부문은 일반고 뿐만이 아니라 특성화고도 수상이 가능한 것이다. 선린인터넷고등학교와 같은 학교들이 일반고 부문을 휩쓸까 우려되었다.[6] 하나 이상의 부문에서 동상 이상을 수상한 수상자는 2차 대회 응시 자격이 주어진다.
=====# 과거 진행 방식(~2018) #=====
2018년도까지는 프로그래밍 및 수리능력을 알아보기 위한 필기시험으로 진행이 되었다. 2017년 기준 초등부 40문제, 중등부 50문제, 고등부 50문제를 3시간 안에 풀어야 한다. 시험 시작 2시간 이후부터 퇴실할 수가 있으며, 시험종료 10분 전부터는 퇴실할 수 없다. 준비물은 접수증, 신분증(여권, 학생증, 청소년증, 학교장 확인서 등), 마킹펜을 포함한 필기도구, 그리고 문제풀이 시 필요한 용지. 접수증은 사전에 홈페이지에서 출력해와야 하며 마킹펜과 용지는 없는 경우 주최측에서 제공해준다. 화장실은 시험장 내 감독에게 말하고 복도 측의 감독과 동행해서 가야한다. 고등부의 경우 평소 보는 모의고사와는 달리 단답형을 표기할 때, 비는 앞자릿수의 0도 표기해야한다는 점에 주의. 예시로 답이 7이라면 007로 표기해야한다.[7]
문제는 객관식 오지선다 35~43문제, 단답형 5~7문제로 객관식보다 단답형의 배점이 높은 편이다. 객관식은 수리영역 15문제에(초등부는 10문제, 2017년 기준) 나머지가 프로그래밍 문제이고, 단답형은 수리영역과 프로그래밍 문제의 비율이 반반을 이룬다. 수학 분야에는 조합론을 비롯한 다양한 분야의 문제가 출제되며, 한국수학올림피아드와 같이 머리를 쓰는 문제가 주를 이룬다. 프로그래밍 분야의 문제는 2017년 현재 대회 공식 언어인 C/C++로 짜인 소스의 분석, 즉 해당 소스의 작동의 예측을 기초로 하고 있다. 문제의 순서는 대체로 난이도 순이기 때문에 초반에는 쉬운 문제가 많으나, 갈수록 각종 알고리즘과 구현 테크닉·코딩 실수 파악·수학(특히 정수론 및 조합)과의 연계 등 수준 높은 문제들이 속속 등장하기 때문에, 뒤쪽으로 갈 수록 프로그래밍 문제에 익숙하지 않은 사람들은 버틸 수가 없다. 객관식 마지막 2문제는 보통 전년도 전국대회[8] 문제와 그에 대한 풀이 소스 코드를 주고 질문에 답하는 문제이다. 보통 빈칸에 들어갈 내용을 묻는 1문제, 실행 결과를 묻는 문제가 1문제 출제된다.
지금과 같은 방식으로 지역대회가 개최되기 시작한 건 2016년부터로, 2015년까지는 교육지원청 단위로 필기 지역예선을 치루고 시·도별로 실기 지역본선을 보던 방식이었다.[9] 실기 지역본선의 경우 각 컴퓨터에 필요한 개발 환경과 암호가 걸린 HWP 문제 파일을 미리 마련해 두고, 대회 시작 시간에 해당 파일의 암호를 안내하며, 대회가 종료되면 배부받은 개인별 USB에 소스를 복사하여 USB째로 제출하는 방식으로 진행되었다. 때문에 간혹 수학 문제에서의 높은 득점으로 프로그래밍 실력이 한참 부족함에도 지역예선을 합격하는 경우도 생기곤 했지만, 2016년부터는 지역본선이 사라지는 바람에 변별력을 기른다는 목적으로 수리영역의 비중 및 난이도가 낮아지고 프로그래밍 문제의 난이도가 상승하여, 수학과 찍기점수만을 노려 나가기는 사실상 불가능해졌다. 대회 방식의 변경에 대해 명확하게 발표된 이유는 없지만, 각 지자체 별로 실기대회 환경을 준비할 만한 여건과 전문성 있는 인력이 부족했으며, 2015년 지역본선에서 벌어진 파일입출력 사태로 인해 그 점이 크게 부각되었기 때문이 아니겠냐는 의견이 많다.
2017년도 지역대회에서는 중등부 문제와 고등부 문제가 분리됨에 따라 고등부 난이도가 상승해 고등부에서는 역대급 헬게이트가 펼쳐졌다. 수학 문제고 프로그래밍 문제고 할 것 없이 난이도가 대폭 향상되었다. 웬만한 지역은 전국 본선 진출컷이 50점대, 경기과학고의 굇수가 몰려있는 경기도 지역마저도 60점대로 낮아질 것으로 예상되었다.[10] 중등부 문제도 난이도가 상승해 본선진출컷이 50점 중반이 되었다.
2018년도 지역대회에서 공교육 위주로 문제가 하향평준화 된다고 한다. 그러나...
밑의 항목 참조.
2015년부터 수험자의 항의가 빗발쳐 정보올림피아드 페이지 이의 제기란이 동결되었다.
그렇지만 2018년 KOI지역 대회 문제 출제 오류로 인하여(밑의 항목 참조) 엄청난 항의가 들어왔고
그걸 무시하던 KOI는 뒤늦게 사태를 파악하고 이의 받는 기간을 늘이고 정보올림피아드 페이지 이의 제기란을 다시 부활시켰다.
2.1.2. 2차 대회 (구 전국 대회)
전국 본선 대회는 2004년부터 서울 용산구에 있는 백범김구기념관에서 치뤄졌는데[11] , 2010년부터는 정책이 바뀌었는지 매년 다른 곳에서 개최되었다. 자세한 개최지는 문서 하단의 역대 대회 목록 참고. 강원도, 충청도, 인천광역시, 전라남도, 경상도에서 각각 한 번 이상 개최되었다. 그런데 모두의 예상을 깨고 2016년과 2017년의 개최지가 모두 2015년과 같은 경일대학교로 지정되었다. 어째서 경일대학교에서 개최되는 것인지, 앞으로도 고정되는 것인지에 대해서는 명확한 발표는 없다. 대회를 주최하는 한국정보화진흥원의 소재지와 차로 약 15분 거리로 가깝기 때문이 아니겠냐는 의견도 있다. 2018년에는 서울 고려대학교로 결정되었다.
전국 본선은 4문제를 주고 시험을 치른다. 지역 예선만 해본 일반인들은 도대체 문제가 무엇을 요구하는지, 어떻게 풀어야 하는지도 모르는(...) 상황이 발생하기도 한다.
2013년부터 대회의 형식에 전체적인 변경이 있었다. 일단 Windows에서 Visual Basic 6.0/Visual C++ 6.0 기반의 개발 환경이 Ubuntu 12.04에서 g++ 4.8.3 컴파일러와 Code::Blocks 혹은 Eclipse 에디터를 이용하는 개발 환경으로 바뀌었으며, 리눅스에 익숙하지 않은 많은 참가자가 혼란을 겪었다. 하지만 2018년에는 공지사항에 Ubuntu12.04 내장 C언어 라고 하는 일이 일어났다. 기존에는 전용 제출 프로그램에 자신의 소스와 실행 파일을 등록하고 컴퓨터를 켜둔 채로 대회장을 나가면, 대회 종료 이후 이 파일들이 네트워크를 통해 일괄적으로 제출 및 채점되었다. 또한 정답이 나온 테스트 케이스의 갯수에 비례하게 점수를 부여하는 방식이었다. 그러나 변경 이후, CMS(Contest Management System)를 사용하는 시스템으로 변경되었다. CMS는 브라우저로 접속하여 소스 제출을 통해 실시간 채점이 가능하여, 자신의 프로그램의 실행 결과(정답·오답·시간 초과·메모리 초과·런타임 에러 등)를 바로 알 수 있다는 장점이 있다.[12] 사실상 대부분의 온라인 저지[13] 및 온라인 대회 사이트에서 이미 실시간 채점을 기본으로 하고 있었기 때문에 이 변화를 반기는 목소리가 컸다. 문제당 20회의 채점 제한이 있고, 같은 점수의 경우에는 채점을 적게 한 학생을 높은 순위로 취급하므로, 채점은 신중하게 하게 되는 경우가 많다.[14] 실제로 2013년 고등부에서는 채점 횟수 때문에 먼저 만점을 찍은 학생보다 나중에 만점을 달성한 학생이 대상을 가져가는 경우도 있었다. 2015년에도 금상과 은상 컷에 사람들이 많이 몰려서 채점 횟수로 갈렸다. 하지만 2019년에는 제출횟수가 아닌 마지막 제출시간이 빠른 학생을 높은 순위로 취급하는 것으로 바뀌었다.
이러한 대회 형식의 변화 내용을 설명하기 위해서 2013년에는 전국 각지에서 설명회를 열었다. 주로 많은 참가자가 처음 접해볼 리눅스 환경의 사용방법 등을 안내했으며, Visual C++ 6.0과 g++ 4.8.3 사이의 문법 차이 등을 안내하였다.[15][16] 참가자들의 혼란을 줄이기 위해 대회에서 사용할 우분투 환경의 VirtualBox 가상머신 이미지를 배포하였으며, 현재도 한국정보올림피아드 홈페이지 자료실에 올라와 있다.
상은 대·금·은·동·장려상을 수여한다. 2015년부터는 우수자에 한해 국제 정보 올림피아드 교육생 기회도 부여한다. 국제 정보 올림피아드 교육생은 2015년 기준 처음반 50명, 계속반 10명 정도를 뽑는데, 계속반은 처음반에 있었던 학생들 중 상위권 학생들을 뽑아서 운영하고 (KOI와 직접 관계 없음), 처음반 중 20명은 선발로 30명은 KOI로 들어갔다고 카더라.
2018 KOI에서는 지역 본선에서 큰 사건이 있었기 때문에 전국 대회도 다름없을 거라는 부정적인 평이 많았다.
그리고 예비소집 날, Code::blocks에서 글꼴이 깨지고[17] , 일부 컴퓨터에서는 디버깅마저 안 되며, 채점 한 번에 4분이 걸리는 경악스러운 헬게이트가 펼쳐졌다. 심지어 마우스나 키보드의 기종도 제각각이라 지역 대회 때 정신을 차리지 못했다는 평이 많다.
이때 글꼴이 깨지자 주최측은 다음과 같은 말을 남겼다.
대망의 전국 대회날, 채점 프로그램에 오류가 발생했다고 한다. 시험 시간이 30분 연장됐다. 그에 관련되어 사람들이 이의제기 한 내용이다. 한국정보올림피아드 의견게시판어차피 내일 오면 다른 컴퓨터라서 글씨 깨져 있을테니까, 글씨 신경 쓰지 말고 하세요.
2019년도에는 고사장이 한 곳으로 정해지는 것이 아닌 전국 각지의 고사장에서 응시할 수 있다. 또한, 역시 전형료가 생겼다. 초등부 금상 이상, 중고등부 은상 이상 수상자는 NHN 최우수 초청 대회에 참가할 수 있다.
시험 환경 또한 변화하였다. 기존의 Linux 환경이 아닌 Windows의 Google Chrome에서 기존의 CMS 환경에서 진행되며, 역시 C/C++ 뿐만이 아니라Python, Java를 활용한 개발도 가능하다. C/C++의 경우 Code::Blocks 17.12와 Dev-C++ 5.11을 활용할 수 있고, Python의 경우 Python 2.7.x, Python 3.7.x를 활용할 수 있으며, Java의 경우 OpenJDK 8, Eclipse를 활용할 수 있다.
2.1.3.
2차 대회에서 초등부 금상 이상, 중고등부 은상 이상 수상자를 대상으로 NHN에서 초청하여 개최되는 대회이다. 그러나 코로나바이러스감염증-19로 인해 연기를 계속 하다가 아예 '''취소'''를 하는 판단을 하여 사실상 2019년 신설이지만 2021년에 하는 아이러나한 상황이 연출되었다.
2.2.
개인 또는 팀이 직접 개발한 소프트웨어를 평가하는 부문으로, 프로그램의 구조와 알고리즘보다는 창의성과 실용성을 중점으로 평가하며 17년도 이전에는 지역 예선이 시/도에서 처리됐었으나 17년도 부터는 NIA에서 서류 심사를 거쳐 본선 진출을 결정한다.
우수 시상자에게는 국제과학기술경진대회(ISEF) 의 컴퓨터 공학 부문 참가 후보 자격이 주어진다.
2019년부터는 한국코드페어라는 별도의 대회를 통해 운영되는데 기존 공모 부문은 'SW를 통한 착한상상'으로 개편 추진되며 그 외에 주어진 과제를 기간 내 해결하는 해커톤 방식의 지정과제 부문[18] 을 추가 신설하여 운영된다.
3. 사건사고
4. 역대 대회 목록
경시부문 고등부 수상자만 기록한다.
[1] 다른 올림피아드들은 대부분 해당 학회에서 주관 하였다.[2] 2015년은 후술할 병크로 인해 불만이 폭주하자 커뮤니티 게시판을 닫아버렸고, 2017년은 한 학부모가 서울 지역대회의 수상인원이 줄어들은 것에 대해 문제를 제기하자 커뮤니티 게시판을 닫아버렸다. 결국 수상인원이 증가한 건 덤.[3] 이쪽도 조금 문제가 있는 것이 일부 실기 기출문제의 채점 데이터를 다운받으려고 하면 데이터에 주민등록번호가 포함되어 있다며 다운을 받지 못하게 한다.[4] 공식 교재 PDF 파일 집필진 참조[5] 홈페이지에서 환경을 체험 할 수 있게 링크를 두었다.[6] 실제로 선린인터넷고등학교는 2020년 1차 대회 일반고 부문에서 1~3등(금상 전체+은상 1등)을 모두 가져갔다. [7] 이는 KMO 1차시험과 동일한 방식이다.[8] 처음으로 지역예선과 본선을 통합한 2016년엔 2015년도 지역본선 문제가 출제되었다.[9] 전국 본선 동상 이상의 학생은 학교급이 바뀌지 않는 경우 다음 해의 지역 예선이 면제되었다.[10] 여담으로, 2017년 광주대회 고등부 18명은 전부 광주과학고에서 진출하였다.[11] 2002년까지는 서울대학교에서, 2003년은 김포공항 컨벤션센터에서 열렸다.[12] CMS의 경우 국제 정보 올림피아드에서도 2012년부터 공식 채점 시스템으로 채택하여 사용중이다.[13] online judge; 알고리즘 트레이닝 사이트.[14] 국제 정보 올림피아드는 '일정 비율 이상이 메달을 수상하도록 하는 가장 높은 커트라인'을 메달 기준으로 사용하기 때문에, 커트라인에 동점자가 많으면 모두 위쪽의 메달을 수상하게 된다. 이쪽은 점수의 분산을 염두에 두고 서브태스크를 비롯한 전체 대회 설계를 하기도 하지만, 한국정보올림피아드처럼 높으신 분 이름으로 나가는 상의 수가 대회 전에 정해져 있지 않다는 것이 크다.[15] VC++ 6.0의 비표준 atoi() 함수, conio.h 등 콘솔 제어 헤더와 getch()류의 함수, for문에서 선언한 변수의 유효 범위 등이 C++ 표준과 다르며, 이 부분에 있어 g++는 C++ 표준을 준수하고 있다.[16] 해당 자료는 홈페이지에도 등재되고 예비소집 날에도 배부되었다.[17] Code::blocks를 설치하고 나면 에디터 기본 폰트가 깨진다. 이는 참가자가 직접 글꼴 변경을 하면 해결할 수 있는데, 예비소집 때 글꼴 질문을 하도 많이 받았는지 본 경시에서는 글꼴이 다른 것으로 설정되어 있었다.[18] SW빌더스 챌린지[19] 국제정보올림피아드에 국가대표로 출전하여 2009년에 동메달 수상[20] 국제정보올림피아드에 국가대표로 출전하여 2012년, 2013년에 은메달 수상[21] 국제정보올림피아드에 국가대표로 출전하여 2014년에 은메달, 2015년에 금메달 수상 [22] 국제정보올림피아드에 국가대표로 출전하여 2016년에 금메달 수상 [23] 국무총리상[24] 과학기술정보통신부 장관상[25] 이례적으로 고등부 대상이 상격이 다른 두 상이 나왔다.[26] 분산개최 [27] 국제정보올림피아드에 국가대표로 출전하여 2020년에 금메달(2등) 수상