로딩로딩중

한국정보올림피아드

최근 수정 시각:

분류

파일:나무위키+유도.png   일본의 만화가에 대한 내용은 Koi 문서를, 동명의 사이트에 대한 내용은 정올(사이트) 문서를 참조하십시오.


Korea Olympiad in Informatics (KOI)


공식 홈페이지

1. 개요2. 상세
2.1. 경시 부문
2.1.1. 지역대회2.1.2. 전국 본선
2.2. 공모 부문
3. 사건사고
3.1. 메모리 제한 사태3.2. 표준 입출력 변경 사태3.3. 타 학교급 문제 유출 사태3.4. 2018 정보올림피아드 다량의 문제 오류 사태
3.4.1. 예시
3.4.1.1. 괄호 문제3.4.1.2. 농부 문제3.4.1.3. 고등부 문제 27번3.4.1.4. 고등부 문제 36번3.4.1.5. 고등부 문제 49번
4. 역대 대회 목록

1. 개요[편집]

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

2. 상세[편집]

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

공과계열 학생들에게 대학 특기자전형의 가장 큰 무기이다. 전국 수상경력이 있다면, 내신이 좀 낮아도 높은 학교를 갈 수 있는 경우도 있다. 특히나 이쪽 학생들은 의대같은거 관심없고 골수 공돌이들이라서 대학에서 좋아한다. 게다가 이전엔 이런 교외대회 실적을 자소서 등에 기재하는 것이 공식적으로는 금지였던 반면, 2018년 대입부터는 소프트웨어 중점 대학에 소프트웨어 특기자 전형이 신설되어서 대회실적을 기재할 수 있게 되었으니 대입에 더욱 유리할 것으로 보인다.

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

여담으로 공식 홈페이지, 특히 커뮤니티 관련 부분은 대회시즌을 제외하고는 이용이 저조해서인지 거의 관리되지 않는 수준이다. 그나마 있던 게시판들도 후술할 병크가 터지면서 이의제기 및 Q&A를 이메일로 답장을 해주는 방식으로 변경되었다. 커뮤니티 게시판은 남아있긴 하지만 무슨 일이라도 터지면 칼같이 닫아버린다.[3]

콘텐츠 뱅크에 있는 교재, 온라인 강의, 기출문제[4] 등은 대회에 도움될 만한 것들이니 참가할 생각이 있다면 보는 것이 좋다.

2.1. 경시 부문[편집]

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

2.1.1. 지역대회[편집]

프로그래밍 및 수리능력을 알아보기 위한 필기시험으로, 2017년 기준 초등부 40문제, 중등부 50문제, 고등부 50문제를 3시간 안에 풀어야 한다. 시험 시작 2시간 이후부터 퇴실할 수가 있으며, 시험종료 10분 전부터는 퇴실할 수 없다. 준비물은 접수증, 여권이나 학생증을 비롯한 신분증 또는 소속 학교장의 확인서, 마킹펜을 포함한 필기도구, 그리고 문제풀이 시 필요한 용지. 접수증은 사전에 홈페이지에서 출력해와야 하며 마킹펜과 용지는 없는 경우 주최측에서 제공해준다. 화장실은 시험장 내 감독에게 말하고 복도 측의 감독과 동행해서 가야한다. 고등부의 경우 평소 보는 모의고사와는 달리 단답형을 표기할 때, 비는 앞자릿수의 0도 표기해야한다는 점에 주의. 예시로 답이 1이라면 001로 표기해야한다.

