알고리즘 덕후 열전 – 한국의 알덕후들

본인, 잠시나마 ACM-ICPC에 몸담았던 리틀 덕후로서 이 글을 씁니다. 제가 이쪽에서의 내공이 그렇게 높지 않기 때문에 기술적으로 뛰어난 포스팅이 되진 않겠지만 어느정도 이 분야에 발을 담그지 않았던 분들은 교양 선택정도의 기분으로 읽을만할 것입니다. 그럼 고고싱.

일단 당신이 알고리즘이 무엇인지 조차 모르는 순진한 이연희의 눈빛을 한 프로그래머(=병신)라 가정하고 알고리즘이 뭔가 설명해 주겠습니다. 알고리즘이란….이거에요. 저 10페이지 넘는걸 내가 어떻게 설명해. 위키 읽으세요. … 이건 너무 무책임한가. 쉽게 설명해서 문제를 풀어내는 방법론 같은거에요. 봅시다. 니가 1층부터 10층까지 우유를 돌려야 해요. 어떻게 하면 최소한의 힘을 써가며 우유를 다 돌릴까 10분간 고민을 마친 유능한 당신은 이런 방식을 채택했습니다. 1층에 우유통을 두고 1층에 배달. 우유 하나를 들고 2층에 올라가서 배달. 하고 다시 1층으로 내려와서 우유 들고 3층에 가서 배달. 다시 1층에 내려와서 우유 하나 들고 4층에…. 자 뭔가 이상하죠? 한 30층까지 있는 아파트면 반도 못돌리고 다리 아작나겠네요. 컴퓨터가 아무리 빠르다지만 그건 인간이 상상할 수 있는 범위에서나 그렇고 단위가 수십억 수백억번씩 반복되는 작업이 되면 컴퓨터라도(2009년에 집에서 사용하는 일반 CPU의 연산 능력으론) 버벅대기 시작합니다. 그래서 문제를 빠르게 풀면서 메모리는 적게 잡아먹는 방법을 연구하는 것입니다. 이런게 알고리즘 이에요. 암튼 넘어가죠. 다 아는얘기였죠? 솔직히 업계에 발 담근 프로그래머인데 알고리즘이 뭔지 모르면 조용히 부엌에 가서 접시물에 코 박으세요. 원.. 그 정신상태로 코딩해봐야 팀원만 고생임.

컴퓨터의 모든 분야가 그렇지만 알고리즘이란 분야에도 내공이란 것이 존재합니다. 그럼 알고리즘을 하는 사람들의 레벨을 알아보겠습니다. 초보부터 시작해볼까요?

1. 삐약 삐약

자료구조, 알고리즘 수업으로 만족하는 프로그래머. 학교에서 자료구조와 알고리즘은 수강했습니다. 스택이 뭔지 알고 큐가 뭔지도 알죠. 이론적으론 이해도 한거 같고 조금 재미도 있는 것 같은데 교수가 프로젝트 과제로 말도 안되는거 던져주면 욕부터 나옵니다. 아놔 ㅅㅂ 이건 컴퓨터 프로그래밍이랑은 너무 다르잖아. 내가 왜 0.1초에 목숨 걸어야 하는겨. 이러면 니 한계도 여기까지 인거죠. 평생 느려 터진 프로그램만 짜다가 코더로 늙어 죽는겁니다. 묘비명엔 이런 글이 남겠죠. “프로그래머 김아무개 O(n^3)의 N Queen Problem 해법을 구하고 죽다”

2. 엔트리 레벨

log(n)이란 표현에 호감이 가기 시작하는 사람들입니다. 왠지 n^2보단 n이 좋을 것 같고. 소팅도 무식하게 버블소팅 하는 것 보단 퀵소트가 아름답다는 감이 옵니다. 막무가내로 풀어선 답이 안나오는 컴퓨팅 문제들이 있다는 위기의식도 생기기 시작하죠. 이 레벨의 사람들은 일단 자료구조와 알고리즘 프로젝트 과제에서 적어도 5등안에 못들면 잠이 오지 않는 기특한 프로그래머 집단을 형성합니다. 게시판에 “님들 2번문제 푸셨삼? 나 0.5초에 답 나옴” 이라고 글을 올렸는데 “ㅋㅋㅋㅋ 님 난 노트북 똥컴에서 돌려도 0.03초임 장난하셈?” 이럼 그날은 다 잔거죠. 이렇게 과제 프로젝트에 매진하고 Time Complexity에 목숨걸기 시작하는 집단이 2번 엔트리 레벨입니다. 이런애들은 학교에서 점점 “저새끼는 밥먹고 코딩만 하나” 라는 행복한 평가를 받기 시작합니다.

