본문

가장 쉬운 독학 알고리즘 첫걸음: C&자바편 (개념 이해 → 코딩 → 계산 과정 추적으로 익히는 단계별 알고리즘 학습법)
가장 쉬운 독학 알고리즘 첫걸음: C&자바편 (개념 이해 → 코딩 → 계산 과정 추적으로 익히는 단계별 알고리즘 학습법)
저자 : 야자와 히사오
출판사 : 동양북스
출판년 : 2021
ISBN : 9791157687466

책소개

프로그래밍 사고력을 키우는 알고리즘 기초 학습을 만난다!

처음 알고리즘을 배울 때는 보통 주제별 개념을 이해하고, 예제 프로그램 코드를 작성해본 후, 응용문제를 풀면서 실력을 다집니다. 그런데 예제 프로그램 코드를 작성할 때까지는 쉽게 느껴졌던 알고리즘이 응용문제를 풀 때는 어려움으로 다가옵니다. 어떤 변수를 추가하거나 변경해야 할지, 제어문의 조건은 어떻게 바꾸거나 설정해야 할지 등이 익숙하지 않은 것입니다. 또한 어디까지는 코드를 맞게 작성했고 어디서부터 코드를 잘못 작성했는지를 알아야 적절하게 코드를 수정하는데 이를 처음부터 잘하기란 어렵습니다. 이는 알고리즘을 처음 공부하는 사람이라면 누구나 한번은 겪는 일입니다.

이 책은 방금 설명한 입문자의 어려움을 해결하도록 고안한 알고리즘 입문서입니다. 그림과 의사코드 등을 사용하는 기존 알고리즘 학습 방법에 알고리즘의 중간 실행 결과를 살펴볼 수 있는 추적 코드 작성법을 함께 살펴봅니다. 이 추적 코드는 실제 알고리즘이 동작하는 과정을 이해할 수 있게 하고, 원하는 결과가 나오지 않을 때 어느 부분에 문제가 생겼는지는 파악하는 힘을 길러줍니다. 기존의 알고리즘 학습법이 답답했다면 이 책과 함께 추적 코드를 활용하는 새로운 알고리즘 학습법을 만나보기 바랍니다.
[교보문고에서 제공한 정보입니다.]

출판사 서평

취업이나 면접 멘토가 과외해주는 듯한 느낌으로 알고리즘 기초 체력을 기른다!
프로그래밍의 조건문이나 반복문을 처음 배우면서 내 생각에는 맞는 조건인 것 같은데 원하는 출력 결과가 나오지 않았던 기억이 있었습니다. 이때 선배가 '어디어디에 출력문을 넣고 결과 확인하면서 수정해봐'라는 조언을 들은 적이 있습니다. 이것이 디버깅의 원점이자 본질입니다. 그 당시 이 방법 하나로도 무작정 조건을 바꾸면서 시험하는 것보다 좀 더 빨리 원하는 결과에 맞는 조건을 찾았었습니다.

이 책은 방금 설명한 프로그래밍 기법을 ‘추적 코드'라고 명칭하고 알고리즘을 공부할 때 활용하려는 목적으로 썼습니다. 기존 알고리즘의 공식과도 같은 코드를 익히더라도 그걸 응용하는 방법을 익힐 때는 그림보다도 실제 프로그래밍 코드의 조건이 바뀌었을 때 어떤 과정으로 동작하는지 확인하는 것이 좋습니다. 이 책이 제시하는 개념 이해→코딩→계산 과정 추적으로 익히는 단계별 알고리즘 학습법과 함께 하면 조금은 딱딱하고 이해하기 어려운 알고리즘 익히기에 새로운 도움을 줄 것입니다.
[교보문고에서 제공한 정보입니다.]

목차정보

1장 알고리즘 워밍업
1.1 알고리즘이란 무엇인가
1.1.1 여러 가지 자료로 살펴보는 알고리즘의 의미
1.1.2 알고리즘을 만드는 비결
1.1.3 컴퓨터 알고리즘
1.2 이 책의 알고리즘 설명 방법
1.2.1 주요 요소 표기 방법
1.2.2 처리의 흐름
1.2.3 연산자
1.3 유클리드 호제법
1.3.1 유클리드 호제법
1.3.2 알고리즘의 추적
1.3.3 알고리즘 구현
확인 문제

2장 반복문과 배열의 기본 및 선형 검색
2.1 반복문과 배열의 기본
2.1.1 배열 요솟값의 합계를 구하는 알고리즘
2.1.2 알고리즘의 추적
2.1.3 프로그램을 이용한 알고리즘 추적
2.2 선형 검색
2.2.1 선형 검색 알고리즘
2.2.2 알고리즘의 추적
2.2.3 프로그램을 이용한 알고리즘의 추적
확인 문제

