정보올림피아드, 들어는 봤는가? 수학,과학,물리 등 올림피아드의 종류는 많은데 여기서 컴퓨터를 하는 사람들을 위한 정보올림피아드라는 것이 있다. 내가 태어나기도 전인 84년도에 당시 전국 PC경진대회라 이름붙혀진 바로 그것. 전국의 컴퓨터 영재들이 모여서 문제를 최단시간에 효율적인 알고리즘을 사용하여 만드는 바로 그것. 한국 정보올림피아드.
이런말 하기 뭐하지만 나는 원체 어렸을 때부터 컴퓨터를 만져왔던지라 수재니 영재니 이런 소리를 좀 들어왔다. 사실 지금와서 아무리 생각해도 내가 그런 소리를 들을 정도는 아니었던 것 같은데, 다만 다른 사람들이 잘 알지 못하는 컴퓨터를 조금 더 잘 다뤄서일까.
상당히 자극(?) 적인 이 책은 내가 가장 처음 본 컴퓨터 책이다. 94년 당시 내 나이 7살, 초등학교도 가기 전에 우리 집에는 컴퓨터가 있었고 아마도 아버지께서 직장을 다니며 사용하시려고 구입하신 게 아닌가 싶다. 이 책에는 도스에 관한 전반적인 내용과 음 윈도우 3.0에 대한 내용이 있었던가? 잘 기억이 나진 않지만 어쨌든 이 책을 보면서 나는 정말 컴퓨터가 좋았고 그렇게 운영체제에 대해 전반적인 내용을 알아가고 그러다가 PC통신을 만났다. PC통신에서 인터넷을 알게 되고, 초등학교 3학년 때 처음으로 HTML과 자바스크립트를 다루면서 컴퓨터와 만남은 시작되었다.
포토샵과 나모 웹에디터 같은 것이 내겐 너무나도 친숙했었고 웹디자인이 너무 좋았다. 컴퓨터 자체가 너무 좋았는데 다양한 소프트웨어와 컴퓨터만 가지고 있으면 내가 못할 것이 없다는 생각. 그리고 무엇이든지 빠르게 된다는 점. 너무나도 내겐 매혹적으로 다가왔다.
그럼 왜 내가 이런 어린시절 이야기를 하는가? 나는 사실 안산에서 태어났고 그근방에서 자라왔다. 내 어렸을 때 가장 큰 변화는 중학교 2학년 때 서울로의 전학이었는데 그 전까지는 아버지 사업도 어려웠고 집안도 어려웠지만 가진 것 없어도 컴퓨터가 있으니깐 행복하게 살았다. 물론, 컴퓨터 뿐만 아니라 가족과도, 그리고 친구들과도 잘 어울리고 지냈지만 내게 가장 큰 친구는 역시 컴퓨터가 아니었나 싶다.
그러다가 전학간 서울, 커다란 건물들이 불쑥 나타나자 나는 하늘을 쳐다보느라 목이 아펐다. 할머니 댁이 아니면 서울에 거의 안갔는데, 갑자기 이사를 하게 되고 게다가 이사를 간 곳이 주상복합이라 상당히 높았다. 맨날 2층,3층에 살다가 갑자기 40층이나 되는 건물로 가게 되니깐 당연히 적응이 안될 만 했다.
그 외에도 남중을 처음 다니게 되거나 서울 날나리들이 고향과는 다르다는 점, 뭐 많은 부분이 내게는 변화를 요하는 부분이었는데, 그 중에 부모님을 통해 알게 된 가장 큰 변화란 바로 정보올림피아드를 알게 된 것이었다.
중학교 3학년, 여전히 컴퓨터만 좋아하던 나는 대학에 대해 보다 일찍 생각하고 계셨던 부모님을 통해 “너는 컴퓨터를 잘 하니 정보올림피아드라는 것을 준비해 봐라.” 라는 얘기를 들었다. 컴퓨터만 잘해서 대학을 간다? 정말 듣던 중 가장 반가운 소리가 아닌가 싶었다. 그것도 좋은 대학을 갈 수 있다니 말이다.
사실 정올에 처음 나가는 것은 아니다. 초등학교 시절 PC경진대회에 나가본 경험은 있기 때문. 하지만 지금의 정보처리기능사 정도의 필기 문제에 해당하는 당시 상황에서 나는 그러한 이론을 잘 몰랐기 때문에 관심이 거의 없었다. 물론 나가보기는 했지만 결과는 처참했다.
여하튼 부모님의 수소문으로 나는 서울에서 가장 유명하다는 월드 정보올림피아드 학원을 다니기 시작했다. 그리고 나는 처음 접하는 C언어를 터보C로 돌리면서 한달여 간은 코딩 감각을 기르기 위해 노력했다. 물론, 내 의지라기 보다는 학원에서 하라고 해서 한 것이 크지만 말이다.
그리고 본격적으로 다가선 정보올림피아드(이하 정올). 정올의 실체를 들여다보고 나는 처음에는 정말 의욕적으로 다가섰다. 컴퓨터 잘하니깐 이런 문제는 잘 풀겠지? 라는 막연한 생각. 멋모르고 알고리즘을 배워가면서 문제에 적용하려고 애를 썼다.
허나 실상은 그게 아니었다. 심지어 나는 학원에서 해외로 캠프를 떠나길래 호주 연수를 1개월 동안 다녀오기도 했는데 실력은 전혀 늘지 않았다. 왜일까? 그건 바로 컴퓨터 자체만으로 접근한 나의 사고의 문제였다.
결국 정올은 이거다. 수학올림피아드의 문제를 본 적이 있는가? 수학올림피아드의 문제는 수학 문제를 공식 등을 통해 풀어서 답을 도출한다. 정올? 정올의 문제는 역시 문제 그 자체이다. 이 문제는 실상에 관련된 문제일 수도 있고 아닐 수도 있다. 수학 문제는 문제를 숫자로 유추하고 공식으로 환산할 뿐이다. 정올은 문제를 컴퓨터라는 장치, 뭐 좀더 깊히 말하자면 c나 c++이 지원하는 각종 라이브러리의 사용, 그리고 컴파일러와 cpu의 연산 속도 등을 이용하여 문제를 풀 뿐이다. 수학에서의 공식에 해당되는 것이 이러한 프로그램 언어의 특징을 살리는 것이다.
그럼 알고리즘 개념은 왜 들어가 있는가? 이것 역시 프로그램 언어의 특성을 잘 살리기 위해 정의된 것들이다. 우리는 스텍과 큐 등을 배우면서 배열 등에 대해 배우게 된다. back-tracking을 배우면서, divide and conquer를 배우면서 우리는 함수와 재귀호출에 대해 배운다. 트리검색, 분할정복, 그래프, DFS, BFS등등 많은 정올을 위한 알고리즘이 프로그래밍 언어의 특성과 관계가 있다.
결국 정올을 접근하려면 우선 프로그램 언어의 특징을 알고 이를 문제에 어떻게 접목시키는가가 중요한데 나는 이를 간과하고 그저 머리속에는 포문을 어떻게 돌리고 수학적으로는 어떻게 풀어야 하는 등.. 그리고 기존에 배운 알고리즘을 어떻게 활용할까. 이런 방면으로 접근하다 보니 틀렸다는 것이다. 정올 문제는 프로그램 언어의 특성을 활용해서 풀라고 만들었지 말이다.
어쨌든 나는 결론적으로 정올을 통해 대학을 진학하겠다는 꿈은 고2때 버려야만 했다. 무려 4년을 준비했지만 결과는 그저 프로그램 언어에 대한 이해 정도? 알고리즘도 거의 암기식으로 한 나에게는 심지어 자료구조의 이해도 없었다. 물론 개발자가 된 지금에야 이해하고 있지만 말이다.
방향을 잘못 접근한다는 것은 정말로 후회스러운 결과를 가져오기 마련이다. 결국 수능공부를 통해 대학에 진학했지만 그 잠깐의 1년이란 기간은 내게 커다란 여파를 가져왔다. 아니, 웹 디자인을 못하게 된 것이 5년이 지났으니깐. C언어는 바뀌지 않아도 웹은 무지막지하게 변했다. 정말로 아직도 따라집지 못할 정도로 변했으니 말이다.
그래서 난 항상 생각하곤 한다. 나의 삶은 올바른 방향을 바라보고 나아가고 있을까? 비록 내가 벤처를 해서 3년을 날려먹었다 쳐도, 지금 병특 기간동안 또 3년을 날린다 쳐도, 그런 것들을 투자할 만한 가치가 있기 때문에 지금의 내가 걸어가고 뛰어가고 있지 않을까 생각된다. 내일은 회사 휴가인데 한번쯤 내가 지금까지 걸어온 길을 잘 돌이켜 보고 옳고 그름에 있어서 나 자신과 깊히 대화해 보는 시간을 가져야겠다.