게임으로 익히는 코딩 알고리즘 - 취업, 이직, 승진 준비생들을 위한 알고리즘 기본 + 코딩 테스트 트레이닝 북, 2019년 세종도서 학술부문 선정
김영기 지음 / 한빛미디어 / 2019년 5월
평점 :
장바구니담기


  리뷰에 앞서 본 리뷰는 한빛 출판 네트워크에서 진행한 ‘나는 리뷰어다’ 이벤트에서 제공받은 책으로 진행한 것을 밝힙니다.


  정확히 기억이 나지는 않지만, 4~5년 전부터 현재 다니고 있는 회사에서 프로그램 코딩 실력을 시험하는 제도를 도입하고, 사원들에게 사내 자격을 취득하도록 독려하고 있다. 자격 취득을 위해 시험을 보면, 알고리즘을 응용하여 주어진 문제를 정해진 시간내에 푸는 문제가 제시된다. 현업에서 작성하는 코드와는 일견 관련이 없는 것처럼 보이고, 고급 알고리즘을 사용하지 않더라도 당장 프로그램을 구현하는 데에는 문제가 없는 경우도 많이 있다. 그러다 보니, 왜 이런 자격을 취득해야만 하는지에 대해 의문을 제기하는 사람들 역시 존재한다.


  하지만, 이러한 자격 시험의 목적은, 프로그램 작성을 위한 기초 체력을 키우는, 즉 유연한 생각을 가지고 복잡한 문제를 제대로 해결을 할 수 있도록 하는 데 있다고 생각한다. 좀 더 높은 자격을 취득하기 위해, 평소에는 소홀히 했던 자료구조를 다시 공부하게 되고, 이를 응용한 문제를 다시 풀어 보면서, 이런 저런 문제 풀이 방법을 고민해보고... 이런 과정을 반복하면서 굳어져가는 머리를 조금씩 부드럽게 하는 연습을 할 수 있다고 생각한다.


  이러한 자격 취득을 현업 개발자 뿐만 아니라, 취업을 준비하는 사람들에게도 요구를 하다보니, 시중에는 여러가지 알고리즘 트레이닝 관련 책들 및 온라인 judge 사이트가 다수 존재한다. 보통 이러한 책들에서 설명하는 문제의 유형은 온라인 사이트에서 제시하는 내용과 크게 다르지 않다. 책을 이용해 문제를 풀기 위해 필요한 알고리즘을 종류와 원리를 이해하고, 이를 바탕으로 온라인 사이트에서 문제를 풀어보고 하는 과정을 반복하면서 실력을 늘리는 분들이 많이 있을 것이라 생각된다. 


  아무래도 어려운 문제 풀이 과정을 반복하다보면 지루해지는 감이 있는 것이 사실이다. 리뷰를 하기 전에는 사실 codinggame 이라는 온라인 사이트가 존재하는 줄 몰랐다. 리뷰를 하면서 문제를 직접 사이트에 접속해 풀어보면서, 코드 작성과 디버깅 모두 지루함을 느끼지 않는 다는 것을 느꼈다. 본 사이트에 제시된 문제들은, 작성자가 특정 조건을 만족하고, Test case들을 풀어나감에 따라 화면에 게임이 진행되는 것을 볼 수 있다. 그리고 문제 디버깅 역시 단계별로 게임 진행 상황을 보면서 체크할 수 있어 생각한 것보다 더 재밌게 코드 작성을 즐길 수 있도록 유도하고 있다. 그리고 이 사이트의 또 다른 장점은 문제 풀이에 사용할 수 있는 언어가 다양하다는 점이다. 보통 온라인 사이트들을 보면 C, C++ 만을 이용할 수 있는 곳이 많이 있는데, 이 곳은 Python, Ruby, Go, C# 등 인기있는 다양한 언어를 이용할 수 있다.


  이 책의 저자는, 즐겁게 코드를 작성하고 실력을 늘려갈 수 있도록 해당 사이트의 이용방법에 대한 설명을 시작으로, 간단한 문제부터 어려운 난이도까지 문제를 풀어가면서 알고리즘 트레이닝 및 사이트 이용방법 모두에 대해 설명을 해 주고 있다. 책에서는 단순히 문제만 푸는 것이 아니라, 어떤 문제에 어떤 알고리즘이나 자료구조를 적용하여 문제를 푸는 것이 좋은지, 그리고 어떻게 문제 풀이를 접근해야 하는지도 하나 하나 짚어주고 있어, 알고리즘 트레이닝 입문자에게 있어, 큰 도움이 될 것으로 판단된다. 사실 문제를 보고 덥썩 코딩부터 시작하는 사람들도 많이 있는데, 저자는 어떤 식으로 문제를 파악해야 하는지, 그리고 문제를 푼 후, 속도를 최적화하기 위해 접근해야 하는 방식에 대해서도 집어주고 있어, 입문자가 아니라 문제 풀이 방식을 배우고자 하는 분들에게도 도움이 될 수 있다고 생각한다. 또 Python을 이용한 문제 풀이 과정을 따라 하면서 Python 언어에 익숙치 않은 사람들에게 있어서, 적절한 Python 사용법도 익힐 수 있다.


  그러나, 이 책의 목적과 다르게 고급 실력을 키우려는 사람들이 이 책을 선택했을 때는, 원하는 바와 맞지 않을 수 있다고 생각한다. 대부분의알고리즘 트레이닝 책들과 마찬가지로 이 책 역시 반드시 다루어야 하는 내용들을 다루고 있다. 이 부분은 중급 이상의 고급 문제 풀이 과정을 기대하는 분들에게는 이 내용들이 시중에 나와있는 다른 책들의 내용과 중복되는 면이 있다고 생각할 수 있기 때문이다.


  하지만, codinggame 사이트를 통해 즐겁게 코드를 작성하고, 이를 통해 프로그램 작성의 응용력 및 기초 체력을 증진 시키는 것을 원하는 분들에게는 이 책이 목적에 딱 맞는 책이 될 것이다.


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo