지난 학기 조료구조 수업에서는 마지막 '우아한' 코드 선정에서 처음으로 선정되었는데, 이번 학기 조고리즘 수업에서는 첫 과제의 모범 코드로 선정되었다. 이번 선정 대상은 '5개의 우아한 코드'는 아니고 '5개의 대표적인 풀이'였다.

 

유사회문(Quasi-palindrome)을 찾는 과제였다. 간단히 생각하면 불일치 발생 지점에서 포인터를 넘겨서 재귀적으로 풀 수 있는, 그리디한 문제였다. 그러나 그 간단한 실마리를 구체화한 해법을 떠올리지 못해서, 브루트 포스 탐색 과정에서 나타나는 규칙성을 찾아내고 메모이제이션의 원리를 적용해서 최적화한 풀이를 제출했다. 정석 풀이가 아니었기에, "이런 풀이도 있으니 한 번 보세요" 느낌으로 내 코드가 선정된 것일 테지만, 64명의 만점자 중 선정된 5명에 내가 들어가 있다는 사실에 기분 좋았다.

 

백준 플래티넘을 찍고 나서 내가 어느 정도 이 분야의 진입 장벽을 막 넘어섰다는 느낌을 받았는데, 요즘 돌아오는 좋은 결과들도 이를 뒷받침 해주는 듯했는데, 그 장벽 너머에 역시 넓은 세계가 있고 고수가 많다는 걸 새삼 깨닫는다. 심지어는 같은 수업을 듣는 학우들 중에도 실력자가 엄청 많이 있는 것 같다.

 

 

위 사진에서 나 다음으로 글을 작성한 사람은, 위 사진에 등장하는 과제 채점 사이트의 프론트 엔드 개발자라서 눈여겨 보고 있었는데, 지난 학기 조료구조에서도 '우아한' 코드에 많이 선정되었던 사람이다. 깔끔한 풀이가 항상 인상적이었는데, 이번에는 간결하기까지 해서 더 놀라웠다. 아직 내가 컴퓨터 알고리즘의 깊이가 낮음을, 아직 내가 못 가본 곳이 많음을 상기시켜주는 코드였다.

 

누군가의 코드를 보고 감명받는 내가 감명이 고픈 건지, 누군가를 감명받게 하는 코드를 작성한 저 사람이 대단한 건지. 아무튼 열심히 하고 싶게 만드는 코드 리뷰였다.

+ Recent posts