퍼즐로 배우는 알고리즘: with 파이썬 (21가지 퍼즐을 풀면서 배우는 알고리즘과 프로그래밍의 원리)

퍼즐로 배우는 알고리즘: with 파이썬 (21가지 퍼즐을 풀면서 배우는 알고리즘과 프로그래밍의 원리)

$21.14
Description
알고리즘의 기초를 퍼즐로 배우자
프로그래밍이란 말을 들으면 코드를 만들어내는 코딩만 떠올리기 쉽지만 그에 못지않게 문제를 해결할 수 있는 알고리즘 능력 역시 중요하다. 알고리즘이란 문제를 이해하고 그에 맞는 해결법을 떠올리게 하는 문제 해결 능력을 말한다. 그렇다면 알고리즘 실력은 어떻게 기를 수 있을까? 이 책은 그에 대한 답으로 알고리즘 퍼즐을 소개한다.
이 책은 웹사이트나 각종 도서에서 많이 접할 수 있는 알고리즘 퍼즐 21가지를 통해 프로그래밍에 기초가 되는 다양한 알고리즘 유형을 소개한다. 각 퍼즐은 정렬, 탐색, 분할정복, 그래프 등 하나의 알고리즘을 주제로 그에 맞는 해결법을 함께 고민한다. 퍼즐을 보고 가장 먼저 떠올릴 수 있는 해결책에서 시작해 더 좋은 방법을 찾아 하나씩 개선해가며 최종적으로는 새로운 알고리즘까지 구현해 그 장점을 직접 확인하는 식이다. 코딩에 관한 설명은 파이썬으로 진행되며 각 퍼즐을 해결하는 데 필요한 데이터 구조와 프로그래밍 구조 같은 코딩 지식 역시 함께 설명해 파이썬에 대한 부담을 느끼지 않고 구현이 가능하도록 구성되어 있다. 또한 스도쿠나 카드 마술, 하노이의 탑처럼 한번쯤 들어보았을 주제들을 퍼즐로 만들어 프로그래밍적인 해결법을 고안하며 일상 속에 숨어있는 알고리즘에 대한 흥미를 자극한다.
알고리즘 능력에 대한 관심도는 점점 높아지고 있다. 기업에서 개최하는 알고리즘 대회의 수는 점점 늘어나고 있으며 중/고등 소프트웨어 교육에서도 학생들의 문제 해결 능력과 알고리즘 설계 능력 향상을 목표로 잡고 있다. 단어만 봐선 어려울 것이란 생각이 먼저 드는 알고리즘이지만 이 책을 따라 21개의 퍼즐을 해결해나가다 보면 어느새 그에 대한 관심은 물론 실력도 함께 늘어 있을 것이다.
저자

SRINIDEVADAS

MIT전기공학과와컴퓨터공학과의교수를겸임하고있으며,MIT에서MacVicar펠로우를수여받았습니다.이책은실제MIT에서수업하는내용을정리한것으로서,유튜브의MITOpenCourseWare에있는영상을통해저자의강의를볼수있습니다.

목차

퍼즐01_모두똑같이만들기
1-1연이어서있는마음이통하는사람들찾기
1-2문자열,리스트그리고튜플
1-3알고리즘을코드로
1-4코드최적화
1-5리스트의생성과수정
1-6영역
1-7알고리즘최적화
1-8한번에찾아내는알고리즘
1-9알고리즘활용

퍼즐02_파티에참석하기가장좋은시간
2-1시간확인하고다시또확인하기
2-2똑똑한시간확인방법
2-3정렬의대표주자

퍼즐03_다른사람의마음읽기
3-1조수역할코드작성하기
3-2마술사역할의코드작성하기
3-3혼자놀기의진수-트릭의달인되기
3-4데이터인코딩
3-5네개카드의트릭

퍼즐04_여왕님들,떨어지세요
4-1체계적인탐색
4-22차원리스트/배열체스판
4-31차원리스트/배열의체스판
4-4완전탐색

퍼즐05_제발유리구슬이깨지길
5-1두개의구슬을가지고효율적으로탐색하기
5-2d개의구슬을가지고효율적으로탐색하기
5-3두개의구슬로실험횟수줄이기

퍼즐06_가짜를찾아라
6-1분할정복
6-2반복적분할정복
6-33진수표기법
6-4그외유명한저울질퍼즐

퍼즐07_제곱근구하기
7-1반복적검색
7-2구간이분탐색
7-3이산이분탐색
7-4삼분탐색?

퍼즐08_누가저녁파티에오지않게될까?
8-1첫시도
8-2항상가장많은경우선택하기
8-3모든조합생성하기
8-4친하지않는조합제거하기
8-5최대조합고르기
8-6메모리사용량최적화하기
8-7알고리즘활용

퍼즐09_영재발굴단
9-1조합하나씩만들고테스트하기
9-2재능이모자란조합결정하기
9-3알고리즘활용

퍼즐10_너무많은여왕님들
10-1재귀적인최대공약수
10-2재귀적인피보나치수열
10-3재귀적인N-퀸
10-4재귀적용하기

퍼즐11_정원에타일을깔아주세요
11-1병합정렬
11-2병합정렬실행과분석
11-3기저사례,2×2정원
11-4재귀과정
11-5리스트컴프리헨션기초
11-6예쁘게출력하기
11-7다른종류의타일놓기퍼즐

퍼즐12_브라흐마의탑
12-1TOH의재귀적풀이
12-2ATOH의재귀적풀이
12-3그레이코드와의관계

퍼즐13_못난기술자
13-1피벗을사용한분할정복
13-2정렬과의관계
13-3제자리분할
13-4정렬매니아

퍼즐14_다시는스도쿠를하고싶지않아요
14-1재귀적인스도쿠풀이
14-2재귀탐색중의암시
14-3스도쿠퍼즐의어려움

퍼즐15_잔돈내는방법이얼마나있을까요?
15-1재귀적지폐선택
15-2중복제거
15-3가장적은수의화폐만사용하도록변경하기

퍼즐16_욕심은옳습니다
16-1탐욕적접근
16-2규칙-가장시간이짧은수업
16-3규칙-가장먼저시작하는수업
16-4규칙-가장충돌이적은수업
16-5규칙-가장먼저끝나는수업
16-6탐욕법은언제좋을까요?

퍼즐17_애너그램(Anagram)매니아
17-1한번에한개의애너그램그룹찾기
17-2정렬을사용해서애너그램그룹만들기
17-3해시를사용해서애너그램그룹만들기
17-4딕셔너리
17-5해시테이블

퍼즐18_제기억은정확합니다
18-1재귀적방법
18-2메모이제이션
18-3예외피하기
18-4동적프로그래밍

퍼즐19_기억에남을주말
19-1칸막이세우기
19-2이분그래프여부확인
19-3그래프표현
19-4그래프색칠

퍼즐20_여섯단계분리
20-1너비우선탐색
20-2집합
20-3너비우선탐색에서집합사용하기
20-4역사

퍼즐21_질문에도돈을내야합니다
21-1딕셔너리를사용한이분탐색트리
21-2딕셔너리표현을사용한이분탐색트리의연산
21-3객체지향프로그래밍스타일의이분탐색트리
21-4퍼즐로돌아가기:알고리즘
21-5퍼즐을풀기위한코드
21-6데이터구조비교