Data Structure and Algorithm
From Innovation
Text Book
교재
주교재
두 교재는 비슷한 수준으로 설명이 되어 있어서 어느 책을 써도 상관없다. 뇌를 자극하는 알고리즘은 자료구조와 알고리즘이 같이 소개되어 있고 열혈 자료구조는 자료구조에 충실하다.
- [한국어] "뇌를 자극하는 알고리즘," 박상현 저, 한빛미디어 (온라인 학습사이트 - go)
- 예제 소스 및 책 소개 페이지 go
- [한국어] "윤성우의 열혈 자료구조 - C언어를 이용한 자료구조 학습서," 윤성우, 오렌지미디어 go
- 온라인 무료 강의 제공
- 발표자료 및 온라인 무료 강의 페이지(책구매자에게 1년 구독권제공) go
곁에 두고 익히면 좋은 책
- [번역서] "다양한 예제로 학습하는 데이터 구조와 알고리즘 : 문제 해결법부터 개선법까지 (Data Structures and Algorithms Made Easy)," 나라심하 카루만치 저, 전계도 , 전형일 역, 인사이트 go
- 소프트웨어 기술 직종 면접 준비에도 쓸 수 있을 만큼 다양한 예제를 포함.
- [번역서] "사전처럼 바로 찾아 쓰는 알고리즘 - 바로 동작하는 실전 코드로 정리한 알고리즘 사전,"조지 T. 하인만, 게리 폴리케, 스탠리 셀코 저, 전경원 역, 한빛미디어 go
- 조금 더 깊이 있게 공부하고 싶다면 추천하는 책
- [한국어] "C 언어로 쉽게 풀어쓴 자료 구조," 천인국 저, 생능출판사 go
- 부록으로 자료 구조의 개념을 이해할 수 있는 플래시 애니메이션 수록
개념 익히기 좋은 책
- [번역서] "Hello Coding 그림으로 개념을 이해하는 알고리즘 (Grokking Algorithms)," 아디트야 바르가바 저, 김도형 역, 한빛미디어 go
- 개념 이해하기 아주 좋은 쉬운 책, 그림이 재미있음
Topics
- Backgrounds
- Array
- Pointer
- Memory allocation
- Data structure
- Recursion
- Time complexity of algorithms
- Data Structure
- Stack
- Queue
- Linked List
- Binary Tree
- Algorithms
- Sorting
- Searching
- Hash Table
- Graph
Syllabus (T.B.D.)
- 배열 vs 포인터
- 개념
- 크기 정하기
- 메모리 할당
- 포인터 연산자의 이해
- 포인터 이해 연습문제
- 자료구조
- 사전 학습: 자료구조란 무엇인가. 왜 써야하는가. 어디에 쓰일까. 친구와 토론하고 결론을 한 페이지로 정리해서 오기
- 개념 이해
- 포인터 연산자 추가
- 복잡도
- 사전학습:
- 표기법
- 숙제:
- 링크드 리스트
- 사전학습: 링크드 리스트란 무엇인가. 실 생활에 링크드리스트로 표현 가능 것들은 무엇일까. 링크드리스트로 표현 가능한 것을 배열로 표현할 수 없을까. 배열 대신 링크드리스트를 써야하는 상황과 이유는 무엇일까. 친구와 토론하고 내용을 1페이지로 정리하기
- 개념잡기
- 리스트에서 특정 값 탐색
- 앞 중간 끝 삽입 삭제 동작
- 스택
- 사전 학습: 스택이란 무엇인가. 실생활에 스택의 사용 실제 사례. 링크드 리스트로 스택 구현한다면. 배열로 스택 구현한다면. 어떤 경우에 배열을 쓰고 링크드리스트로 쓸까. 토론하고 내용을 1페이지로 정리하기
- 개념 잡기
- 자료구조: 배열 vs 포인터
- 크기 정하기: 스태틱 vs 다이나믹
- 입력과 삭제 동작
- 숙제: 계산기 만들기
- 큐
- 사전학습: 큐는 무엇인가. 실 생활에 사용 예제는. 스택 두개로 큐를 구현하기. 토론하고 내용을 1페이지로 정리하기
- 개념잡기
- 자료구조
- 입력과 삭제 동작
- 숙제:
- 바이너리 트리
- 사전학습: 바이너리 트리의 개념 잡기. 정렬이 되어 있는 자료(예: 사전)에서 자료를 찾는 방법과 바이너리 트리를 사용한 방법을 비교해보기. 바이너리 트리로 표현 가능한 것들이 무엇이 있을까.
- 바이너리 트리 개념 잡기
- 용어 정리
- 자료구조: 배열과 포인터
- 특정 값 찾기
- 리프노드 삽입과 삭제
- 중간 노드 삽입과 삭제
- 루트 노드 삽입과 삭제
- 숙제:
공부하는 방법에 대하여
- 나는 프로그래머다, "까치네, 깨비메일 개발자 특집" (E27 1부 E27 link, 2부 E28 link)