내일이란 변수에 열정을 코딩하자

대학생 프로그래밍 대회 Samsung CodeGround 참여기

by 붕어맛싸만코

고등학교를 특성화 고등학교로 나온 친구들이나, 전문 기관에서 교육을 받은 친구들과는 달리, 나는 컴퓨터 공학에 있어서 이론적인 부분밖에 배우지 못했다. 대학에서 컴퓨터 공학을 처음 접한 친구들보다는 상황이 조금 낫지만, 여하튼 나는 아직 무언가 가시적으로 보일 만한 무언가를 만들기에는 실력이 턱없이 부족하다. 아무래도 게임이나 웹사이트, 모바일 애플리케이션과 같이 눈에 보이는 것을 만드는 것이 그냥 검은 화면에 흰 글자를 툭툭 뱉어내는 프로그램들 짜는 것보다 유쾌하고 즐거우니까, 그 쪽을 배워서 해보고 싶은 열망이 생긴다. 하지만 어쩌겠는가, 지금 배운 게 그것 뿐이고, 심지어 그것도 제대로 못하고 있는데.


그런 지루함에 대한 대책으로 나는 대회를 자주 나가고는 한다. 대회도 결국은 문제 푸는 것인데 뭐가 덜 지루하고 즐거우냐 라고 누군가 묻는다면, 적어도 점수가 눈에 보이지 않느냐라고 대답할 것이다. 그래. 결국은 눈에 보이는 게 필요한 거다. 덤으로 입상하면 기분도 좋아지지 않는가.


여차 저차 한 이유로 삼성이 주최하는 코드그라운드에 참가를 하게 되었다. 이번이 첫 개최라 사람이 좀 적었다. 2000명 정도려나. 1번을 푼 사람이 어제 새벽 5시 기준으로 2015명이었으니 그쯤 될 것이다. ACM ICPC에서 여러 가지로 무서운 난이도를 만난 지라 (사실 역대급으로 쉬운 해였다. 단지 내가 실력이 부족할 뿐.) 우리나라 최고 규모의 기업인 삼성이 낸 문제는 어느 수준일까 기대 반 걱정 반 이었다. 솔직히 말하자면 난이도가 조금 실망스러웠다. 점수를 반타작도 못 낸 내가 할 말은 아니지만, 1학년인 내가 3번까지 고민 없이 풀어냈다는 것은 대체 사람을 거르자는 건지 말자는 건지 잘 모르겠다. 2차 예선에 나갈 가능성은 거의 없지만 그때 문제는 좀 더 질이 높으리라 생각해 본다.


문제를 풀면서 이런저런 생각을 많이 했다. 주로 문제를 푸는 방법론에 대한 생각이었는데, 프로그래밍 문제를 푼다는 것은 문제에 대한 모델을 작성하고, 구현해서, 확인하고, 수정하는 과정이라는 것을 다시 한번 몸으로 느끼는 계기였다. 코드와 모델을 조금씩 수정해 메모리가 줄어들고 작동시간이 줄어들 때의 그 쾌감은 그 전까지의 고통을 보상하기에 충분하다.


코드 그라운드에 참여하면서 다른 대회와는 달리 즐거웠던 것은 대회 공지 담당자의 공지글 이었는데, 00시에 올라온 공지글 이었던가, 거기서 '아름다운 코드'가 무엇인지에 대해서 묻는다. 나의 개인적인 생각이지만, 나는 아름다운 코드는 단순히 Indentation이 잘되어 있거나, 깔끔하고 간결한 구조로 짜인 코드가 아니라, 그 목적이 아름다운 프로그램을 이루는 코드가 아름답다고 생각한다. 아무리 조잡하고 가독성이 떨어지는 구조로 짜인 코드라고 해도, 그 코드가 선한 의도로 작성되고, 좋은 목적으로 이용된다면 그것만으로 충분히 아름다운 코드가 아닌가.


대회가 끝난지 12시간이 흘렀다. 800점 만점에 288점이라는 낮은 점수로 나는 아마 탈락할 것이다. 물론 2차 예선에 붙을 것이라고 기대를 하지도 않았고, 그래서 늦게 시작한 것도 사실이다. 하지만 짧은 대회 기간 동안 그들은 내게 여러 가지 질문을 던졌다. '문제에 어떻게 대처해야 하는가?', '아름다운 코드는 무엇인가?' 등의 질문들은 지금 대학 생활 동안뿐만이 아니라, 내가 프로그래머, 컴퓨터 엔지니어로 일하는 동안 내가 계속 스스로에게 묻고 답을 찾아야 할 것들이다.


뱀발. 브런치에 처음으로 써 본 글인데 생각보다 글이 좀 이상해서 마음에 안 든다. 나중에 수정해야겠다...