처음으로 이 블로그의 이름과 맞는 글을 써본다.

2018년 3월에 알고리즘을 시작했고, 나름대로 재미를 붙였다.

백준 1200문제 가량을 풀 시간동안, 시간 복잡도를 줄이기 위해 다양한 고급 알고리즘을 접했고, Codeforces, ICPC, UCPC 등 다양한 알고리즘 대회에 참가했다.

그리고 오늘로 탈알고를 하려고 한다. 뭐 사실 오늘 코포 망해서 기분 좆같애서 쓰는 거 맞기는 한데, 이 주제는 이전부터 생각해 왔고 코포 망한 것은 트리거였을 뿐이다.

그동안 내가 느낀 것들을 간략히 적어보고자 한다.

1. 알고리즘은 마치 게임과 같다.

알고리즘은 input 넣어보고, 올바른 output 나오면 제출한다. 그 과정에서 내가 해야할 일은 적절한 시간복잡도와 공간복잡도를 유지하는 버그없는 코드를 짜내는 것 뿐이다.

그리고 제출하면 손쉽게 정답을 받을 수 있다.

그런데 현업에서 이렇게 완벽하게 input과 output이 마련되어 있을 일이 얼마나 있을까? 당장 프로젝트 하나만 해봐도 데이터 전처리부터 얼마나 힘든 일인지 알 수 있고, 이 과정은 굉장히 귀찮은 일이다.

그런데 알고리즘은 이 과정이 완벽하게 삭제된 이상적인 상황을 우리에게 마련해준다.

마치 우리가 공부를 안하고 게임을 하는 이유가 내 캐릭터가 강해지는게 바로바로 눈에 보여서 인것처럼, 알고리즘도 적당히 노력만 하면 빠르게 결과를 볼 수 있기 때문에 하면 참 재미있다.

2. 알고리즘은 일정 수준 이상으로는 오버킬이다.

알고리즘은 어느정도까지는 로직을 세우고 코드를 구현할 수 있게 해준다는 면에서 프로그래머로서의 소양을 기르는데 도움을 많이 준다.

그런데 일정 수준 이상 가면, 더이상 도움되지 않는다.

솔직히, 세그먼트 트리 정도만 가도 현업에서 사용할 일이 있을까?

그나마 그래프 이론 정도야 어떻게 모델링할 일 있으면 써야할지도 모른다.

좀 까놓고 말해서 Network flow, Convex hull, 2-SAT, LiChao Tree, Persistent Segment Tree 이런 거 전부 지적유희에 불가하다. 배워봤자 뭔가 새로 배웠다는 것이 뿌듯하기만 할 뿐 인생에 도움이라곤 하나도 되지 않는다.

3. 알고리즘은 깃헙 비우기에 딱 좋다.

알고리즘하면 시간 참 잘간다. 대학 강의 안듣고 백준 켜놓고 아무 문제 붙들고 있으면 강의가 끝나있다. 새로운 알고리즘 배워서 관련 문제 풀면 하루 가는 것은 일도 아니다. 사실, 인생에는 백준보다 대학 강의가 훨씬 도움될텐데 말이다.

아무튼 이 때문에, 정작 깃헙은 비워져 간다. 코드는 항상 짜는데 코드 올리는 사이트인 깃헙은 비워져간다. 기껏해야 PS 하면서 짠 코드 올리는건데, 이게 뭐 얼마나 의미가 있겠는가

나는 아직 취준생은 아니지만 이번에 인턴십 활동 때문에 자기소개서를 써야 했다.

그런데 쓸 게 없었다. 나름 대학 생활 동안 안 놀고 열심히 살았다고 자부하는데, 그 열심히 살았다고 자부하는 대부분의 시간이 알고리즘 공부에 쓰였기 때문이다.

그 시간에 내가 프론트엔드나 백엔드를 조금이라도 배워놓았다면, 그 시간에 내가 조그마한 프로젝트라도 완성했다면, 그 시간에 내가 자주 쓰이는 Framework들에 대해 찾아봤더라면, 깃헙이 채워져 있었을텐데 후회될 뿐이다.

4. CP 수상실적 도 물론 좋은 스펙이다. 니 머리만 좋다면

머리 안좋으면 CP 하지마라.