24년 11월 이전/레거시-자료구조
-
자료구조와 알고리즘의 이해24년 11월 이전/레거시-자료구조 2019. 8. 30. 17:58
Contents 시작하며... 자료구조와 알고리즘 알고리즘 성능 측정 마치며... 시작하며... 자 구르미의 "Computer Science 정복하기 - 자료구조"의 첫 번째 장입니다.첫 장의 대부분의 내용은 책 "윤성우의 열혈 자료구조"의 첫 장 "자료구조와 알고리즘의 이해"를 요약이 주를 이루고 있습니다.혹시 이해가 안가는 부분이 있다면 책을 참고해주시면 좋겠습니다. 이 장의 대략적인 내용은 다음과 같습니다. 자료구조와 알고리즘 용어 정의 순차 탐색과, 이진 탐색을 예로 알고리즘 성능 측정 이 장의 소스코드는 다음을 참고해주세요. url: https://github.com/gurumee92/datastructure branch: ch01 code directory: src/ch01 자 시작합시다! 자..
-
목차24년 11월 이전/레거시-자료구조 2019. 8. 30. 17:43
Contents 자료구조와 알고리즘의 이해 재귀 자료구조 리스트 배열 리스트 구현 연결 리스트 구현 이중 연결 리스트 구현 자료구조 스택과 구현 스택 응용 - 계산기 자료구조 큐와 구현 자료구조 이진 트리와 구현 이진 트리 응용 - 수식 트리 자료구조 우선순위 큐와 구현 정렬 알고리즘 1부 버블 정렬 정렬 알고리즘 2부 선택 정렬 정렬 알고리즘 3부 삽입 정렬 정렬 알고리즘 4부 힙 정렬 정렬 알고리즘 5부 병합 정렬 정렬 알고리즘 6부 퀵 정렬 정렬 알고리즘 7부 기수 정렬 자료구조 이진 탐색 트리와 구현 자료구조 AVL 트리와 구현 자료구조 해쉬 테이블과 구현 자료구조 그래프와 구현 그래프 응용 1부 DFS와 BFS 그래프 응용 2부 최소 신장 트리(MST)와 크루스칼 알고리즘 구르미의 "Comput..
-
[자료구조/알고리즘]05. 큐24년 11월 이전/레거시-자료구조 2019. 2. 2. 01:59
CH 05 큐(Queue)목표 자료구조 큐에 대해 알아보고, C/C++ 프로그래밍 언어로 구현해봄으로써 큐의 대한 이해의 깊이를 늘려보세요! 목차1. 큐란 무엇인가? 2. 큐 ADT 3. C로 구현하기 4. C++로 바꿔보기 5. 결론 1. 큐란 무엇인가? 큐란 마치, 순서가 있는 대기열 같습니다. 그림처럼 은행의 대기열이 있다고 합시다. 당연히 먼저 온 사람이 먼저 나가게 되겠죠? 이것이 바로 큐입니다. 유식한 말로는 FIFO(First In First Out) 구조라고 하지요. 이번 시간에 우리가 구현할 큐는 배열 기반의 원형 큐입니다. 본격적으로 코드를 구현하기 전에 원형 큐가 무엇인지 살펴보도록 하죠.일반 배열로 큐를 구현했을 때, 우리가 가질 수 있는 문제점 중 하나는, 큐가 꽉차면, 재활용이 ..
-
[자료구조/알고리즘]04. 스택 Stack24년 11월 이전/레거시-자료구조 2019. 1. 29. 23:36
CH 04 스택(Stack)목표자료구조 스택에 대해 알아보고, C/C++ 프로그래밍 언어로 구현해봄으로써 스택의 이해의 깊이를 늘려보세요 목차1. 스택이란 무엇인가? 2. 스택 ADT 3. C로 구현하기 4. C++로 바꿔보기 5. 결론 1. 스택이란 무엇인가? 스택이란 마치, 프링글스 통과 같습니다. 그림처럼, 프링글스는 맨 위의 과자를 꺼내지 않는한, 그 밑의 과자는 먹을 수가 없지요. 즉, 가장 나중에 들어온 과자가 가장 먼저 나가게 됩니다. 이를 LIFO (Last In First Out) 구조라고 합니다. 바꿔서 스택이란 자료구조라도 말합니다. 자 지금부터 본격적으로 스택에 대해 알아봅시다. 2. 스택 ADT 스택의 ADT는 다음과 같습니다. ADT Stackcharacters:arr: T[]데..
-
[자료구조/알고리즘]03. 이중 연결 리스트 Double Linked List24년 11월 이전/레거시-자료구조 2019. 1. 19. 00:38
CH 03 이중 연결 리스트(Double Linked List)목표연결 리스트의 응용 중 하나인 이중 연결 리스트에 대해 알아보고, C/C++ 프로그래밍 언어로 구현해봄으로써 연결 리스트의 이해의 깊이를 늘려보세요!목차이중 연결 리스트란 무엇인가?연결 리스트의 한계이중 연결 리스트에 대해서이중 연결 리스트 ADTC로 구현하기C++로 바꿔보기결론이중 연결 리스트 정리1. 이중 연결 리스트란 무엇인가?연결 리스트의 한계배열의 한계를 뛰어넘기 위해서, 연결 리스트란 자료 구조를 공부하였습니다. 그러나 연결 리스트에도 불편함이 있지요? 무슨 불편함이냐면, 분명히 꼬리 부분 tail 의 위치를 알고 있음에도, 꼬리 삭제 시에 꼬리 이전까지 반복문을 돌아야 했습니다. 이를 개선할 방법이 없을까요?이중 연결 리스트에..
-
[자료구조/알고리즘] 02. 연결 리스트 Linked List24년 11월 이전/레거시-자료구조 2019. 1. 19. 00:33
CH 02 연결 리스트(Linked List)목표연결 리스트가 나오게 된 배경과 연결 리스트의 개념에 대해서 알아보고, 연결 리스트의 삽입, 조회, 삭제 연산이 어떻게 동작하는지 이해해 보세요. 그 후 C/C++ 프로그래밍 언어로 구현해봄으로써 한 층 더 자료구조의 이해의 깊이를 늘려보세요!목차연결 리스트란 무엇인가?배열의 한계연결 리스트에 대해서연결 리스트 ADTC로 구현하기C++로 바꿔보기결론연결 리스트 정리연결 리스트 응용1. 연결 리스트란 무엇인가?배열의 한계배열은 충분히 좋은 자료구조입니다. 인덱스를 통해서 조회, 추가, 삭제에 대한 연산이 가능하지요. 하지만, 프로젝트가 커지고 복잡해질수록 배열로는 한계가 있습니다. 제일 큰 한계는 다음과 같습니다.배열은 길이가 정해져 있어야 한다. 즉, 무한..
-
[자료구조/알고리즘] 01. 추상 데이터 타입 ADT24년 11월 이전/레거시-자료구조 2019. 1. 19. 00:28
CH 01 ADT(Abstract Data Type)목표본격적으로 자료구조를 알기 전에, Abstract Data Type(이하 ADT)를 알아봅시다.목차ADT란 무엇인가?지갑을 통한 ADT의 이해ADT는 이렇게 씁시다결론1. ADT란 무엇인가?ADT를 번역하면 추상 자료형이라는 뜻입니다. 이는 구체적인 기능의 완성 과정은 서술하지 않고 오로지 순수하게 기능이 무엇인지만 나열하는 것을 말합니다. 추상 자료형에는 다음의 속성들을 가지고 있습니다.CharactersOpertionsCharacters는 추상 자료형의 내부 속성을 뜻합니다. 예를 들어서, 자동차라는 ADT가 존재한다면, 바퀴, 문, 핸들 등이 바로 이 ADT의 내부 속성입니다. 이들은 객체지향 프로그래밍(이하 OOP)에서 말하는 클래스의 내부 ..