한국정보올림피아드

Korea Olympiad in Informatics (KOI)
공식 홈페이지

1 개요

절대 인터넷으로 정보검색하는 대회가 아니다 이런 소리 들으면 준비하는 사람 입장에서 빡친다

국내 과학 올림피아드 가운데 유일하게 대한민국 정부에서 주관하는[1] 초/중/고등학생이 참가하는 컴퓨터 프로그래밍 대회이다. 현재 이 대회는 미래창조과학부에서 주최하고, 한국정보화진흥원에서 주관한다.

1984년 처음 개최되었으며, 당시에는 전국 퍼스널컴퓨터 경진대회라는 이름을 사용하고 있었고 지금과는 달리 국가주도로 거창하게 치러졌다. 대통령상, 국무총리상 등 상의 명칭조차 거창했으며 대통령상 상금이 200만원이였다. 당시 대학 1학기 등록금이 50만원 남짓으로 200만원은 2014년 물가로 2000~3000만원 정도 된다... 또한 KBS TV에서 2시간동안 생방송으로 체육관에서 키보드 치는 것을 중계해줄 정도였다. 그리고 대회 진행 중 정전되어 모든 컴퓨터가 꺼진 것도 생방송으로 중계되었다. 본격 이 사건의 원조. 특히 당시 대통령직접 대회장을 방문했다. 키보드 치는것을 3시간동안 바라봐야 하는 관람석의 관중들에게는 컴퓨터 40대가 경품으로 주어졌는데 당시 컴퓨터 한 대의 가격은 대학 한학기 등록금에 육박할 정도였다. 정부가 얼마나 공을 들인 대회인지 짐작할 듯. 하지만 90년대 들어서는 지금과 같이 조용히 치러졌으며 이름이 현재와 같이 바뀐 것은 1996년때이다.

공식 홈페이지 Q&A 게시판과 커뮤니티 게시판에는 C언어 잘 모르는 사람이 반, 아는 사람이 반 수준이었다(...) 다만 3.2의 사건으로 불만들이 터져나오며 잘 아는 사람들도 글을 남기는 중이다. 커뮤니티 게시판에는 해킹 시도를 한 흔적들이 상당히 보인다(...) 또한 페이지 선택 등을 할 경우, 400 Bad Request가 뜨는 경우가 잦다. 자료실은 2013년 이후로 올라온 게시글이 없다. 홍보 게시판은 테스트 글 하나밖에 없다. 교재 게시판(?)과 온라인 강좌에 도움될 만한 것들이 있으니 한 번쯤 보도록 하자.

현재 공과계열 학생들에게 대학 특기자전형의 가장 큰 무기이다. 전국 수상경력이 있다면, 내신이 좀 낮아도 높은 학교를 갈 수 있는 경우도 있다. 특히나 이쪽 학생들은 의대같은거 관심없고 골수 공돌이들이라서 대학에서 좋아한다. 하지만 법규상 올림피아드 실적을 생기부에 적지 못하는게 원칙인지라... 알아서 판단하시길.

2015년 기준, 초등부는 대개 초5 / 초6만 출전해 6학년이 수상권 대부분을 차지하고, 중등부는 초등부에 비해 고르게 상을 받지만 학년이 높을 수록 수상권에 많이 들어가는 편이다. 고등부는 말그대로 도그파이트. 학년 관계 없이 머리 좋은 사람이 이긴다. 인프라가 좋고, 고3이 출전하기 상대적으로 수월한 영재고과학고 가 많이 쓸어간다(특히 경기과고).

2 상세

2.1 경시 부문

수학적 지식과 논리적 사고능력을 필요로 하는 알고리즘자료구조를 적절히 사용하여 프로그램 작성 능력을 평가하는 것으로, 시 단위 지역예선과 시/도별 지역본선을 거쳐 전국본선에 들어오는 형식이다. 경시대회 우수 시상자에게는 국제 정보 올림피아드(IOI)의 교육생 자격이 주어진다. 2010년 들어서 대회 우수 시상자에게 주어지던 교육생 자격이 따로 면접 및 문제 풀이를 하여서 주어지게 변경되었으나, 2015년부터는 KOI 성적 우수자 몇몇에게도 교육생 기회를 주게 되었다. 2012년 부터는 중고등학교 은상 이상의 수상자에게 APIO(아시아태평양정보올림피아드)에 출전할 기회를 주고 있다.

