Do it! 자료구조와 함께 배우는 알고리즘 입문: 자바 편 시바타 보요 pdf 다운로드를 무료로 제공합니다 자료구조와 알고리즘은 국내외 IT 기업의 면접과 코딩 테스트에서 중요한 역량입니다. 이는 단순히 개념만 이해한다고 해서 바로 실전에 사용하기가 힘듭니다
관련 교재 pdf 모음
책 소개
‘팩토리얼을 재귀 함수 호출로 구현하세요.’, ‘5분 안에 큐를 구현하세요.’라는 면접 질문 앞에서 얼어 버리는 당신! 머리로는 알겠는데 코드로 표현하지 못한다면? 바로 이 책이 필요합니다! 저자의 친절한 설명과 217개의 도해를 보며 개념을 정확하게 익히세요. 그런 다음 102개의 실습 예제는 손으로 코드를 입력하고, 프로그램을 실행하면서 어떻게 알고리즘이 동작하는지 직접 확인해 보세요. 눈으로 읽고 코드를 한 줄씩 입력하다 보면 어느새 자료구조와 알고리즘은 여러분의 것이 됩니다. 자료구조와 알고리즘은 대부분의 사람이 프로그래밍 언어를 공부할 때 어려워하는 분야입니다. 왜 그럴까요? 그 이유는 알아야 할 내용이 엄청 많기 때문입니다. 자료구조와 알고리즘에서 꼭 알아야 할 핵심 개념을 순서대로 공부하면 어렵지 않습니다. 이 책의 저자는 공학교육협회 저작상을 수상한 프로그래밍 교육서의 대가입니다. 수십 년간 노하우를 축적한 시바타 보요 교수의 설명을 따라가다 보면 자료구조와 알고리즘의 기초를 탄탄하게 쌓을 수 있습니다. 코드만 보면 어려운 내용도 그림으로 보면 쉽게 이해할 수 있습니다. 이 책은 실습 예제 코드의 핵심 내용을 그림과 표를 이용해 설명했습니다. 코드에 매겨 놓은 번호나 기호에 따라 설명과 그림도 차례로 표현해서 코드의 실행 순서를 눈으로 확인할 수 있습니다. 그리고 개념을 설명할 때도 그림을 적극 활용해서 이해하기 어렵고 딱딱하기만 했던 자료구조와 알고리즘의 개념이 확실하게 자리 잡힐 것입니다.
Do it! 자료구조 배우는 알고리즘
01 기본 알고리즘
—————
__01-1 알고리즘이란?
____세 값의 최댓값 구하기
____[보충수업 1-1] 숫자와 문자열 입력하기 1
____[보충수업 1-2] 숫자와 문자열 입력하기 2
____[보충수업 1-3] 메서드의 반환값과 메서드
____호출식의 평가
____[보충수업 1-4] 세 값의 대소 관계와 중앙값
____조건 판단과 분기
____[보충수업 1-5] 연산자와 피연산자
____순서도의 기호
__01-2 반복
____1부터 n까지 정수의 합 구하기
____[보충수업 1-6] for 문 자세히 알아보기
____양수만 입력받아 1부터 n까지의 합 구하기
____반복 과정에서 조건 판단하기 1
____반복 과정에서 조건 판단하기 2
____반복 과정에서 조건 판단하기 3
____[보충수업 1-7] 논리 연산과 드모르간 법칙
____다중 루프 다루기
____[보충수업 1-8] 카운터용 변수의 이름은 왜 i나 j일까요?
—————
02 기본 자료구조
—————
__02-1 배열이란?
____자료구조 정의하기
____배열 다루기
____배열 요소의 최댓값 구하기
____[보충수업 2-1] 값을 대입하지 않은 지역 변수
____[보충수업 2-2] 메서드의 매개변수로 배열 사용하기
____[보충수업 2-3] 난수의 생성
____배열 요소를 역순으로 정렬하기
____[보충수업 2-4] 전위형 증가 연산자와 후위형 증가 연산자
____기수 변환하기
____[보충수업 2-5] 기수 살펴보기
____소수 나열하기
____[보충수업 2-6] 배열에 관련된 세부 규칙
__02-2 클래스란?
____클래스 다루기
____클래스에서 배열 구현하기
____[보충수업 2-7] 클래스 더 알아보기
03 검색 알고리즘
__03-1 검색 알고리즘이란?
____검색과 키 살펴보기
____배열에서 검색하기
__03-2 선형 검색
____선형 검색 알아보기
____[보충수업 3-1] 형 import 선언
____보초법으로 선형 검색 구현하기
__03-3 이진 검색
____이진 검색 알아보기
____복잡도 구하기
____[보충수업 3-2] java.lang 패키지의 자동 import
____Arrays.binarySearch에 의한 이진 검색
____[보충수업 3-3] 클래스 메서드와 인스턴스 메서드
____[보충수업 3-4] 자연 정렬
____[보충수업 3-5] 제네릭스
—————
04 스택과 큐
—————
__04-1 스택이란?
____스택 알아보기
____스택 만들기
__04-2 큐란?
____큐 알아보기
____배열로 큐 만들기
____링 버퍼로 큐 만들기
____[보충수업 4-1] 링 버퍼의 활용
—————
05 재귀 알고리즘
—————
__05-1 재귀 알고리즘의 기본
____재귀란?
____팩토리얼 구하기
____유클리드 호제법
__05-2 재귀 알고리즘 분석
____재귀 알고리즘 분석하기
____재귀 알고리즘의 비재귀적 표현
____메모화
__05-3 하노이의 탑
____하노이의 탑 알아보기
__05-4 8퀸 문제
____8퀸 문제란?
____퀸 배치하기
____분기 조작
____분기 한정법
____8퀸 문제를 해결하는 프로그램 만들기
—————
06 정렬 알고리즘
—————
__06-1 정렬 알고리즘이란?
____정렬이란?
__06-2 버블 정렬
____버블 정렬 알아보기
__06-3 단순 선택 정렬
____단순 선택 정렬 알아보기
__06-4 단순 삽입 정렬
____단순 삽입 정렬 알아보기
__06-5 셸 정렬
____단순 삽입 정렬의 특징 살펴보기
____셸 정렬 알아보기
__06-6 퀵 정렬
____퀵 정렬 살펴보기
____배열을 두 그룹으로 나누기
____퀵 정렬 구현하기
____[보충수업 6-1] 퀵 정렬에서 배열을 나누는 과정 출력하기
____비재귀적인 퀵 정렬 구현하기
__06-7 병합 정렬
____정렬을 마친 두 배열의 병합 살펴보기
____병합 정렬 구현하기
____Arrays.sort로 퀵 정렬과 병합 정렬하기
__06-8 힙 정렬
____힙이란?
____힙 정렬 알아보기
____배열을 힙으로 만들기
__06-9 도수 정렬
____도수 정렬 알아보기
—————
07 문자열 검색
—————
__07-1 브루트-포스법
____문자열 검색이란?
____브루트-포스법 알아보기
____[보충수업 7-1] 문자열과 String 클래스
____String.indexOf 메서드로 문자열 검색하기
__07-2 KMP법
____KMP법 알아보기
__07-3 보이어·무어법
____보이어·무어법 알아보기
____[보충수업 7-2] 문자열 검색 알고리즘의 시간 복잡도와 실용성
—————
08 리스트
—————
__08-1 리스트란?
____리스트 살펴보기
____배열로 선형 리스트 만들기
__08-2 포인터로 연결 리스트 만들기
____포인터로 연결 리스트 만들기
____포인터로 연결 리스트를 사용하는 프로그램 만들기
____[보충수업 8-1] toString 메서드
__08-3 배열 커서로 연결 리스트 만들기
____배열 커서로 연결 리스트 만들기
____배열의 비어 있는 요소 처리하기
____프리 리스트 살펴보기
____배열 커서로 연결 리스트를 사용하는 프로그램 만들기
__08-4 원형 이중 연결 리스트 만들기
____원형 리스트 살펴보기
____이중 연결 리스트 살펴보기
____원형 이중 연결 리스트 만들기
____원형 이중 연결 리스트를 사용하는 프로그램 만들기
—————
09 트리
—————
__09-1 트리
____트리란?
____순서 트리와 무순서 트리 살펴보기
____순서 트리 탐색 살펴보기
__09-2 이진트리와 이진검색트리
____이진트리란?
____완전이진트리란?
____이진검색트리 살펴보기
____이진검색트리 만들기
____[보충수업 9-1] 균형검색트리
____이진검색트리를 사용하는 프로그램 만들기
____[보충수업 9-2] API 문서 참조하기
____[보충수업 9-3] Object 클래스 이해하기
—————
10 해시
—————
__10-1 해시법
____정렬된 배열에 새로운 값 추가
____해시법
____충돌
____체인법
____[보충수업 10-1] 해시와 해시 함수 알아보기
____[보충수업 10-2] 열거 살펴보기
____오픈 주소법