3. 라이트 유저

전 감히 제가 이 집단에 속한다고 생각합니다. ACM-ICPC에 나가서 풍선도 좀 띄어보고 추후 논의할 4,5번 집단 사람들에게 낚여 탑코더 따위에도 발을 들여놓은 상태죠. ACM Regional에 나가서 대충 10위권에 입상할 정도로 알고리즘에도 파고들었습니다. 하지만 이 집단의 사람들은 서서히 현실에 눈을 뜨기 시작합니다. 아. 이 분야에서 저새끼 코드좀 치네란 평가를 듣기 위해선 많은걸 포기해야 한다는걸 알게되죠. 뱁새가 황새 따라가다 가랑이 찢어진다고 도대체 왜 난 아스탱처럼 안되는거야! 라고 자책하기 시작하면 이 업계 떠나야 합니다. 하지만 서서히 즐기는 여유가 생기죠. 여가시간에 네이버 툰을 켜는게 아니라 탑코더 알고리즘 페이지에 접속하기 시작한다면 당신은 이미 O(n)만 보면 피가 끓기 시작하는 덕후가 되어가는 것입니다. 엔트리 레벨 사람들이 n^2보단 n을 선호했다면 라이트 유저들은 대체로 노란 색보단 빨간 색을 선호합니다.

4. 리얼 덕후

이 집단부터 실력의 인플레이션이 발생합니다. 1,2,3번 집단 사람들의 실력이래봐야 다 거기서 거기에요. 저도 알고리즘 문제 푼다고 몇달을 리베에게 채찍맞아가며 울었던 기억이 나지만 자료구조 수강을 마친 학부생과 그닥 다를 것도 없습니다. 하지만 4번 레벨로 들어서기 시작하면 얘기가 좀 달라집니다. 일단 출신부터가 다릅니다. 우리가 고딩때 포르노 돌려보여 청춘열차를 달릴 즈음 이들은 정보올림피아드라는 괴 대회에 낚여 어린 시절을 허비합니다. 우리가 대학을 수능봐서 들어올 때 이들은 입상 성적 내밀고 특기자로 입학하기도 합니다. ACM-ICPC에선 대부분 10위 안쪽의 우수한 성적을 거둡니다. 그리고 알고스팟이란 곳에서 24/7 알고리즘 얘기를 하며 즐깁니다. 왜이러고 살까요.

5. 지존

탑코더에서 red rank 찍으신 분들입니다. 대표적으로 JongMan이란 분이 여기 속합니다. 이쯤되면 이분야에선 연예인 급입니다. 단적인 예로 전 이분의 학교, 여자친구 유무, 코딩 스타일, 알고리즘 히스토리를 알고 있지만 이분은 절 모르죠. 하하 ㅅㅂ. 종만님 외에 ainu7, 아스탱, 도멩, ryuwonha같은 분이 있습니다. 근데 아스탱님 탑코더 요즘 안하나보네요? 이름이 왜 노란색이죠? 나의 아스탱은 이렇지 않아요! (라곤 해도 이 사람 역시 나를 모름 ㅋㅋ)

6. 신

ACRush, Petr, 스냅드래곤같은애들. 얘들은 답이 없어요.. 이러고 살다 죽으라 해요.

6 comments.

  1. 제가 언제 채찍질을 했나여

  2. 3번과 4번 사이의 넘사벽,ㅋㅋ

  3. ㅋㅋㅋ

  4. 그 넘사벽에서 채찍질 하는 리베

  5. 안녕하세요. JMK Codement 연습생입니다 ^^*[...]

  6. 안녕하세요. 열심히 하셔서 좋은 성적 거두시길 바래요 :)

Post a comment.