문제는 객관식 오지선다 35~43문제, 단답형 5~7문제로 객관식보다 단답형의 배점이 높은 편이다. 객관식은 수리영역 15문제에(초등부는 10문제, 2017년 기준) 나머지가 프로그래밍 문제이고, 단답형은 수리영역과 프로그래밍 문제의 비율이 반반을 이룬다. 수학 분야에는 조합론을 비롯한 다양한 분야의 문제가 출제되며, 한국수학올림피아드와 같이 머리를 쓰는 문제가 주를 이룬다.하지만 수학 난이도는 KMO가 훨씬 어렵고 일반인은 문제를 이해조차 못하는 사람도 있다. 그건 이것도 마찬가지 프로그래밍 분야의 문제는 2017년 현재 대회 공식 언어인 C/C++로 짜인 소스의 분석, 즉 해당 소스의 작동의 예측을 기초로 하고 있다. 문제의 순서는 대체로 난이도 순이기 때문에 초반에는 쉬운 문제가 많으나, 갈수록 각종 알고리즘과 구현 테크닉·코딩 실수 파악·수학(특히 정수론 및 조합)과의 연계 등 수준 높은 문제들이 속속 등장하기 때문에, 뒤쪽으로 갈 수록 프로그래밍 문제에 익숙하지 않은 사람들은 버틸 수가 없다. 객관식 마지막 2문제는 보통 전년도 전국대회[5] 문제와 그에 대한 풀이 소스 코드를 주고 질문에 답하는 문제이다. 보통 빈칸에 들어갈 내용을 묻는 1문제, 실행 결과를 묻는 문제가 1문제 출제된다.

지금과 같은 방식으로 지역대회가 개최되기 시작한 건 2016년부터로, 2015년까지는 교육지원청 단위로 필기 지역예선을 치루고 시·도별로 실기 지역본선을 보던 방식이었다.[6] 실기 지역본선의 경우 각 컴퓨터에 필요한 개발 환경과 암호가 걸린 HWP 문제 파일을 미리 마련해 두고, 대회 시작 시간에 해당 파일의 암호를 안내하며, 대회가 종료되면 배부받은 개인별 USB에 소스를 복사하여 USB째로 제출하는 방식으로 진행되었다. 때문에 간혹 수학 문제에서의 높은 득점으로 프로그래밍 실력이 한참 부족함에도 지역예선을 합격하는 경우도 생기곤 했지만, 2016년부터는 지역본선이 사라지는 바람에 변별력을 기른다는 목적으로 수리영역의 비중 및 난이도가 낮아지고 프로그래밍 문제의 난이도가 상승하여, 수학과 찍기점수만을 노려 나가기는 사실상 불가능해졌다. 대회 방식의 변경에 대해 명확하게 발표된 이유는 없지만, 각 지자체 별로 실기대회 환경을 준비할 만한 여건과 전문성 있는 인력이 부족했으며, 2015년 지역본선에서 벌어진 파일입출력 사태로 인해 그 점이 크게 부각되었기 때문이 아니겠냐는 의견이 많다.

2017년도 지역대회에서는 중등부 문제와 고등부 문제가 분리됨에 따라 고등부 난이도가 상승해 고등부에서는 역대급 헬게이트가 펼쳐졌다. 수학 문제고 프로그래밍 문제고 할 것 없이 난이도가 대폭 향상되었다. 웬만한 지역은 전국 본선 진출컷이 50점대, 경기과학고의 굇수가 몰려있는 경기도 지역마저도 60점대로 낮아질 것으로 예상되었다.[7] 중등부 문제도 난이도가 상승해 본선진출컷이 50점 중반이 되었다.

2018년도 지역대회에서 공교육 위주로 문제가 하향평준화 된다고 한다. 그러나...
밑의 항목 참조.

2015년부터 수험자의 항의가 빗발쳐 정보올림피아드 페이지 이의 제기란이 동결되었다.
그렇지만 2018년 KOI지역 대회 문제 출제 오류로 인하여(밑의 항목 참조) 엄청난 항의가 들어왔고
그걸 무시하던 KOI는 뒤늦게 사태를 파악하고 이의 받는 기간을 늘이고 정보올림피아드 페이지 이의 제기란을 다시 부활시켰다.

2.1.2. 전국 본선[편집]

전국 본선 대회는 원래 서울 용산구에 있는 백범김구기념관에서 치뤄졌는데, 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는 브라우저로 접속하여 소스 제출을 통해 실시간 채점이 가능하여, 자신의 프로그램의 실행 결과(정답·오답·시간 초과·메모리 초과·런타임 에러 등)를 바로 알 수 있다는 장점이 있다.[8] 사실상 대부분의 온라인 저지[9] 및 온라인 대회 사이트에서 이미 실시간 채점을 기본으로 하고 있었기 때문에 이 변화를 반기는 목소리가 컸다. 문제당 20회의 채점 제한이 있고, 같은 점수의 경우에는 채점을 적게 한 학생을 높은 순위로 취급하므로, 채점은 신중하게 하게 되는 경우가 많다.[10] 실제로 2013년 고등부에서는 채점 횟수 때문에 먼저 만점을 찍은 학생보다 나중에 만점을 달성한 학생이 대상을 가져가는 경우도 있었다. 2015년에도 금상과 은상 컷에 사람들이 많이 몰려서 채점 횟수로 갈렸다.

