Do it! 자료구조와 함께 배우는 알고리즘 입문: 자바 편
도서명:Do it! 자료구조와 함께 배우는 알고리즘 입문: 자바 편
저자/출판사:시바타,보요/이지스퍼블리싱
쪽수:424쪽
출판일:2022-04-25
ISBN:9791163033486
목차
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] 열거 살펴보기
____오픈 주소법