코딩테스트를 위한 자료구조 알고리즘/이론 3

알고리즘 이론 깨부수기 Array, Linked List, Stack, Queue, Tree

Array 가장 기본적인 자료구조로 논리적 저장 순서와 물리적 저장 순서가 일치한다. 따라서 인덱스로 해당 언소에 접근할 수 있어 찾고자하는 인덱스 값을 알고 있다면 O(1)의 시간 복잡도를 갖는다. 하지만 삭제하는 과정에서 원하는 값을 삭제하면 빈 공간이 생기고 그 빈 공간을 없애기 위해 뒤에 있는 값들을 당겨와야하기 때문에 O(N)의 시간복잡도를 갖는다. 삽입의 경우도 마찬가지이다. 만약 첫번째 자리에 새로운 원소를 추가하고자 한다면 모든 원소들의 인덱스를 1 씩 shift 해줘야 하므로 이 경우도 O(n)의 시간을 요구하게 된다. Linked List 배열의 문제점을 해결하기 위한 자료구조가 linked list이다. 링크드 리스트는 삽입과 삭제시 O(1)의 시간 복잡도를 가지게된다. 추가 0과 2..

Radix Sort

Radix Sort는 기수 정렬이라고 불립니다. 기수를 이용해서 정렬을 진행하는 방식이라고 생각하시면 쉽게 이해할 수 있는 알고리즘입니다. 1. Radix Sort 기수 정렬은 지금까지 배운 다른 정렬과 달리 서로의 배열 대상과 비교를 하지 않습니다. [3, 54, 7, 6103, 1045, 365, 356] 1의 자리 숫자를 0부터 9까지 숫자별로 나누어 놓습니다. [3, 6103, 54, 1045, 365, 356, 7] 이후 배열을 위의 그림에서 정렬한 방식대로 새롭게 배열을 만들어줍니다. 그리고 다음에는 자연스럽게 10의 자리 숫자를 분류하게 됩니다. 이처럼 10의 자리 숫자가 정렬이 진행됩니다. 그러나 여기서 중요한 점은 3, 7과 같은 10의 자리가 없는 숫자는 어떻게 될까요? 바로 0이라는 ..

그래프

그래프 그래프는 여러개의 점들이 서로 복잡하게 연결되어 있는 관계를 표현한 자료구조다. 직접적인 관계가 있는 경우 두 점 사이를 이어주는 선이 있는데 간접적인 관계라면 몇 개의 점과 선에 걸쳐 이어진다. 하나의 점을 그래프에서는 정점(vertex)이라고 표현하고, 하나의 선은 간선(edge) 이라고 한다. 정점(Vertex) - 그래프에서 하나의 연결점 간선(Edge) - 두 정점을 잇는 선 차수(Degree) - 정점 하나에 연결된 간선의 수 ✏️ V개 정점을 갖는 그래프의 최대 간선의 수는 V * (V-1) / 2 (무향 그래프 - 양방향) 무향그래프(undirected graph) 간선을 표현하는 두 정점의 쌍에 순서 즉 방향이 없는 그래프이다. 따라서 두 정점 V0와 V1을 잇는 간선 (V0, V..