이러한 대회 형식의 변화 내용을 설명하기 위해서 2013년에는 전국 각지에서 설명회를 열었다. 주로 많은 참가자가 처음 접해볼 리눅스 환경의 사용방법 등을 안내했으며, Visual C++ 6.0과 g++ 4.8.3 사이의 문법 차이 등을 안내하였다.[11][12] 참가자들의 혼란을 줄이기 위해 대회에서 사용할 우분투 환경의 VirtualBox 가상머신 이미지를 배포하였으며, 현재도 한국정보올림피아드 홈페이지 자료실에 올라와 있다.

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

2.2. 공모 부문[편집]

학생이 스스로 개발한 소프트웨어를 평가하는 부문.

프로그램의 구조와 알고리즘보다는 창의성과 실용성을 중점으로 평가하며 17년도 이전에는 지역 예선이 시/도에서 처리됐었으나 17년도 부터는 NIA에서 서류 심사를 거쳐 본선 진출을 결정한다.

우수 시상자에게는 국제과학기술경진대회(ISEF) 의 컴퓨터 공학 부문 참가 후보 자격이 주어진다.

3. 사건사고[편집]

3.1. 메모리 제한 사태[편집]

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

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

3.2. 표준 입출력 변경 사태[편집]


정보올림피아드 연쇄사건의 시작

2015년의 지역본선부터 입출력 방식이 기존의 input.txt, output.txt를 사용한 파일 입출력에서 stdin, stdout의 표준 입출력으로 바뀌었다. 그런데 예년의 공지를 가져다 쓰면서 관련 사항을 수정하지 않은 부분이 남아있었다. 또한 지역본선 대회장의 감독관이 시스템 및 알고리즘 문제 해결 등의 분야에 전문성을 가지지 않은 경우가 많아, 학생들의 질문이 본부에 전달되고 본부의 답변이 학생들에게 전달되는 과정에서 내용의 왜곡이 생겼고, 시험장마다 서로 다른 안내를 받게 되었다.

공지사항 중 주의사항 부분을 보면, "소스 파일명과 입출력파일 이름은 반드시 소문자로 작성한다."라는 안내가 있어 입출력 파일이 있음을 추측할 수 있다. 그런데 뒤쪽의 각 문제에는 "입력 파일 이름: 표준입력", "출력 파일 이름: 표준출력"이라는 표가 실려 있어 사람들을 더욱 혼란의 도가니에 빠뜨렸다.

여러 시험장에서 시험감독관에 따라 "파일 입출력을 사용하는 게 아니라 표준 입출력을 사용한다. 즉, freopen으로 스트림 재설정도 하지 않고, fscanf, fprintf가 아닌 scanf, printf를 사용한다.", 혹은 좀 더 직설적으로 "키보드로 입력하고, 모니터 화면에 출력된다" 라는 공지를 수 차례 명확하게 받기도 했다. 경기도 일부에서는 이런 내용을 화면에 띄웠다. 대구의 한 시험장에서도 감독관이 해당 부분을 전체적으로 언급하였고, 경남에서도 freopen을 사용하지 말고 그냥 화면에 띄우는 방식으로 하면 된다고 언급하였다. 서울 지역본선 4 고사실은 입출력 관련된 질문에 대답을 하지 않았고, 1 고사실은 학생이 3명 남았을 때 표준입출력을 언급하며 학생들 코드의 입출력 부분을 직접 고쳐주었다는 말도 있었다.

