160가지 그림과 스토리텔링으로 이해한다!
자료구조부터 보안, 인공지능까지 최신 알고리즘 총망라!
코딩의 어려운 벽을 넘고 처음 만나는 ‘자료구조’와 ‘알고리즘’의 세계! 비전공자는 또 다시 길을 잃어버리기 쉽다. 낙오자 없이 모두 이 산을 넘어갈 수 있도록 도와줄 친절한 책이 나왔다. 《Do it! 첫 알고리즘》은 자료구조의 기본기부터 시작해 검색 알고리즘, 정렬 알고리즘, 보안과 인공지능까지 160가지 그림과 스토리텔링으로 전부 알려 준다. 처음 책을 펼쳤다면 ‘이게 진짜 알고리즘 책이야?’라는 생각이 들 정도로 그림과 이야기가 많다. 주인공인 다람쥐, 순록, 거북이가 프로그래밍 초보자의 머릿속에 들어간 듯이 사고의 흐름을 따라 가며 알고리즘을 알려 주니, 애쓰지 않아도 쉽게 이해할 수 있다.
그림으로 배워 깊이가 얕지 않을까 걱정된다면 큰 오산! 알고리즘에서 가장 골치 아픈 ‘시간 복잡도’ 계산식을 하나하나 풀어서 설명한다. 중고등학교에서 배우는 수학 개념 하나(로그 함수)만 짚고 넘어간다면 누구나 알고리즘 공부의 한계를 넘어설 수 있다. 뿐만 아니라 보안, 딥러닝, 클러스터링 등 최신 알고리즘 개념까지 다뤄 이후에 배우게 될 지식의 밑바탕까지 갖추었다. 알고리즘을 만나 앞이 꽉 막혔던 프로그래밍 초보자, ‘전과할까’ 잠시 고민한 적 있는 컴퓨터공학과 1학년, 알고리즘 개념을 쉽게 가르칠 수 있는 책을 찾는 교수님, 선생님들께 적극 추천한다.
Contents
01 꺼내자 ㅡ 데이터 구조
01-1 편하게 꺼내요 ㅡ 데이터 구조
01-2 쌓아 올려요 ㅡ 스택
01-3 빨리 온 순서로 줄을 서요 ㅡ 큐
01-4 스택과 큐 비교하기
01-5 데이터를 담는 컴퓨터의 기억 장치 ㅡ 메모리
01-6 메모리의 구조와 비슷해요 ㅡ 배열
01-7 도전! 프로그래밍 ㅡ 배열로 단어 재조합하기
01-8 화살표로 연결해요 ㅡ 연결 리스트
01-9 나무가 거꾸로 서 있는 모습이야 ㅡ 트리 구조
01-10 이진 트리로 표현해요
02 찾아보자 ㅡ 검색 알고리즘
02-1 데이터를 찾아요 ㅡ 검색
02-2 도전! 프로그래밍 ㅡ 게임 아이디로 정보 찾아내기
02-3 차례대로 검색해요 ㅡ 선형 검색
02-4 단순하게 평가해요 ㅡ O 표기법
알기 쉬운 용어 풀이 | 함수와 메서드
02-5 도전! 프로그래밍 ㅡ 게임 데이터 검색 프로그램 만들기 1탄
02-6 찾는 것이 앞뒤 어느 쪽에 있을까? ㅡ 이진 검색
02-7 도전! 프로그래밍 ㅡ 가장 느린 검색과 가장 빠른 검색에서 시간 복잡도 구하기
02-8 단숨에 찾아내요 ㅡ 해시법
02-9 해시값이 충돌하면 어떻게 하나요?
02-10 도전! 프로그래밍 ㅡ 게임 데이터 검색 프로그램 만들기 2탄
03 늘어놓자 ㅡ 정렬 알고리즘
03-1 나란히 나란히 ㅡ 정렬
03-2 도전! 프로그래밍 ㅡ 고객 명단 정렬 프로그램 만들기
03-3 어느 곳에 넣을까요? ㅡ 삽입 정렬
03-4 삽입 정렬의 시간 복잡도가 최선일 때
알기 쉬운 용어 풀이 | 데이터를 미리 넣어 두자 ㅡ 보초법
03-5 삽입 정렬의 시간 복잡도가 최악일 때
03-6 최솟값 또는 최댓값을 찾아 비교해요 ㅡ 선택 정렬
03-7 선택 정렬의 시간 복잡도
03-8 이웃한 데이터를 교환해 천천히 떠올라요 ㅡ 버블 정렬
03-9 기준값을 두고 데이터를 나눠요 ㅡ 퀵 정렬
03-10 퀵 정렬에서 가장 느릴 때와 빠를 때 비교하기
03-11 퀵 정렬의 순서
03-12 안정된 정렬 알고리즘
03-13 고성능 정렬 ㅡ 병합 정렬
03-14 병합 정렬의 순서
03-15 병합 정렬의 시간 복잡도
03-16 병합 정렬의 공간 복잡도
04 숨기자 ㅡ 암호와 보안
04-1 알려지지 않게 숨겨요 ㅡ 암호의 기초
04-2 열쇠 넘기기 ㅡ 공통 키 방식
04-3 열쇠 같이 쓰기 ㅡ 공개 키 암호 방식
04-4 누구세요? 본인이세요? ㅡ 인증
04-5 도전! 프로그래밍 ㅡ 컴퓨터의 RSA 암호 체험하기
05 생각하자 ㅡ 인공지능(AI)
05-1 신경세포처럼 딥러닝해요
05-2 도전! 인공 뉴런처럼 계산해 보기
05-3 비슷한 무리를 모아요 ㅡ 클러스터링
부록 1 | 파이썬 설치하고 실행하기
부록 2 | 파이썬 인터프리터 실수 대처하기
Author
마츠우라 켄이치로,츠카사 유키,노은정
동경대 공학계 연구과 전자공학전공 석사과정 수료 후, 연구소 근무를 거쳐 현재는 취미와 생업을 겸하여 프리랜서 프로그래머, 작가, 강사로 활동 중이다. 관심분야와 작업범위는 프로그래밍을 중심으로 컴퓨터 전반에 걸쳐 있으나 가장 흥미를 느끼는 분야는 프로그래밍 언어 만들기와 게임 만들기다.
동경대 공학계 연구과 전자공학전공 석사과정 수료 후, 연구소 근무를 거쳐 현재는 취미와 생업을 겸하여 프리랜서 프로그래머, 작가, 강사로 활동 중이다. 관심분야와 작업범위는 프로그래밍을 중심으로 컴퓨터 전반에 걸쳐 있으나 가장 흥미를 느끼는 분야는 프로그래밍 언어 만들기와 게임 만들기다.