본문 바로가기
728x90
반응형

Computer Science16

DFS(Depth-First Search) DFS(Depth-First Search) 깊이 우선 탐색. 이름 그대로 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘을 말한다. 정확하게는 DFS는 깊은 부분을 끝까지 탐색하다가, 막히면 다시 돌아와서, 다른 부분을 깊게 탐색한다. DFS의 탐색 순서 DFS는 A에서 출발해서 B를 선택하여 탐색을 시작하고, B에서 이미 A는 탐색했으니, D로 넘어간다. 그리고 D에서는 이미 B를 탐색했으니, H로 넘어가게 되고, 이제 더 이상 방문할 인접 노드가 없는 H에서는 자신의 앞전 노드인 D로 돌아가고, 방문할 수 있는 노드인 I로 이동한다. 그리고 I는 거꾸로 D로 돌아가고, 이제 더 이상 방문할 노드가 없으니, B로, 그 다음은 A로 거슬러 올라간다. 그리고 A에서는 이제 반대편 노드를 탐색하기 시작하.. 2023. 5. 19.
[비선형구조] 그래프(Graph) 그래프(Graph) 비선형구조에서 대표적인 그래프부터 알아보자. Graph는 크게 점과 점들을 이어주는 선으로 나뉘는데, 점을 정점, Node 혹은 Vertex 라고 부르고, 선을 간선, Edge 혹은 Link라고 부른다. 그리고 차수 Degree란, 정점과 이어진 간선의 개수를 말한다. 그래프는 크게 무방향 그래프와 방향 그래프로 나뉜다. 방향 그래프(Directed Graph)와 무방향 그래프(Undirected Graph) 방향 그래프는 간선의 방향이 존재하며, 무방향 그래프는 간선의 방향이 존재하지 않는다. 즉, 무방향 그래프는 어느 방향이든 이동할 수 있지만, 방향 그래프는 간선의 방향으로만 이동할 수 있다. 무방향 그래프 용어 인접하다: 간선 하나를 두고 정점 A에서 정점 B로 이동할 수 있는.. 2023. 5. 18.
[선형구조] 큐(Queue), 덱(Deque) 큐(Queue) 큐는 FIFO(First In, First Out) 선입선출의 형태를 가지는 자료구조이다. 스택처럼 끝부분에서 삽입, 삭제 연산이 이루어지지만 스택은 삽입, 삭제가 같은 쪽에서만 이루어지고 큐는 서로 다른 쪽에서 이루어진다는 차이를 가진다. 큐의 입구를 Rear, 출구를 Front라고 한다. 그리고 데이터를 삽입되는 연산을 Enqueue, 데이터를 삭제되는 연산을 Dequeue라고 한다. 큐는 BFS를 구현할 때, 아주 유용하게 쓰인다. 또한 큐 역시 스택과 마찬가지로 연결 리스트를 사용하여 구현하며, 삽입, 삭제 연산은 O(1)이다. 덱(Deque) 덱은 큐의 변형판으로, Double-Ended-Queue의 약자이다. 즉, 말뜻처럼 큐가 양쪽에서 가능하다는 것인데, 양쪽 끝에서 데이터의.. 2023. 5. 18.
[선형구조] 스택(Stack) 스택이란 LIFO(Last In, First Out) 선입후출 형태를 가지는 자료 구조이다. 스택에서 새로운 데이터를 삽입하는 것을 PUSH 연산 데이터를 삭제하는 것을 POP 연산이라고 한다. 그리고 맨 위의 값을 보는 것을 TOP 연산이라고 한다. 추가적으로 스택이 Empty 상태일 때, pop이나 top 연산을 하게 되면 Underflow, 즉 예기치 않은 연산으로 취급한다. 스택은 특정 쪽에서만 삽입, 삭제 연산이 이루어지므로 연결 리스트로 구현해야 한다. 그리고 push, pop, top 연산은 O(1)이 된다. 2023. 5. 18.
[선형구조] 리스트(List), 배열(Array), 연결 리스트(Linked List) 리스트는 선형적인(순서가 존재한다) 값을 가지고 있는 자료구조이다. 흔히 배열, 연결 리스트로 나눌 수 있는데, 배열(Array) 배열은 프로그래밍 언어에서 기본적으로 많이 쓰이는 자료구조이니, 설명은 생략하겠다. 연결 리스트(Linked List) 연결 리스트란 위의 그림처럼 각각의 Node가 존재하고, Node는 데이터와 다음 노드를 가리키는 포인터로 이루어져 있다. 그리고 첫 번째 Node를 HEAD라고 부르고, 마지막의 포인터가 가리키는 Node가 없다면 NULL 포인터가 되는 구조로 이루어져 있다. 연결 리스트의 삽입은 새로운 Node가 들어가고 포인터를 가리키는 식으로 이루어지고, 연결 리스트의 삭제는 기존의 Node가 빠지고, 포인터가 기존과 다른 Node를 가리키는 식으로 이루어진다. 그리.. 2023. 5. 18.
자료구조 개요 자료구조 자료구조, Data Structure란 데이터를 효율적으로 관리하기 위한 데이터의 집합의 형태(구조) 를 말한다. 즉, 데이터의 삽입(Insertion) 데이터의 삭제(Deletion) 데이터의 탐색(Search) 을 빠르고, 효율적으로 하기 위한 데이터의 구조이다. 자료구조의 종류와 구분 이제 자료구조를 하나 하나 알아가보도록 하자. 2023. 5. 18.
728x90
반응형