관련 질문과 항의가 한국정보올림피아드 사이트의 게시판에 빗발쳤다. 5월 26일 기준으로 커뮤니티 게시판이 닫혔다. 다만 완전히 닫힌 건 아니고, 링크를 숨겨놓았기 때문에 원래 주소로 접속하면 접속이 가능했다. 떳떳하면 왜 저렇게 숨겨놓겠냐는 말이 오가는 중이다. 각 게시판들도 뭔 짓을 한 건지, Q&A 게시판자료실이의제기 또는 의견 게시판, 커뮤니티 게시판은 각각 게시물이 총 126개, 44개, 57개, 34개이나 모두 50개로 뜨며, 공지사항홍보 게시판은 각각 총 67개, 1개이나 89개로 뜬다! 이건 그냥 웹 페이지 개발자 문제 같다. 이뭐병

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

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

  • 원칙대로 파일 입출력으로 쓴 사람은 0점 처리해야 한다.

  • 파일 입출력으로 채점해서 점수가 나오면, 점수에 상관없이 장려상을 준다.

  • 파일 입출력으로 채점해서 점수가 나올 경우, 맞다고 처리해줘야 한다.

  • 사실은 표준 입출력이 아니고, 파일 입출력을 하긴 하는데, 입력 파일명이 "표준 입력" 이고, 출력 파일명은 "표준 출력" 이다! 그런데 주의사항에 입출력파일은 소문자여야 하는데 "표준입력"과 "표준출력"에 소문자가 없으므로 모두 0점처리가 옳다!!! 이뭐병 [13]


정도로 나뉜다.

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

5월 29일 대회 운영위원회 회의 결과가 나왔다. 파일 입출력 형식의 코드는 0점 처리한다는 의견으로 결정되었다. 안내 부족으로 상당수의 학생들이 피해를 받게 되었기 때문에, 이 판단에 납득하지 못한 사람들이 많았다.

3.3. 타 학교급 문제 유출 사태[편집]

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

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

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

3.4. 2018 정보올림피아드 다량의 문제 오류 사태[편집]

표준입출력사태와 맞먹는, 아니 더한 최악의 문제 오류 사태

2018년 올림피아드부터 공교육 기반으로 문제가 변경되었고, 문제가 하향평준화 된다는 공지가 나왔다.
갑작스럽게 변경된 대회 방식에 혼선을 빚기도 하였지만, 문제가 공교육 위주로 나온다는 말에 어느정도 수긍하는 분위기였다.

그리고 동년 4월 14일에 치뤄진 정보올림피아드 지역 예선 문제엔 문제점이 매우 많았다. 오타부터 시작해서 문제오류, 선지오류, 기준이 정확히 정해지지 않은 문제, 전문 프로그래밍 용어를 설명도 없이 출제[15] 등 문제는 아주 난장판이였다.

많은 문제 오류와 함께 컴파일러를 Visual Studio 컴파일러 기준[16]으로 출제된 문제도 있어서 답이 여러개가 나오는 경우가 발생했다.

2018년도 지역대회부터는 실제 초중고에서에서 정보교과를 담당하는 교사들로 출제진이 교체되었으나 문법, 특히 짜증나는연산자 우선순위[17]를 묻는 문제가 다수 출제되었다.

이런 성의없는 문제들 때문에 공교육 강화를 위해 출제진에 넣었던 학교 선생님과 정보올림피아드 주최 측을 비판하는 목소리가 커지고 있다.

우선 인정된 문제 오류만 해도 초등부 1개, 중등부 2개, 고등부 4개이며, 특히 고등부의 경우 4개씩이나 문제 오류가 터져 본선 진출자 결정 자체에 혼선이 생길 수밖에 없는 상황이다.

점수 발표 시각이 21시라고 예고했음에도 불구하고 21시가 지나도 메일이 오지 않는다. 결국 22시쯤에 왔다.

이번 논란에 대한 청와대 청원도 올라왔다!! 링크

접속 폭주인지 의도적 조작인지는 알 수 없지만 4월 25일 기준으로 사이트가 터졌다! 지금은 복구된 듯 하다.

구제 방안 검토 결과 하도 이뭐병스러운 문제 오류 속에 결국 구제 방안이 결정되었는데, 본선 진출자가 당초 600명에서 무려 147명이 늘어나 747명이 되어버렸다. ????

이외에도 고등부는 논란 문항이 2개나 더 있으며, 논란 이외에도 부정확성이 제기되는 문항이 1개 더 있어 총 7개의 문제가 논란에 휩싸인 역대 최악의 상황이다. 아래의 항목들을 보면 알겠지만, 하나하나가 아주 심각한 코딩들 뿐이다.