2.1.1 지역 예선

2016년 기준으로 총 50문제를 3시간 안에 풀어야 한다. 5지선다 43문항, 단답형 7문항으로 이루어져있다. 수학 13문제, 프로그래밍(C언어) 37문제를 준다. 시험 시작 2시간 이후부터 퇴실할 수가 있다. 화장실은 학교 시험처럼 감독에게 말하여 가야 하며, 마킹펜 등은 알아서 준다. [2] 학생증과 연필, 지우개는 들고가야 한다.

수학은 조합론적인 게 많이 나오며 한국수학올림피아드 같은 걸 대비했다면 무난하다. 프로그래밍은 초반엔 쉬운 것들이 많으나, 후반까지 가면 일반인들은 버틸 수가 없다! 사실 기껏해야 입/출력, 파일 입/출력, 함수, for, if, 이정도만 많이 나오는 편이라서 그다지 많이 배우지 않았어도 시간만 충분하다면 풀 수는 있다. 다만 후반에 재귀함수 자체는 굉장히 복잡해서 실제에서도 자주 사용되지 않는점과 재귀보다 반복문이 더 좋은 경우가 많다는건 넘어가고 재귀함수가 몇 문제 나오는데 이놈들이 시간을 엄청 많이 잡아먹는다. 참고로 마지막 두세 문제는 전년도 지역 본선 문제와 그 소스 코드를 주고 질문에 답하는 문제이니, 기출을 익혀 두는 게 좋다.


간혹 프로그래밍의 ㅍ자도 모르면서 합격하는 경우도 생기곤 했지만, 2016년 부터는 시도본선이 사라지면서 프로그래밍의 ㅍ자도 모르면 200% 탈락이다(...)
더군다나 2016년은 수학문제가 줄어들어서 가능성은 더욱 희박해졌다.
또, 그나마 있는 수학문제의 배점이 현저히 줄어들어 수학문제로만 나가는것은 포기하는것이 좋다.
50문제에서 6문제가 단답형으로 되어있어 배점이 높은 뒷부분을 조심해야한다.
초등기준으로 50점정도 넘으면 전국대회에 진출할수 있다고 보면된다.

보통 40점 후반이 지역 본선 진출 커트라인이다. 그러나 40-50점대는 수학문제만 제대로 풀면 거의 찍어도 나오는 점수여서 전국에 진출하는 사람은 대개 70점 이상을 맞는다.
다만 2015년도부터 문항수가 35개에서 50개로 늘어나고 수학문제는 15문제 그대로 이기 때문에, 이제는 수학 문제만 다 맞춘다고 본선가지는 않는다. 특히, 뒤의 객관식보다 훨씬 쉬운 주관식 프로그래밍 문제가 3점 또는 2.7점 이상으로 다수 출제되었기 때문에, 이 상대적으로 쉬운 문제들을 못 주워먹는다면 꿈도 희망도 없게 된다.

대구광역시를 제외한 광역시, 특별시는 지역 예선이 없다. 대신 학교장 추천을 받아 지역 본선으로 올라가는 방식인데, 이게 과학고나 영재학교 같은 데에서는 사실상 교내예선이라 본선 진출자 분포가 어느 정도 유지된다. 그 이외의 일반 도(道)의 경우 전년도 동일한 부[3] 전국 본선 동상 이상의 학생은 지역 예선이 면제되며, 나머지 학생들은 단순 성적순이다. 그래서 한 도시에서 20명 넘게 지역 본선 진출자가 생기는 경우도... 영재학교 중 하나인 경기과학고등학교 학생들이 시험을 보는 수원 지역은 이거 때문에 지역본선 커트가 80점 중후반대에서 형성돼서 실력이 좋아도 삐끗하면 떨어지기 십상이었다. 특히 경기도 본선에서 해당 학교와 한국디지털미디어고등학교 외의 전국 본선 진출자를 찾아보기가 힘들기도 했다.그래서 2016년부터 바로 경기도 본선을 보게 되자 과학고와 한국디지털미디어고등학교가 싹쓸이를 하는 게 아니냐는 우려가 있었다. 그런데 경기도 본선 결과 한국디지털미디어고등학교 전국 본선 진출자가 딱 한 명(...) 나왔다. 다만 과학고는 전국 본선 진출자의 3/4을 독차지하며 강세를 보였다.

2.1.2 전국 본선

