이름만 들어도 어려운 알고리즘을
설명과 그림을 함께 보여주니, 초보자도 쉽게 이해하기 쉬운 것 같습니다.
프로그래밍 세계로 초대하는
알고리즘 입문서
알고리즘은 전공자에게도 어렵게 느껴지죠?
이 책은 중학교 수준의 수학 지식만 있으면 이해할 수 있도록 쉽게 설명되어 있습니다.
알고리즘이 지루하고 어렵다는 편견을 깨기 위해 알기 쉽게 설명된 그림과 파이썬을 기반으로 한 친숙한 예제를 사용했습니다.
전공자는 물론 비전공자까지도 알고리즘의 흥미로운 논리 세계로 안내할 것입니다.
『Hello Coding』 시리즈 소개
Hello Coding?
프로그래밍이 처음인가요?
배운 적은 있지만, 재미를 느끼지 못했다고요?
그래서 『Hello Coding』 시리즈를 준비했습니다!
이 시리즈의 목표는 ‘쉽고’, ‘재미있게’, ‘끝까지’ 책을 읽는 데 있습니다.
이 책 한 권으로 프로그래밍의 고수가 될 수는 없겠지만, 프로그래밍의 재미는 확실하게 느낄 수 있을 겁니다.
이제, 시작해 볼까요?
누가 이 책을 읽어야 하나요?
-. 프로그래밍을 전혀 경험해보지 못한 비전공자 (중/고등학생, 대학생, 일반인)
-. 알고리즘의 기본기를 익히고자 하는 사람
-. 프로그래밍에 관심이 있는 이공계 학생
혼자 공부하다 궁금증이 생겼다면?
책을 열심히 봤는데도 이해가 되지 않는다고요?
프로그래밍도 처음인데, 주변에 물어볼 사람도 없다면 <Hello Coding> 네이버 카페를 찾아주세요.
입문자도 쉽게 배울 수 있도록 Q&A 게시판을 운영합니다. 언제든지 질문하세요!
<Hello Coding> 네이버 카페
추천사
“이 책은 불가능한 일을 가능하게 했습니다. 수학이 즐겁고, 쉬워졌습니다.”
- 샌더 로셀, COAS 소프트웨어 시스템즈
“재미있는 소설을 읽듯이 알고리즘을 배우고 싶다면, 지금 이 책을 선택하세요.”
- 상카 라마나단, IBM 애널리틱스
Chapter 1 알고리즘의 소개
___01 들어가는 글
______성능에 대해 알아야 하는 것들
______문제를 풀기 위해 알아야 하는 것들
___02 이진 탐색
______더 좋은 탐색 방법
______실행 시간
___03 빅오 표기법
______알고리즘 실행 시간이 증가하는 속도가 다르다면?
______여러 가지 빅오 실행 시간 살펴보기
______최악의 실행 시간을 나타내는 빅오 표기법
______많이 사용하는 빅오 실행 시간의 예
______외판원 문제
<연습문제>
Chapter 2 선택 정렬
___01 메모리가 동작하는 방법
___02 배열과 연결 리스트
______연결 리스트
______배열
______용어
______리스트의 가운데에 삽입하기
______삭제하기
___03 선택 정렬
______예제 코드
<연습문제>
chapter 3 재귀
___01 시작하기에 앞서
___02 재귀
___03 기본 단계와 재귀 단계
___04 스택
______호출 스택
______재귀 함수에서 호출 스택 사용
<연습문제>
chapter 4 퀵 정렬
___01 분할 정복
___02 퀵 정렬
___03 빅오 표기법 복습
______병합 정렬과 퀵 정렬 비교
______평균적인 경우와 최악의 경우 비교
<연습문제>
chapter 5 해시 테이블
___01 해시 함수의 소개
___02 해시 함수
___03 해시 테이블을 사용하는 예
______해시 테이블로 조회하기
______중복된 항목을 방지하기
______해시 테이블을 캐시로 사용하기
______해시 테이블의 장점
___04 충돌
___05 성능
______사용률
______좋은 해시 함수란
<연습문제>
chapter 6 너비 우선 탐색
___01 시작하기에 앞서
___02 그래프의 소개
______그래프란 무엇인가?
___03 너비 우선 탐색
______최단 경로 찾기
______큐
___04 그래프의 구현
___05 알고리즘의 구현
______실행 시간
<연습문제>
chapter 7 다익스트라 알고리즘
___01 너비 우선 탐색 vs 다익스트라 알고리즘
___02 다익스트라 알고리즘
___03 용어 설명
___04 다익스트라 알고리즘을 사용한 물물 교환
___05 간선의 가중치가 음수인 경우
___06 구현
<연습문제>
chapter 8 탐욕 알고리즘
___01 수업 시간표 짜기 문제
___02 배낭 채우기 문제
___03 집합 커버링 문제
______근사 알고리즘
___04 NP-완전 문제
______단계별로 풀어보는 외판원 문제
______어떤 문제가 NP-완전 문제인지 알 수 있는 방법은?
<연습문제>
chapter 9 동적 프로그래밍
___01 배낭 채우기 문제
______단순한 방법
______동적 프로그래밍
___02 배낭 채우기 문제에서 자주 하는 질문
______만약 물건이 추가되면 어떻게 되나요?
______만약 행의 순서가 바뀌면 어떻게 되나요?
______격자를 행 방향이 아니라 열 방향으로 채워도 되나요?
______만약 더 작은 물건을 추가하면 어떻게 되나요?
______물건의 일부만 훔칠 수도 있나요?
______여행 일정 최적화 문제
______서로 의존적인 물건을 다루는 방법
______하위 배낭이 두 개 이상인 경우도 있을 수 있나요?
______배낭을 완전히 채우지 못하는 경우도 있나요?
___03 최장 공통 부분 문자열
______격자 만들기
______격자 채우기
______해답
______최장 공통 부분열
______최장 공통 부분열 문제의 해답
<연습문제>
chapter 10 KNN 알고리즘
___01 오렌지와 자몽 분류하기
___02 추천 시스템 만들기
______특징 추출
______회귀 분석
______좋은 특징 고르기
___03 머신러닝의 소개
______OCR
______스팸 필터 만들기
______주식 시장 예측하기
<연습문제>
chapter 11 더 공부해야 할 것
___01 트리
___02 역 인덱스
___03 퓨리에 변환
___04 병렬 알고리즘
___05 맵리듀스
______분산 알고리즘이 유용한 이유는?
______맵 함수
______리듀스 함수
___06 블룸 필터와 하이퍼로그로그
______블룸 필터
______하이퍼로그로그
___07 SHA 알고리즘
______파일 비교
______패스워드 확인
___08 지역 민감 해싱
___09 디피-헬만 키 교환
___10 선형 프로그래밍
___11 에필로그
자료명 | 등록일 | 다운로드 |
---|---|---|
예제소스 | 2018-02-12 | 다운로드 |
박상현