알고리즘을 수업할 때 다양한 예시를 찾기 힘들었는데 책을 보면서 아! 이 내용이 이 알고리즘이구나 하고 생각할 수 있었습니다. 학생들이 쉽게 알 수 있는 생활속 예제. 게임을 연결하니 알고리즘을 더 쉽게 알 수 있습니다. 퍼즐을 설명하면서 알고리즘을 왜 연결하지 못 했을까 하는 생각도 들고. 재미있게 알고리즘을 학습할 수 있는 것 같아서 더 좋습니다. 강력 추천!!! |
전공 서적같은 대학 교재를 비롯해서, 일반적인 알고리즘이나 자료구조 서적은 알고리즘과 자료구조 자체를 설명하는데 포커스를 두고 있는데, 일본에서 출간되는 알고리즘 서적들은 특이하게도 용도, 그러니까 해결해야 할 문제를 먼저 제시하고 그걸 해결하기 위해 알고리즘과 자료구조를 어떻게 사용하는 지 설명하는 스타일의 책들이 있습니다. 이 책, 퍼즐로 이해하는 알고리즘의 경우도 알고리즘이나 자료구조를 먼저 설명하는 게 아니라 잘 알려진 퍼즐을 어떻게 하면 컴퓨터 프로그래밍을 통해 해결할 수 있는지를 설명하며, 그 과정에서 각 퍼즐에 적합한 알고리즘과 자료구조를 설명하는 식으로 전개됩니다. 밑도 끝도 없이 일단 스택이고 링크드 리스트 같은 자료구조를 좌라락 설명하는게 아니라 해결해야 할 문제를 먼저 선언하기 때문에 자연스럽게 집중하게 되며, 각 자료구조와 알고리즘의 특성과 용도를 보다 직접적으로 경험할 수 있게 해 줍니다. 책에서 알고리즘을 구현하는 프로그래밍 언어가 C++ 이긴 하나, 로직의 작성에 포커스를 맞추고 있기 때문에 C++ 언어를 모르더라도 크게 문제가 될 것 같진 않았습니다. 기존 알고리즘 서적이 답답하고 어렵다고 생각해왔던 분이라면 꼭 읽어볼 만한 책이라 생각됩니다. YES24 리뷰어클럽 서평단 자격으로 작성한 리뷰입니다 |
예제를 통해 문제를 풀고 만들고 해결하며 배우는 생각하는 힘. 퍼즐은 어른, 아이, 남녀노소 할 거 없이 모두가 좋아하는 게임 입니다. 그런 퍼즐을 알고리즘을 통해 이해하면 더욱 재미있고 흥미롭게 느껴질 거 같습니다. 퍼즐을 완성 하고 나서 느끼는 성취감 또한 어른, 아이 할 것 없이 큰데 퍼즐을 통해 성취감과 자신감이 높아질 수 있어서 집에서 자주 퍼즐을 하고 있습니다. 알고리즘은 문제를 푸는 일종의 도구입니다. 방법에 상관없이 같은 방법으로 풀고자 하는 문제의 답을 찾아낸다는 점이 알고리즘의 특징입니다.이 책은 퍼즐 프로그램을 만들어보며 알고리즘으로 사고하는 능력을 즐겁게 연마할수 있습니다. 1장에서는 모든 경우의 수를 살펴보는 "완전 탐색"을 통해 퍼즐을 풀어볼수 있습니다. 완전 탐색은 알고리즘의 설계에 기초가 되는 중요한 방법입니다. 1장에서는 텐퍼즐, 고마치잔,충식산을 푸는 탐색 알고리즘에 대해 설명하고 있습니다. 2장에서는 1장에서 탐색에 익숙해졌으니 그래프도입을 알아 봅니다.그래프는 대상물의 관계성을 나타냅니다.2장에서는 스도쿠, 복면산,미로를 통해 그래프 탐색 알고리즘인 깊이 우선 탐색과 너비 우선 탐색에 대해 설명하고 있습니다. 3장에서는 여러 탐색 방법을 통해 심화 알고리즘이 필요한 15퍼즐, 4x4오델로,도미노퍼즐을 풀어볼수 있습니다. 그림과함께 설명을 해주고 있습니다.이제 스스로 생각하고 풀어보며 책에 나오는 그림을보고 해결법을 이해하고 알고리즘을 해결해 나갈수 있겠습니다. 아직 조금 어렵기도 하지만 차근차근 하다보면 이해가 될것 같습니다.알고리즘을 잘 다루는 그날까지 내가 직접 문제를 풀고,만들고 해결하며 재미있게 퍼즐을 즐길수 있을거 같습니다. YES24 리뷰어클럽 서평단 자격으로 작성한 리뷰입니다 |
이 책에 미로가 가장 오래된 퍼즐이라 소개되어 있습니다. 기원전 1200년전 그리스 점토판에 그려진 미로가 출토되었다고 합니다. 이는 '생각하는 행위는 시대를 초월해 즐길 수 있는 최고의 유희'이기 때문이라고 저자는 말합니다. 퍼즐은 체계적인 사고를 요하는 두뇌활동이기 때문에 우리는 일상 생활에서 다양한 퍼즐을 즐기고 있습니다. 퍼즐을 풀기 위해 사고하는 과정이 곧 알고리즘을 설계하는데 큰 도움이 되는 것 같습니다. 이 책은 알고리즘 입문으로 텐퍼즐(ten puzzle): 완전탐색, 고마치잔: 재귀함수, 충식산: 가지치기, 그래프 알고리즘으로 스도쿠: 깊이우선탐색, 복면산: 깊이우선탐색, 미로: 너비우선탐색, 심화알고리즘으로 15퍼즐: 반복적 깊이 증가 A*, 4*4오델로: 게임탐색, 편집거리: 동적계획법, 도미노 채우기: 매칭 등 익숙한 퍼즐에서부터 생소한 것들 까지 다양한 퍼즐들이 소개되어 있고 퍼즐을 풀기위한 알고리즘도 소개되어 있습니다. 우선 복면산을 예로 든다면 퍼즐에 대한 소개와 다양한 복면산 문제 풀어보기가 있습니다.
그리고 복면산을 푸는 알고리즘을 생각해보기 위해 깊이우선탐색을 활용합니다.
복면산을 푸는 알고리즘과 프로그램을 만들고 결과값을 제시합니다.
이어서 복면산을 만드는 알고리즘을 만듭니다.
여기서 끝나지 않고 더 많은 복면산 관련 문제를 제시합니다.
다른 모든 퍼즐에 대해서도 위와 같은 과정을 반복합니다. 퍼즐은 점점 어려워지고 알고리즘을 만드는 과정도 어려워집니다.
그리고 퍼즐을 좋아하는 독자들을 위해 챕터마다 다양한 퍼즐에 대한 많은 상식들을 추가해 놓아서 지루하지 않고 재미있습니다.
퍼즐에 대한 다양하고 풍부한 소개뿐 아니라 알고리즘에 대한 설명도 칼럼 형식으로 있습니다.
퍼즐에 대한 흥미에서 시작해 퍼즐을 푸는 사고과정이 자연스럽게 알고리즘을 만들고 코딩으로 이어지도록 하는 책인것 같습니다. 또한 프로그램을 만들면서 퍼즐에 대한 깊이있는 이해를 이룰수 있습니다. 특히 작가는 퍼즐 프로그램을 만들면서 알고리즘 실력을 연마했다고 합니다. 퍼즐을 좋아하는 사람이라면 무척 재미있는 책입니다. 'YES24 리뷰어클럽 서평단 자격으로 작성한 리뷰입니다'
|
퍼즐로 이해하는 알고리즘이라는 책 제목 마주하고, 퍼즐과 알고리즘 사이의 관계에 대해 책을 읽고 싶은 마음이 일어났다. 퍼즐은 논리적 사고로 시행착오를 거쳐 즐겁게 풀어내는 문제다. 알고리즘은 문제를 이해하고 그에 맞는 해결법을 찾아 문제를 해결하는 능력을 말한다. 생각의 힘을 키우는 퍼즐, 퍼즐을 푸는 알고리즘,… 둘 사이의 길을 나아가는 책 읽기를 할 수 있다. 책 읽기를 통해 퍼즐에 대한 이해의 시간을 가질 수 있고, 퍼즐 문제를 해결하는 알고리즘을 배울 수 있다. 이 책을 통해,… 텐퍼즐, 고마치잔, 충식산, 스도쿠, 복면산, 미로, 15퍼즐, 오델로, 편집 거리, 도미노 채우기라는 다양한 퍼즐을 알게 된다. 그리고 다양한 퍼즐뿐만 아니라 퍼즐을 푸는 여러 알고리즘 방식을 배울 수 있다. 스도쿠 퍼즐 문제는 깊이 우선 탐색 방법을 적용할 수 있고, 미로 퍼즐 문제는 너비 우선 탐색 방법을 적용할 수 있다. 요새 취미로 스도쿠 문제 풀기를 하면서 관심 갖게 된 퍼즐에 대해, 알고리즘과 연결하여 생각해 볼 수 있게 되어 책 읽기가 즐거운 시간으로 와닿았다. 이 책을 읽으면서 내가 좋았던 건,… 퍼즐 문제 푸는 알고리즘 배우는 시간을 통해 생각의 힘을 기르는 배움의 과정을 경험할 수 있다는 것이다. ‘생각하는 행위는 시대를 초월해 즐길 수 있는 최고의 유희’라는 책 속의 문장의 여운을 느끼며 리뷰를 기록한다. - YES24 리뷰어클럽 서평단 자격으로 작성한 리뷰입니다. |
프로그래밍이 필수 역량으로 자리 잡은 시대, 코딩은 이제 어른들에게도 필수적인 학습 과제가 되었다. 하지만 프로그래밍을 시작하기 막막한 사람들이 많다. 특히 핵심적인 알고리즘을 이해하지 못하면 프로그래밍의 기초인 '수학적 사고'를 익히기 어렵다. 이 책은 친숙한 상식에서 출발하여 프로그래밍에 대한 흥미를 높여주고 수학적 사고를 키울 수 있도록 돕는다.
- 목차: 책은 알고리즘 입문으로 시작하여 텐퍼즐을 통해 완전 탐색을 설명하고 스택과 큐, 재귀 함수를 활용한 고마치잔, 가지치기, 춤추는 산 알고리즘까지 1장에서 다룬다. 2장에서는 그래프 알고리즘을 소개하며 스도쿠와 복면산으로 깊이 우선 탐색이 등장하고 미로를 통해 너비 우선 탐색을 설명한다. 3장에서는 반복적 깊이 증가와 게임 탐색(오델로), 동적 계획법에 매칭 등 심화 알고리즘을 다루며 다양한 알고리즘을 경험할 수 있도록 구성되어 있다.
- 인상적이었거나 기억에 남는 파트 : 재귀 함수는 기초 알고리즘 중에서도 어려운 개념 중 하나이다. 에도 시대부터 유래된 고마치잔 퍼즐은 101가지 해법이 존재하지만 사람이 모든 방법을 시도하기는 어렵다. 그러나 알고리즘을 이해하면 굳이 직접 풀 필요가 없다. 공백에 다섯 종류의 연산자를 넣는 경우의 수는 39만 가지로 재귀 함수를 사용하면 획기적으로 시간을 단축할 수 있다는 점이 흥미로웠다. 재귀 함수가 초반에 등장하는 이유는 시간 복잡도 측면에서 완전 탐색만큼 효율적이지는 않기 때문이다. 그럼에도 불구하고 방대한 연산을 크게 줄여준다는 점은 인상적이다.
- 실용적이었거나 도움되었던 파트 : 2장의 그래프 알고리즘은 나뭇가지처럼 아래로 뻗어나가는 깊이 우선 탐색과 양옆으로 넓게 탐색하는 너비 우선 탐색을 다룬다. 미로와 스도쿠 예시를 통해 두 방식의 차이점을 시각적으로 이해할 수 있었고 쾨니히스베르크의 다리 문제를 통해 알고리즘이 실생활에서 어떻게 활용되는지 알 수 있었다.
- 이 책이 도움이 되는 사람을 꼽는다면 : 알고리즘을 이해하고 싶은 프로그래밍 및 코딩 입문자에게 시각적이고 개념적인 설명을 제공하여 첫 알고리즘 학습서로 추천한다. 코딩 테스트를 준비하는 사람들에게도 수학적 사고 능력을 향상시키는 데 도움이 될 것이다. 기초부터 심화까지 폭넓은 내용을 다루고 있어 코딩의 기반을 다지는 데 유용하다.
- YES24 리뷰어클럽 서평단 자격으로 작성한 리뷰입니다. - |