3.4.1. 예시[편집]

3.4.1.1. 괄호 문제[편집]

중등부 15번, 고등부 6번문제.

괄호 문제는 네개의 괄호쌍, 그러니까 ( 4개, ) 4개가 있는데 이를 이용하여 통상적으로 올바르지 않게 판단되는 괄호쌍을 만들 수 있는 경우의 수를 구하는 문제였다. 카탈란 수를 이용한 문제이고, 이전에도 이런 유형의 문제는 여러번 나왔으니 문제가 될 게 없어 보이지만, 답은 56인데 보기에 51, 52, 53, 54, 55가 나왔다.

3.4.1.2. 농부 문제[편집]

초등부 37번, 중등부 44번

농부가 총 100마리의 동물을 사는데, 송아지가 50만원, 새끼양이 10만원, 토끼가 5000원이다. 농부가 산 동물의 금액이 총 1000만원일 때 토끼의 수를 구하여라.

밑줄 친 부분이 송아지, 새끼양, 토끼 외의 동물을 살 수 있다고 해석되어 어떠한 수든 100을 넘지 않는다면 정답이 될 수 있다. [18]

또한, 새끼양만 100마리를 사는경우도 1000만원이 되기에 토끼를 아예 안사도 되는 그런 이뭐병스런 상황이 연출됐다.

3.4.1.3. 고등부 문제 27번[편집]


다음 프로그램의 출력 결과는 무엇인가?(2.0점)
int num, temp1, temp2;
int A = 2;
int B = 12;
num = ((temp1 = B / A++) + (temp2 = B / ++A)) + ++B;
printf(“%d”, num);


주최측의 의도는 22였던 것 같으나, 표준인 GCC를 활용하면 답은 오히려 20이 나오게 된다. 참조 또한, 사진을 보면 알겠지만, undefined behavior로 인해 컴파일 에러 경고까지 뜬다.(답 자체는 출력되지만)
이로 인해 모두 정답 처리되었다.

3.4.1.4. 고등부 문제 36번[편집]


a=1, b=0, c=-1일 때, 다음 프로그램의 출력 결과는 무엇인가?(2.4점)
int i = 5;
if(a<b<c){for(i--; i--; i--)
    printf(“%d ”, i);
} else {
for(i--; --i; i--)
    printf(“%d ”, i);
}

둘째줄의 if(a<b<c) 는 undefined behavior이다.사실 출제진들의 행동이 undefined behavior 게다가 2번, 4번의 ...의 무한 실행은 발생할 수 없는 것인데 선지로 낸지라 더더욱 비정상적인 문제라고밖에 볼 수 없다.

3.4.1.5. 고등부 문제 49번[편집]

다음 프로그램의 출력 결과는 무엇인가?(3.0점)
#define INT_MAX 2147483647
#define abs(x) (x<0) ? x*-1 : x
int f(char *D)
{ int n = 14;

int B[14][14];
bool A[14][14];
int i, j, k, m;
for (i = 0; i<n; i++) {

A[i][i] = true;
B[i][i] = 0;

}
for (m = 1; m <= n; m++) {

for (i = 0; i<n - m + 1; i++) {

j = m + i - 1;

if (m == 1) A[i][j] = A[i][j];
if (m == 2) A[i][j] = D[i] == D[j]);
else A[i][j] = (D[i] == D[j]) && A[i + 1][j – 1];
if (A[i][j] == true) B[i][j] = 0;

else { B[i][j] = INT_MAX;

for (k = i; k <= j - 1; k++)

B[i][j] = B[i][j] < (B[i][k] + B[k + 1][j] + 1)? B[i][j] : (B[i][k] + B[k + 1][j] + 1);

}

}

} return B[0][n - 1];

}
int main(){
char D[] = "ababbbabbababa";
printf("%d", abs(f(D)));
return 0;}

INT_MAX를 무려 2147483647(2의 31제곱보다 1 작은 값)을 내놓더만 정작 코딩 알고리즘이 불성립하는 이상한 문제가 되고 말았다.
검토 의견 주최측은 단순히 17줄에 빠진 괄호 하나를 문제 삼았지만, 그것은 작디 작은 일부분에 불과했고 코딩 자체를 비상식적으로 짜놓았다는 사실이 밝혀지고 말았다.

4. 역대 대회 목록[편집]

공모전 부분은 포함하지 않는다.

회차

연도

장소

우승자

제 21회

2004년

서울특별시 서울대학교 홍백 본관

제 22회

2005년

서울특별시 용산구(백범김구기념관)

제 23회

2006년

제 24회

2007년

제 25회

2008년

제 26회

2009년

제 27회

2010년

강원도 횡성군(횡성실내체육관)

제 28회

2011년

충청남도 천안시(천안여자상업고등학교)

제 29회

2012년

인천광역시 연수구(인천대학교)

제 30회

2013년

충청북도 청주시(충북대학교)

조승현 [19]

제 31회

2014년

전라남도 순천시(순천대학교)

박상수

제 32회

2015년

경상북도 경산시(경일대학교)

최민제

제 33회

2016년

오선재

제 34회

2017년

신승원

제 35회

2018년

서울특별시 성북구(고려대학교)



[1] 다른 올림피아드들은 대부분 해당 학회에서 주관한다.[2] 2019년부터는 학회에서 주관한다고 한다.[3] 2015년은 후술할 병크로 인해 불만이 폭주하자 커뮤니티 게시판을 닫아버렸고, 2017년은 한 학부모가 서울 지역대회의 수상인원이 줄어들은 것에 대해 문제를 제기하자 커뮤니티 게시판을 닫아버렸다. 결국 수상인원이 증가한 건 덤.[4] 이쪽도 조금 문제가 있는 것이 일부 실기 기출문제의 채점 데이터를 다운받으려고 하면 데이터에 주민등록번호가 포함되어 있다며 다운을 받지 못하게 한다.[5] 처음으로 지역예선과 본선을 통합한 2016년엔 2015년도 지역본선 문제가 출제되었다.[6] 전국 본선 동상 이상의 학생은 학교급이 바뀌지 않는 경우 다음 해의 지역 예선이 면제되었다.[7] 여담으로, 2017년 광주대회 고등부 18명은 전부 광주과학고에서 진출하였다.[8] CMS의 경우 국제 정보 올림피아드에서도 2012년부터 공식 채점 시스템으로 채택하여 사용중이다.[9] online judge; 알고리즘 트레이닝 사이트.[10] 국제 정보 올림피아드는 '일정 비율 이상이 메달을 수상하도록 하는 가장 높은 커트라인'을 메달 기준으로 사용하기 때문에, 커트라인에 동점자가 많으면 모두 위쪽의 메달을 수상하게 된다. 이쪽은 점수의 분산을 염두에 두고 서브태스크를 비롯한 전체 대회 설계를 하기도 하지만, 한국정보올림피아드처럼 높으신 분 이름으로 나가는 상의 수가 대회 전에 정해져 있지 않다는 것이 크다.[11] VC++ 6.0의 비표준 atoi() 함수, conio.h 등 콘솔 제어 헤더와 getch()류의 함수, for문에서 선언한 변수의 유효 범위 등이 C++ 표준과 다르며, 이 부분에 있어 g++는 C++ 표준을 준수하고 있다.[12] 해당 자료는 홈페이지에도 등재되고 예비소집 날에도 배부되었다.[13] Q&A 게시판에서 "원칙을 준수하면 입출력 파일명을 "표준입력"/"표준출력"으로 작성해야 옳은 것입니다."라고 검색하면 해당 글을 볼 수 있다.[14] koistudy이다. 관리자 중 한 명인 선생님이 그리디 알고리즘인 줄 알고 모의고사 출제를 하셨다가 폭풍같은 반례에 문제를 내리셨다는 전설이 있다. 현재는 제대로 고쳐진 상태.[15] 완전 이진 트리, 최대 힙 트리.[16] 정보올림피아드는 원래 GCC기반이다! [17] 일반적으로 코딩에서는 그냥 괄호로 묶으면 되지, 연산자 우선순위는 거의 사용하지 않는다[18] 답은 0 또는 80으로 되어있다.[19] 무려 16살의 나이로 전국대회 우승을 했다! 당시 학년은 중학교 조기졸업으로 인해 고1.