쓰면서 익히는 알고리즘과 자료구조 (알고리즘 설계 캔버스를 작성하며 배우는 알고리즘 문제 해결 전략)

쓰면서 익히는 알고리즘과 자료구조 (알고리즘 설계 캔버스를 작성하며 배우는 알고리즘 문제 해결 전략)

$26.00
Description
직접 써보며 이해하는 가장 효율적인 알고리즘 문제 해결 과정
알고리즘과 자료구조를 가장 효율적으로 학습할 수 있는 방법은 무엇일까? 바로 노트에 직접 알고리즘 문제 해결 과정을 써보면서 이해하는 것이다. 이 책은 ‘알고리즘 설계 캔버스’ 작성을 통한 문제 해결 과정을 보여준다. ‘알고리즘 설계 캔버스’는 제한사항, 아이디어, 복잡도, 코드, 테스트 영역으로 구성된 한 페이지짜리 노트로 일련의 알고리즘적 사고 과정을 보여주는 최적의 학습 도구이다.

각 장은 다양한 알고리즘과 자료구조(배열, 문자열, 연결 리스트, 스택, 재귀, 큐, 트리, 동적 프로그래밍, 정렬 등)의 기본적인 내용을 소개한 뒤, 관련 문제를 ‘알고리즘 설계 캔버스’의 항목별 내용을 쓰면서 풀어본다. 이 책을 통해 ‘알고리즘 설계 캔버스’를 직접 작성하면서 알고리즘과 자료구조의 이해를 넓혀 개발 역량을 키우고 코딩 인터뷰까지 대비해보자.
저자

윤대석

12년간임베디드리눅스커널개발,윈도우애플리케이션개발,리얼타임운영체제에서의BSP개발,백엔드개발등다양한영역에서의개발경험이있고항상기본에충실하고자노력하는엔지니어다.꾸준히알고리즘과운영체제에대해공부하고있으며,오픈소스리눅스커널분석및수정활동에참여하고있다.

목차

들어가며
chapter1배열(Array)
1.1배열의이해
1.2파이썬에서배열(리스트)사용법
1.3두수의합찾기
1.4정렬된배열에서중복제거
1.5배열에서삽입위치찾기
1.6정렬된배열의병합
1.7정렬된배열의정합Ⅱ
1.8파스칼의삼각형
1.9배열에서다수의요소찾기
1.10배열의회전
1.11빠진숫자찾기
1.12더나아가기위한준비
1.13부분집합(subsets)
1.14단어찾기

chapter2문자열(String)
2.1문자열의이해
2.2파이썬에서문자열사용법
2.3회문(Palindrome)확인
2.4그룹애너그램(anagram)
2.5IPv4/IPv6검증시스템

chapter3연결리스트(LinkedList)
3.1연결리스트의이해
3.2연결리스트연산
3.3연결리스트문제
3.4연결리스트뒤집기
3.5순환검출(CycleDetection)
3.6두수더하기

chapter4스택(Stack)과재귀(Recursion)
4.1스택의이해
4.2재귀(Recursion)의이해
4.3유효한괄호검증
4.4재귀연습문제
4.5재귀연습

chapter5큐(Queue)
5.1큐의이해
5.2큐연습

chapter6트리(Tree)
6.1트리자료구조의이해
6.2이진트리(BinaryTree)
6.3깊이우선탐색(Depth-FirstSearch)
6.4너비우선탐색(Breadth-FirstSearch)
6.5이진힙(Binaryheap)
6.6트리경로의합
6.73번째큰수
6.8이진트리반전
6.9이진검색트리검증

chapter7동적프로그래밍(DynamicProgramming)
7.1동적프로그래밍의이해
7.2동일합으로배열분할문제
7.3동전교환
7.4최장공통부분수열(LongestCommonSubsequence)

chapter8정렬(Sorting)알고리즘
8.1거품정렬(BubbleSort)
8.2삽입정렬(InsertionSort)
8.3병합정렬(MergeSort)
8.4퀵정렬(QuickSort)
8.5팀정렬(TimSort)

Appendix부록
부록A알고리즘문제제공사이트
부록B알고리즘연습을위한노트방법
부록C파이썬을이용한문제풀이
부록D알고리즘학습을위한사이트소개

출판사 서평

알고리즘공부어떻게해야할까?
배경지식은충분히공부했는데,왜알고리즘문제에접근조차못할까?

알고리즘문제해결능력의핵심은‘알고리즘적사고력’입니다.알고리즘적사고력을키우기위한가장좋은방법은알고리즘문제를풀때여러전략을고민하고해결과정을직접노트에써보는것입니다.

한페이지짜리‘알고리즘설계캔버스’는이런프로세스를쓰기좋은학습도구입니다.제한사항,아이디어,복잡도,코드,테스트영역으로구성된‘알고리즘설계캔버스’는일련의알고리즘적사고과정을명확하게보여줍니다.이책은‘알고리즘설계캔버스’의요소별내용을완성해가며문제를풀이합니다.직접‘알고리즘설계캔버스’를작성하면서알고리즘문제해결과정을단계별로따라가봅시다.

알고리즘설계캔버스구성요소
● 제한사항(Constraints):알고리즘문제의요구와제한사항을발견하고기록하는영역
● 아이디어(Ideas):문제를해결할수있는1~3개정도의접근방법을고려하는영역
● 복잡도(Complexities):생각한아이디어의시간과공간복잡도를추정하는영역
● 코드(Codes):아이디어영역에서논의한내용을바탕으로구현할가치가있다고생각한방법을코드로작성하는영역
● 테스트(Testcases):구현된코드의테스트케이스를알아보고코드테스트를진행하는영역
● 이책의코드는파이썬기반으로작성되었습니다.
● 예제소스:github.com/daeseokyoun/learn-algorithm-by-writing

베타리더의말

허민_한국외국어대학교정보지원처
다른알고리즘서적과달리몇가지차별화된전략이인상깊었습니다.노트레이아웃(알고리즘설계캔버스)으로사고과정을적어보고비주얼라이저를활용해중간단계를눈으로보며,구현과정의상세한도식화로이해하는과정덕분에알고리즘이라는매운양파껍질을하나더벗겨낸느낌을받았습니다.

이준희_가천대학교학부생
알고리즘공부를시작하는학생이고,‘쓰면서익히는’이라는제목에끌려베타리딩을신청했습
니다.문제를풀기전생각을정리하게해주는노트레이아웃(알고리즘설계캔버스),과정을보여주는상세한그림과설명,그리고공부후다시찾아보게되는노트덕에쉽게다가갈수있었습니다.

장대혁_헤르스
이책은단순히코딩테스트를위한책이아닙니다.좋은코드를만들기위해알아야하는자료구조를배울수있습니다.수준있는개발자가되기위해서는이런공부가필요합니다.오래오래개발자로커리어를이어가고싶다면이책을3번읽고개발역량(좋은코드작성하기)과취업역량(코딩테스트통과하기)모두향상시키길바랍니다.

김병진_위메프
이책은개발을하면서직면하는문제에어떤접근방식으로해결할수있는지생각해보고,어떤알고리즘을적용할수있는지에대해설명해줍니다.그리고그방법이절대하나일수없다는듯하나이상의접근방법으로제시해주고있어다양한접근방식에대한사고를할수있도록도와줍니다.이책은알고리즘을처음배우는초심자에게좋은가이드역할을할것이라고생각합니다.