3장 이진 탐색과 시간 복잡도
3.1 이진 검색
3.1.1 이진 검색 알고리즘
3.1.2 알고리즘의 추적
3.1.3 프로그램을 이용한 알고리즘 추적
3.2 알고리즘의 시간 복잡도
3.2.1 선형 검색과 이진 검색의 시간 복잡도
3.2.2 검색 및 정렬 관련 주요 알고리즘의 시간 복잡도
3.2.3 데이터량과 시간 복잡도
확인 문제

4장 다중 반복문과 삽입, 버블, 선택 정렬
4.1 다중 반복문의 기초
4.1.1 구구단 알고리즘
4.1.2 알고리즘의 추적
4.1.3 프로그램을 이용한 알고리즘의 추적
4.2 삽입 정렬
4.2.1 삽입 정렬 알고리즘
4.2.2 알고리즘의 추적
4.2.3 프로그램을 이용한 알고리즘의 추적
4.3 버블 정렬
4.3.1 버블 정렬 알고리즘
4.3.2 프로그램을 이용한 알고리즘의 추적
4.4 선택 정렬
4.4.1 선택 정렬 알고리즘
4.4.2 프로그램을 이용한 알고리즘의 추적
확인 문제

5장 연결 리스트의 구조와 사용
5.1 연결 리스트의 구조 및 추적
5.1.1 일반 배열과 연결 리스트의 차이
5.1.2 연결 리스트의 장점
5.1.3 연결 리스트의 단점
5.2 연결 리스트를 움직이는 프로그램
5.2.1 연결 리스트를 만들어 요소를 표시하기
5.2.2 연결 리스트에 요소를 삽입하기
5.2.3 연결 리스트에서 요소를 삭제하기
확인 문제

6장 이진 탐색 트리의 추가와 탐색
6.1 이진 탐색 트리의 자료구조와 요소의 추가
6.1.1 이진 탐색 트리의 자료구조
6.1.2 요소를 추가하면서 이진 탐색 트리를 구성하는 알고리즘
6.1.3 알고리즘의 추적
6.2 이진 탐색 트리의 탐색
6.2.1 이진 탐색 트리의 깊이 우선 탐색
6.2.2 이진 탐색 트리에서 요소를 탐색하는 알고리즘
6.2.3 재귀 호출에 의한 이진 탐색 트리의 탐색
확인 문제

7장 해시 테이블 탐색법
7.1 해시 테이블 탐색법의 구조
7.1.1 해시 테이블 탐색법의 알고리즘
7.1.2 알고리즘의 추적
7.1.3 프로그램을 이용한 알고리즘의 추적
7.2 해시 충돌에 대처하는 방법
7.2.1 해시 충돌에 대응하기 위한 알고리즘
7.2.2 알고리즘의 추적
7.1.3 프로그램을 이용한 알고리즘의 추적
확인 문제

8장 재귀 호출과 퀵 정렬
8.1 재귀 호출
8.1.1 n의 계승을 구하는 알고리즘
8.1.2 알고리즘의 추적
8.1.3 프로그램을 이용한 알고리즘의 추적
8.2 퀵 정렬
8.2.1 퀵 정렬 알고리즘
8.2.2 알고리즘의 추적
8.2.3 프로그램을 이용한 알고리즘의 추적
확인 문제

9장 동적 계획법과 배낭 문제
9.1 동적 계획법
9.1.1 재귀 호출로 피보나치 수 구하기
9.1.2 동적 계획법으로 피보나치 수 구하기
9.1.3 재귀 호출과 동적 계획법을 조합하여 피보나치 수 구하기
9.2 배낭 문제
9.2.1 배낭 문제와 동적 계획법
9.2.2 동적 계획법으로 배낭 문제를 푸는 구조
9.2.3 동적 계획법으로 배낭 문제를 푸는 프로그램
확인 문제

10장 유전 알고리즘과 배낭 문제
10.1 유전 알고리즘으로 배낭 문제를 푸는 구조
10.1.1 유전 알고리즘의 단계
10.1.2 유전 알고리즘의 구조를 설명하는 프로그램
10.1.3 유전 알고리즘의 구조를 설명하는 프로그램의 의사코드
10.2 유전 알고리즘으로 배낭 문제를 푸는 프로그램 만들기
10.2.1 프로그램을 구성하는 필드의 역할
10.2.2 프로그램을 구성하는 함수(메소드)의 기능
10.2.3 전체 프로그램
확인 문제

부록 알고리즘 문제 해결로 실력 확인하기
힙의 성질을 이용한 데이터 정렬
프로그램 1
프로그램 2
정답과 해설
문자열 오류 검출
프로그램 설명
정답과 해설

Quiz와 확인 문제의 정답
[교보문고에서 제공한 정보입니다.]