Data Structure and Algorithm: Difference between revisions
From Innovation
Line 109: | Line 109: | ||
| 5 || 트리 || 1. 바이너리 트리를 정의하고 사전에서 단어를 찾는 방법과 바이너리 트리로 단어를 찾는 방법을 비교해보기<br>2. 언제 바이너리 트리가 사용되고 이것으로 표현 가능한 것은?<br>3. 친구와 토론하고 내용을 1페이지로 정리하여 제출 || 퀴즈: 큐의 주요 연산<br>수업 전 활동 평가<br>개념 잡기<br>용어 정리<br>트리의 기본 연산<br>트리의 표현 방법<br>순회 방법: 전위, 중위, 후위 || 허프만 코드 구현하기 || [뇌자알] 4장<br>[열혈] 8장 | | 5 || 트리 || 1. 바이너리 트리를 정의하고 사전에서 단어를 찾는 방법과 바이너리 트리로 단어를 찾는 방법을 비교해보기<br>2. 언제 바이너리 트리가 사용되고 이것으로 표현 가능한 것은?<br>3. 친구와 토론하고 내용을 1페이지로 정리하여 제출 || 퀴즈: 큐의 주요 연산<br>수업 전 활동 평가<br>개념 잡기<br>용어 정리<br>트리의 기본 연산<br>트리의 표현 방법<br>순회 방법: 전위, 중위, 후위 || 허프만 코드 구현하기 || [뇌자알] 4장<br>[열혈] 8장 | ||
|- | |- | ||
| 6 || 중간고사 I || 시험 공부 || 수요일 13:00-15:00<br> 강의실 추후 공지<br>시험 범위: 배열, 포인터, 자료구조, 링크드리스트, 스택, 큐, 트리 관련 배운 모든 | | 6 || 중간고사 I || 시험 공부 || 수요일 13:00-15:00<br> 강의실 추후 공지<br>시험 범위: 배열, 포인터, 자료구조, 링크드리스트, 스택, 큐, 트리 관련 배운 모든 주제 || || | ||
|} | |} | ||
==== Part II - Widely used Data Structures ==== | ==== Part II - Widely used Data Structures ==== |
Revision as of 18:49, 12 February 2018
Text Book
교재
주교재
두 교재는 비슷한 수준으로 설명이 되어 있어서 어느 책을 써도 상관없다. 뇌를 자극하는 알고리즘은 자료구조와 알고리즘이 같이 소개되어 있고 열혈 자료구조는 자료구조에 충실하다.
- [한국어] "뇌를 자극하는 알고리즘," 박상현 저, 한빛미디어
- [한국어] "윤성우의 열혈 자료구조 - 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페이지로 정리하기
- 개념잡기
- 자료구조
- 입력과 삭제 동작
- 숙제:
- 바이너리 트리
- 사전학습: 바이너리 트리의 개념 잡기. 정렬이 되어 있는 자료(예: 사전)에서 자료를 찾는 방법과 바이너리 트리를 사용한 방법을 비교해보기. 바이너리 트리로 표현 가능한 것들이 무엇이 있을까.
- 바이너리 트리 개념 잡기
- 용어 정리
- 자료구조: 배열과 포인터
- 특정 값 찾기
- 리프노드 삽입과 삭제
- 중간 노드 삽입과 삭제
- 루트 노드 삽입과 삭제
- 숙제:
Schedule
Part I - Basic Data Structures
주차 | 주제 | 수업 전 할 일 | 수업 내용 | 숙제 | 읽어오기 |
---|---|---|---|---|---|
1 | 자료구조 및 알고리즘 과목 소개 배열, 포인터, 자료구조 |
컴퓨터프로그래밍기초 복습 | 수업 소개 배열의 문법 배열과 포인터의 관계 포인터 연산자의 종류와 활용 구조체: 사용자 정의 타입 |
malloc()을 이용한 메모리 할당 방법과 간단한 예제 프로그램 따라하여 원리 파악하기 | |
2 | 링크드 리스트 | 1. 링크드 리스트를 정의하고 실생활에 링크드리스트로 표현 가능 것들은 조사. 2. 위에서 찾은 것을 다른 방식으로 표현하는 방법은 무엇이고 어떤 것이 더 효율 적인가? 3. 친구와 토론하고 내용을 1페이지로 정리하여 제출 |
퀴즈: 배열, 포인터, 구조체, malloc 수업 전 활동 평가 개념 잡기 리스트의 주요 연산: 탐색, 삭제, 삽입, 리스트의 장단점: 어떤 경우에 배열이나 링크드 리스트를 써야 할까? 더블링크드 리스트와 환형 더블 링크드 리스트 |
링크드 리스트를 이용하여 다항식의 덧셈, 뺄셈과 곱셉 프로그램 작성하기 | [뇌자알] 1장[열혈] 3, 4, 5장 |
3 | 스택 | 1.장스택을 정의하고 실생활에서 스택이 쓰이는 사례 2. 링크드 리스트와 배열로 스택을 구현한다면 어떻게 해야 할까? 3. 친구와 토론하고 내용을 1 페이지로 정리하여 제출 |
퀴즈: 링크드 리스트의 주요 연산 수업 전 활동 평가 개념 잡기 스택의 기본 연산: 배열 vs 링크드 리스트 사칙 연산의 표기법: 전위, 중위 후위 표기법 스택을 이용한 계산기 |
후위표기법을 중위 표기법으로 변환하는 프로그램 작성하기 | [뇌자알] 2장 [열혈] 6장 |
4 | 큐 | 1. 큐를 정의하고 실생활에서 큐가 쓰이는 사례 2. 스택 2개로 큐를 구현하는 방법은? 3. 친구와 토론하고 내용을 1페이지로 정리하여 제출 |
퀴즈: 스택의 주요 연산 수업 전 활동 평가 개념 잡기 큐의 기본 연산: 배열 vs 링크드 리스트 |
큐를 이용하여 LRU 기법 구현하기 | [뇌자알] 3장 [열혈] 7장 |
5 | 트리 | 1. 바이너리 트리를 정의하고 사전에서 단어를 찾는 방법과 바이너리 트리로 단어를 찾는 방법을 비교해보기 2. 언제 바이너리 트리가 사용되고 이것으로 표현 가능한 것은? 3. 친구와 토론하고 내용을 1페이지로 정리하여 제출 |
퀴즈: 큐의 주요 연산 수업 전 활동 평가 개념 잡기 용어 정리 트리의 기본 연산 트리의 표현 방법 순회 방법: 전위, 중위, 후위 |
허프만 코드 구현하기 | [뇌자알] 4장 [열혈] 8장 |
6 | 중간고사 I | 시험 공부 | 수요일 13:00-15:00 강의실 추후 공지 시험 범위: 배열, 포인터, 자료구조, 링크드리스트, 스택, 큐, 트리 관련 배운 모든 주제 |
Part II - Widely used Data Structures
주차 | 주제 | 수업 전 할 일 | 수업 내용 | 숙제 | 읽어오기 |
---|
Part III - Fundamental Algorithms
주차 | 주제 | 수업 전 할 일 | 수업 내용 | 숙제 | 읽어오기 |
---|
공부하는 방법에 대하여
- 나는 프로그래머다, "까치네, 깨비메일 개발자 특집" (E27 1부 E27 link, 2부 E28 link)