전국 본선 대회는 원래 서울 용산구에 있는 백범김구기념관에서 치뤄졌는데, 2010년부터는 정책이 바뀌었는지 매년 다른 곳에서 개최된다. 2014년은 순천, 2015년은 경산에서 치르는 등 지역을 여기저기 돌아가면서 하는 듯. 그런데 2016년에는 또 경산에서 한다. 2017년에도 경산에서 할지 내년까지 기다려봐야 할 듯

전국 본선도 4문제를 주고 시험을 치르는데, 단지 문제가 지역 본선과는 비교가 안 될 만큼 어렵다(...). 지역 예선이나 본선만 해본 일반인들은 도대체 문제가 무엇을 요구하는지, 어떻게 풀어야 하는지도 모르는(...) 상황이 발생하기도 한다. 난이도는 전체적으로 상향되긴 했는데, 간혹 지역 본선 최고난이도가 전국 본선보다 어렵기도 하므로 지역 본선을 잘 통과했다면 희망이 있을지도... 물론 그런 헬게이트 문제를 풀고 붙었다면 애초에 전국 본선을 걱정하지 않겠지만(....)

채점 방식이 약간 달라지는데, 실시간 채점이 되며 참가자는 시간 초과가 났는지, 답이 틀렸는지 등을 제출한 즉시로 확인할 수 있다. 이 방식은 많은 알고리즘 트레이닝 사이트에서 사용하는 오픈 저지(Open Judge) 시스템으로 사실상 지역본선만 빼고 거의 많은 프로그래밍 대회에서 이런 채점 방식을 사용하고 있다. 자신의 답에 대한 확신 없이 채점을 남발하면 어쩌나 하고 걱정할 수도 있지만, 아니 채점 남발하는게 뭐가 어때서 같은 점수의 경우에는 채점을 적게 한 학생을 높은 순위로 취급하므로 채점은 대부분 신중하게 하게 된다. [4] 실제로 2013년 고등부에서는 채점 횟수 때문에 먼저 만점을 찍은 학생보다 나중에 만점을 달성한 학생이 대상을 가져가는 경우도 있었다. 2015년에도 금상과 은상 컷에 사람들이 많이 몰려서 채점 횟수로 갈렸다.

대·금·은·동상을 수여한다. 2015년부터는 우수자에 한해 국제 정보 올림피아드 교육생 기회도 준다고 한다. 국제 정보 올림피아드 교육생은 2015년 기준 처음반 50명, 계속반 10명 정도를 뽑는데, 계속반은 처음반에 있었던 학생들 중 상위권 학생들을 뽑아서 운영하고 (KOI와 직접 관계 없음), 처음반 중 20명은 선발로 30명은 KOI로 들어갔다고 카더라.

2.2 공모 부문

학생이 스스로 개발한 창의적인 소프트웨어를 평가하는 것으로 시/도별 추천작품이 본선에 올라간다. 프로그램의 구조와 알고리즘보다는 창의적이고 얼마나 실용적인지를 중점으로 본다는 소문이 있다. 지역 예선 대회 개최 여부는 시/도마다 다르다. 공모부문 우수 시상자에게는 국제과학기술경진대회(ISEF)의 컴퓨터 공학 부문 참가 후보 자격이 주어진다.

3 사건사고

3.1 메모리 제한 사태

뉴스 링크.
2014년 5월 24일에 열린 대구 정보올림피아드 지역본선에서 일어난 사태. 2013년과 다르게 문제에서 메모리 제한을 하는데, 문제는 이 사실을 제대로 공지하지 않았다는 것이다. 한국정보화진흥원에서는 대구교육연구정보원에 통보를 하라고 했으나, 대구교육연구정보원에서는 그 사실을 시험을 치는 사람들에게 통보하지 않았다는 것이다.

대구교육연구정보원에서는 일단 본선 진출자를 발표했으나, 학부모들이 거세게 반대하자 실수를 인정하고 메모리 제한을 푼 상태로 재채점을 하였다. 결국 총 127명 중에서 18명의 점수가 변동되었으며, 고등학생부 전국본선 진출자를 5명 추가하기로 하였다. 원래 대구광역시에 배정된 고등부 전국본선 진출자는 7명이나, 2014년 당시에는 5명 추가된 12명으로 변경되었다.

아래 사태가 일어나며 또다시 재조명을 받고 있다. 아래 사태와 상당히 비슷한 점이 많다. 사실을 제대로 공지하지 않았다는 점과 학부모들이 거세게 반대하는 것, 방식이 달라진 것 등등... 2년동안 병크포풍같이 2개나 터뜨렸다. 1년에 한 번 꼴... 2016년에도 터질 것 같다 다음에는 2개다

3.2 표준 입출력 변경 사태

2015년부터 기존의 input.txt, output.txt를 사용한 파일 입출력 방식에서 stdin, stdout의 표준 입출력(흔히 콘솔 입출력으로 알고 있는 그거)으로 바뀌었다. 그런데 공지를 정확하게 해 주질 않아서 지금까지 연습해오고, 예년까지 시험을 치러 온 방식대로 파일 입출력으로 쓴 다음에 표준 입출력이 뭔지 몰랐어요, 바뀌었다는 안내를 정확하게 해주지 않았어요 같은 이의신청이 많이 들어와 논란이 커지고 있다. 눈치가 있고 문제상황인 줄 깨달았다면 stdin stdout으로 잘 했을 거라는 의견도 있으며 실제로 그렇게 한 사람들도 상당히 많지만, 한국눈치올림피아드도 아니고 (...) 시험을 치는 사람에게 정보과학 이외의 것을 기대하는 대회였다면 그것은 명백히 주최측의 잘못이다.

공지사항에 올라온 주의사항을 보면, "소스 파일명과 입출력파일 이름은 반드시 소문자로 작성한다." 라고 되어있다. 즉, 입출력 파일이 있다는 말처럼 들린다. 그런데, "입력 파일 이름 | 표준입력", "출력 파일 이름 | 표준출력" 라는 칸이 있어 사람들을 더욱 혼란의 도가니에 빠뜨리고 있다. 한편으로는 여러 시험장에서 시험감독관에 따라 "파일 입출력을 사용하는 게 아니라 표준 입출력을 사용한다. 즉, freopen으로 스트림 재설정도 하지 않고, fscanf, fprintf가 아닌 scanf, printf를 사용한다." 혹은 좀 더 직설적으로 "키보드로 입력하고, 모니터 화면에 출력된다" 라는 공지를 몇 번씩 반복해서 받은 학생들도 있다는 것이 밝혀져서 특정한 감독관이 공지를 부주의하게 했다는 점이 부각되었다. 경기도에서는 대놓고 이런 내용을 화면에 띄우기까지도 했다! 사실 input.txt나 output.txt라는 말이 주의사항이나 문제 어디든 한 글자도 없으므로 파일 입출력을 사용한 학생이 정확히 주의사항을 숙지했다고 보긴 힘들다는 점을 염두에 두긴 해야 한다. 대구의 한 시험장에서도 감독관이 해당 부분을 전체적으로 언급하였고, 경남에서도 freopen을 사용하지 말고 그냥 화면에 띄우는 방식으로 하면 된다고 언급하였다.

서울 지역본선 4 고사실은 입출력 관련된 질문에 대답을 하지 않았고, 1 고사실은 학생이 3명 남았을 때 표준입출력을 언급하며 학생들 코드의 입출력 부분을 직접 고쳐주었다는 항의가 들어왔다(!)

심지어 5월 26일 기준으로 커뮤니티 게시판도 닫혔다! 다만 완전히 닫힌 건 아니고, 숨겨놓기만 했다. 커뮤니티 게시판. 떳떳하면 왜 저렇게 숨겨놓겠냐는 말이 오가는 중이다. 각 게시판들도 뭔 짓을 한 건지, Q&A 게시판자료실이의제기 게시판, 커뮤니티 게시판은 각각 게시물이 총 126개, 44개, 57개, 34개이나 모두 50개로 뜨며, 공지사항홍보 게시판은 각각 총 67개, 1개이나 89개로 뜬다! 이건 그냥 웹 페이지 개발자 문제 같다

5월 27일 1시 10분쯤에 다시 열렸다.

또한 Q&A 게시판도 완전히 불판이 깔려 있다. 진짜 키보드 배틀 의견들은 크게 네 부류정도로 나뉘는데,

  • 원칙대로 파일 입출력으로 쓴 사람은 0점 처리해야 한다.
  • 파일 입출력으로 채점해서 점수가 나오면, 점수에 상관없이 장려상을 준다.
  • 파일 입출력으로 채점해서 점수가 나올 경우, 맞다고 처리해줘야 한다.
  • 사실은 표준 입출력이 아니고, 파일 입출력을 하긴 하는데, 입력 파일명이 "표준 입력" 이고, 출력 파일명은 "표준 출력" 이다! 그런데 주의사항에 입출력파일은 소문자여야 하는데 "표준입력"과 "표준출력"에 소문자가 없으므로 모두 0점처리가 옳다!!! 이뭐병 [5]

