생각이 문제지!
코딩 능력이 아니라
알고리즘 사고력이 필요하다
문제 해결은 퍼즐을 해결하는 과정과 같다
알고리즘 테스트 != 코딩 능력
알고리즘 테스트는 코딩 능력 테스트가 아니다. 알고리즘 테스트가 코딩 능력이라고 생각하는 것은 흔히 하는 실수이며, 실제로는 알고리즘 사고력이 핵심이다. 코딩을 못하는 게 아니라 알고리즘 사고력을 배우지 못했기 때문이다. 상위 레벨의 접근법으로 문제를 이해하고 풀어내는 과정이 알고리즘 사고력의 핵심이다. 문제에 급급해서는 상위 레벨의 접근법을 배울 수 없다. 문제를 어떤 전략으로 접근할지 결정하는 알고리즘 사고력을 배워야 한다.
알고리즘 사고력을 위해 엄선된 퍼즐
직접 코딩을 하는 책은 아니지만, 알고리즘을 설계하거나 분석하기 위한 일반적인 원리를 보여줄 만한 퍼즐을 골랐다. 이러한 퍼즐을 통해 배울 수 있는 알고리즘 설계 전략은 다음과 같다.
완전 검색
역추적
감소 정복
분할 정복
변환 정복
탐욕 접근법
반복 향상
동적 프로그래밍
분석 기술
마방진, N-퀸 문제, 애너그램 감지, 최단 경로 개수, 네덜란드 국기 문제 등의 퍼즐 문제는 알고리즘 코딩 테스트의 단골 문제이며, 다양한 코딩 테스트 사이트에서 문제로 출제된 것을 확인할 수 있다. 문제를 이해하고 풀 수 있다면 코딩 능력은 문제가 되지 않는다. 이것이 이 책의 핵심 가치다.
퍼즐의 난이도별 접근
퍼즐이 어려운 독자를 위해 150개의 퍼즐을 난이도에 따라 초급, 중급, 고급으로 분류했다. 알고리즘 풀이 기법과 난이도에 따라 다양한 방식으로 문제에 접근할 수 있게 구성되어 있으며 이를 통해 알고리즘 디자인 전략과 분석 기법을 학습할 수 있게 했다.
빌라노바 대학교의 컴퓨터 공학과 교수이며 인기 있는 알고리즘 디자인과 분석 교과서의 저자이다. 그의 책은 중국어, 한국어, 그리스어, 러시아어로 번역되었다. 수학적 최적화 이론, 소프트웨어 엔지니어링, 데이터 관리, 알고리즘 디자인, 컴퓨터 과학 교육 등에 논문을 출판했다.
마리아 레비틴은 독립 컨설턴트이다. 주요 소프트웨어 회사와 다국적 기업을 위한 비즈니스 애플리케이션을 개발한 경력을 쌓은 후에 웹 기반 애플리케이션과 무선 컴퓨팅의 전문가로 활동하고 있다.
서울대학교 물리학과에서 박사 학위를 받고 지금은 경기도 모처의 기업 연구소에서 나노과학을 연구하고 있다. 유치원에 들어가기 전부터 아무것도 모르고 물리학을 하겠다고 마음먹은 이후로, 40대 중반에 이른 지금까지도 “어떤 사람이 되고 싶으냐?”라는 질문을 받으면 “훌륭한 과학자요”라고 대답하고 있다.