책 제목 : 게임으로 익히는 코딩 알고리즘
저자 : 김영기
출판년도 : 2019.05.06

게임개발자라는 직업을 가지기 위해, 그리고 게임개발자가 되서도 몇몇권의
알고리즘 책을 읽은 기억이 있다.
소설방식의 알고리즘 책 부터 하드커버의 흉기같은 알고리즘 바이블.
알고리즘이나 자료구조론을 공부하는건 참 힘들기도 하고 어떤 경우에는 희열감도 있다.
기본적으로 알고리즘은 어렵다.
알고리즘은 결국 어떤 문제를 해결하기 위한 방법및 과정이고 좀 더 좋은 방법을 찾기위해
열심히 고민해야하기 때문에 복잡하다.
그렇기 때문에 더 좋은 방법을 생각해내거나 풀어냈을 경우 보람과 성취감이 있다.


이 책 또한 알고리즘이라는 쉽지않은 학문을 쉽게 배우는 것이 목표다.
책의 목차는 아래 "목차열기"를 참조.
PART 01 코딩게임 첫걸음 떼기
1. 알고리즘 시작하기 : 알고리즘은 무엇이고 왜 필요할까?
1-1 컴퓨터 알고리즘
1-2 알고리즘은 왜 필요할까?
1-3 알고리즘은 어떻게 학습할까?
1-4 알고리즘의 성능은 어떻게 표현할까?
2. 코딩게임 살펴보기 : 게임으로 배우는 알고리즘
2-1 코딩게임이란?
2-2 화면 구성 알아보기
2-3 사용자 정보 보기
3. THE DESCENT : 반복문으로 가장 높은 산을 파괴하라
3-1 문제 설명
3-2 어떻게 풀까요?
3-3 필요한 알고리즘은?
조건문
최댓값 구하기
3-4 풀어 봅시다
3-5 더 생각해 봅시다
4. TEMPERATURES : 가장 낮은 절댓값을 찾아라
4-1 문제 설명
4-2 어떻게 풀까요?
절댓값
4-3 필요한 알고리즘은?
반복문
split의 용도
4-4 풀어 봅시다
4-5 더 생각해 봅시다
배열
5. CHUCK NORRIS : 0만 가지고 2진수 표현하기
5-1 문제 설명
5-2 어떻게 풀까요?
5-3 필요한 알고리즘은?
10진수를 2진수로 변환하기
인코딩하기
5-4 풀어 봅시다
5-5 더 생각해 봅시다
2진수 변환
문자열 슬라이스 기능
비트 시프트 연산
PART 02. 문제 속에서 답을 찾는 실전 알고리즘
6. STOCK EXCHANGE LOSSES : 발끝에서 사서 머리에서 팔아라
6-1 문제 설명
6-2 어떻게 풀까요?
6-3 필요한 알고리즘은?
문제 분석 능력
6-4 풀어 봅시다
6-5 더 생각해 봅시다
코드에 대한 이해도 높이기
다른 방식으로 접근하기
7. THERE IS NO SPOON : 2차원 배열에서 좌표 찾기
7-1 문제 설명
7-2 어떻게 풀까요?
7-3 필요한 알고리즘은?
배열
2차원 배열
중첩 반복문
7-4 풀어 봅시다
7-5 더 생각해 봅시다
2차원 배열
시간 복잡도 O(n)
중첩 반복문
8. WAR : 큐와 스택으로 벌이는 한판 게임
8-1 문제 설명
8-2 어떻게 풀까요?
8-3 필요한 알고리즘은?
큐
스택
8-4 풀어 봅시다
8-5 더 생각해 봅시다
9. SCRABBLE : 해시맵으로 단어 만들기
9-1 문제 설명
9-2 어떻게 풀까요?
9-3 풀어 봅시다-1
9-4 필요한 알고리즘은?
해시맵
9-5 풀어 봅시다-2
해시맵 풀이
9-6 더 생각해 봅시다
해시의 의미
해시맵의 제약
10. SHADOWS OF THE KNIGHT : 폭탄의 위치를 찾는 가장 빠른 방법
10-1 문제 설명
10-2 어떻게 풀까요?
10-3 필요한 알고리즘은?
이진 탐색
이진 탐색의 시간 복잡도
10-4 풀어 봅시다
10-5 더 생각해 봅시다
M×N 배열에서 시간 복잡도
이진 탐색의 전제 조건
11. THE GIFT : 돈을 나누는 가장 공평한 방식
11-1 문제 설명
11-2 어떻게 풀까요?
11-3 필요한 알고리즘은?
탐욕 알고리즘
탐욕 알고리즘으로 최적의 해 찾기
11-4 풀어 봅시다
11-5 더 생각해 봅시다
무차별 대입법 / 동적 프로그래밍
외판원 문제
12. DWARFS STANDING ON THE SHOULDERS OF GIANTS : 재귀 함수를 사용해 트리의 높이 구하기
12-1 문제 설명
12-2 어떻게 풀까요?
12-3 필요한 알고리즘은?
그래프
너비 우선 탐색과 깊이 우선 탐색
재귀
12-4 풀어 봅시다
12-5 더 생각해 봅시다
그래프와 트리
단방향 그래프와 양방향 그래프
13. SKYNET REVOLUTION : I will be back to search
13-1 문제 설명
13-2 어떻게 풀까요?
13-3 필요한 알고리즘은?
그래프
너비 우선 탐색
13-4 풀어 봅시다
13-5 더 생각해 봅시다
깊이 우선 탐색과 최단 경로
노드 간 이동 시간과 최단 거리
PART 03. 고급 퀴즈 해결하기
14. TAN NETWORK : 최단 경로를 알려드립니다
14-1 문제 설명
14-2 어떻게 풀까요?
14-3 필요한 알고리즘은?
다익스트라 알고리즘
14-4 풀어 봅시다
14-5 더 생각해 봅시다
다익스트라 알고리즘 적용이 불가한 경우
다익스트라 알고리즘의 단점
15. ROLLER COASTER : 최고의 롤러코스터 타이쿤 되기
15-1 문제 설명
15-2 어떻게 풀까요?
15-3 풀어 봅시다-1
15-4 필요한 알고리즘은?
원형 큐
동적 프로그래밍
15-5 풀어 봅시다-2
15-6 더 생각해 봅시다
시간 초과 개선 방법
부록 A. 먼저 취업한 선배들의 도움되는 Talk Talk
부록 B. 프로그램 이해에 도움되는 수도코드
책의 내용...
책의 내용은 크게 3가지로 나뉜다.
첫 파트는 알고리즘과 코딩에 대해 쉽게 접근할 수 있도록 쉬운내용을 먼저 소개한다.