정도로 나뉜다.

그리고, 결과를 발표하기 전에 이의제기를 하는 상황인데, 결과를 알기도 전에 어떻게 이의제기를 제대로 할 수 있겠냐는 등, 여기저기서 쌓여온 불만이 한꺼번에 터져나오는 중이다.

아무래도 미친 것 같아요! 이럴거면 전국본선처럼 실시간 채점 방식으로 바꾸던가 하지만 겨우(...) 이런 일로 제대로 고칠 높으신 분들이 아니다

5월 29일 대회 운영위원회 회의 결과가 나왔다. 파일 입출력 형식의 코드는 0점 처리한다는 의견으로 결정되었다.

단지 대회운영위원회에서 사태의 책임을 회피하고자하는 태도로 보이며, 작년 대구시 메모리제한이 문제가 되었을때는 일이 커져 국회의원까지 연관되어 해결되었는거에 비교하면 운영위원회가 얼마나 무책임하고 처리를 못하는지 알 수 있다.

3.3 타 학교급 문제 유출 사태

3.2에 의해 묻힐 것 같은 또 다른 병크

일부 지역에서 학생들이 초등부, 중등부, 고등부의 문제를 모두 볼 수 있었다는 제보가 27일 대회 홈페이지 Q&A 게시판에 접수되었다. 고등부가 초등부나 중등부 문제 본다고 큰 문제 될 것 없다 생각할 수도 있지만, 고등부 3번 문제와 중등부 4번 문제가 연관되어 있어, 고등부 3번 문제의 잘못된 풀이 방법인 유클리드 호제법의 반례가 중등부 4번 테스트 케이스에 나와 있었다! 중등부 4번 문제를 본 고등부 학생들은 풀이 방법을 다시 생각함으로써 문제 해결에 도움이 될 수 있다는게 가장 큰 논란이 될 것.하지만 높으신 분들은 이런것 따위 회의에서 언급하지 않았다

자세한 설명을 위해 제보의 일부를 발췌했다.

이것으로 영향을 받은 학생이 없는 것도 아닐 것입니다. 모 온라인 저지에는 이번 중등부 4번과 같은 문제가 있는데, 이 문제에서 "통과" 판정을 받으려면 유클리드 호제법을 사용한 잘못된 알고리즘으로 해결해야 합니다. 따라서 이 문제에서 "통과" 판정을 받은 고등학생 수험생들은 고등부 3번을 해결할 때 이 접근을 필히 사용했을 것입니다. 하지만 중등부 4번에 이 알고리즘에 대한 반례인 (5,6)이 제시되어 있으므로, 중등부 4번을 볼 수 있었다면 정확한 알고리즘을 사용했을 것입니다.

이 문제는 KOISTUDY에 실제로 있던 문제로서... 관리자 중 한 명인 선생님이 그리디 알고리즘인 줄 알고 모의고사 출제를 하셨다가 폭풍같은 반례에 문제를 내리셨다는 전설이 있다.

  1. 다른 올림피아드들은 대부분 해당 학회에서 주관한다.
  2. 학생증, 신분증등이 없을경우는 못간다고 한다.
  3. 작년에 초등부에서 전국 동상을 수상했는데, 올해 중등부에 시험을 친다면 해당사항이 없다. 중등부에서 고등부로 올라가도 마찬가지.
  4. 사실 이쪽 커뮤니티에서는 채점 횟수에 대한 죄책감 같은게 거의 없는 편이라 이러한 제도에 대해서 성토하는 사람들도 많지만, 더 나은 대안이 없기에 아마 바뀔일은 없을듯.. 국제 정보 올림피아드는 동점자가 많으면 그냥 다 메달을 뿌린다. 그쪽은 참가자도 많고 문제 난이도도 시험 참가자들이 잘 분산되도록 내기 때문에 가능한 일.
  5. Q&A 게시판에서 "원칙을 준수하면 입출력 파일명을 "표준입력"/"표준출력"으로 작성해야 옳은 것입니다."라고 검색하면 해당 글을 볼 수 있다.