거의 프로그래밍 언어의 기본 문법위주의 내용이다.
두번째 파트는 큐, 스택, 해시, 그래프같은 자료구조에 대한 내용이 주를 이룬다.

실제적으로 자료구조론과 알고리즘은 서로 밀접한 관계를 가진다.
세번째 파트는 재귀, 탐색, 길찾기, 동적프로그래밍등 여러 프로그래밍 알고리즘에 대해 학습한다.

결국은 접근, 활용, 응용처럼 처음에는 쉬운난이도에서 고난이도로 간다.
첫파트에서는 알고리즘에 대한 간단한 소개와 이 알고리즘을 배우기 위한 수단에 대해 설명한다.
바로 코딩게임이란 것을 수단으로 알고리즘을 학습한다.


알고리즘을 공부하는 수단이 게임이라는 것이 정말 참신하다.

첫번쨰 파트는 전반적으로 간단한 내용을 다루었다.
그래서 난이도는 Easy이다.

두번째 파트에서는 자료구조에 대해 다룬다.
자료구조는 프로그래밍에서 데이터를 구조적으로 표현하는 방법에 대한 내용이라
처음 보는 사람에게는 생소한 내용이 많다.
큐와 스택, 해시맵, 이진탐색등 듣기만 해도 어려운 내용들이 많다.
이 파트에서는 이 자료구조를 이용해서 코딩게임을 할 수 있다.


세번째 파트에서는 알고리즘을 활용해서 좀 더 어려운 문제에 도전해 보는 파트다.

최단경로, 원형와 같은 문제에 대해 고민하고 해결한다.
그리고 뒤에 부록으로 실려있는 개발자들의 인터뷰 내용도 꽤나 재미있다.
현 개발자들의 노하우와 마인드, 철학 등을 엿볼 수 있다.
읽어보면 많은 도움이 된다.


책을 읽으면서...
많은 기술서, 학습서를 읽어왔지만 이 책만큼 공부를 재미로 매칭시킨 예는 보지 못했다.
알고리즘도, 자료구조론, 프로그래밍 모두 재미있게 공부하기는 힘든 영역이다.
많은 입문서들이 좀 더 쉽게, 체계적으로 배울수 있도록 배려 했다면 이 책은 쉽게 접근해서
재미있게 배우도록 배려했으며 이를 위해 코딩게임이라는 기존 플랫폼을 잘 활용했다.
책의 구성도 무척 편하게 되어 있다.
각 챕터의 첫 페이지에서 이 챕터는 어떤 내용이 나올 것 인지를 알 수 있고,
각 챕터내 일관된 구성으로 책을 체계적으로 편하게 학습할 수 있도록 한다.
문제설명 - 푸는방법 - 필요한 알고리즘 - 코드에 대한 이해도와 같은 형식으로 구성되어 있다.
만약 처음 알고리즘 및 자료구조론 책을 봐야하거나 코딩게임에 대해 입문하려 할 경우
이 책은 충분히 만족할 만한 내용을 담고있다.
이 책에 대한 자세한 내용은 한빛출판네트워크에서 확인해 볼 수 있다.
참고 링크
- 코딩게임
- 책 소개