11. 그래프 (1) (인접행렬, 인접리스트, DFS, BFS)
알고리즘/스터디 2020. 9. 10. 14:26

그래프는 연결되어 있는 객체간의 관계를 표현할 수 있는 자료 구조이다. 수학자 오일러에 의해 처음 창안되어 그래프 이론은 컴퓨터 학문 분야의 활발한 연구 주제이다. 그래프에 관한 아주 간단한 설명은 이전 게시글에 있다. 2. 자료구조 (2) - 트리, 그래프 트리 트리 = 노드(node)로 이루어진 자료 구조. 하나의 루트 노드가 존재하고, 이로부터 0개 이상의 자식 노드들이 존재합니다. 이 노드들이 서브트리(subtree)를 구성합니다. 루트와 서브 트리, 각� howtolivelikehuman.tistory.com 인접 행렬 vs 인접 리스트 그래프를 표현하는 방법은 두가지가 있다. 인접 행렬과 리스트 인접행렬 M의 각 원소를 아래와 같은 규칙에 따라 그래프를 메모리에 표현할 수 있다. if(간선 x..

8. 탐색 - 선형 탐색, 이진 탐색, 이진 탐색 트리, 해시 탐색
알고리즘/스터디 2020. 8. 25. 03:15

선형탐색 순서대로 하나 하나씩 찾는 방법. $O(N)$의 시간복잡도. public int LinearSearch(int data[], int key){ for(int i=0; i 폴딩이라고 한다. 탐색 키가 문자열일 경우 주의할 점. 가장 보편적인 방법은 아스키 코드 값을 모두 더하는 것 but 탐색 키들이 동일한 문자로 이루어져있지만 위치가 다른 경우 ex) are, ear 같은 경우 구분할 수 없다. 아스키 문자 코드가 65~122이기 때문에, 3자리인 경우 195~366으로 해시 주소가 집중될 수 있다. 이를 해결하기 위해 아스키 코드 x 문자의 위치를 사용한다. 문자열 s가 n개의 문자이고, i번째 문자의 값을 $u_i$라 할때 $u_0g^{n-1} +u_1g^{n-2} + ... + u_{n-2..

1. 자료구조 (1) - 배열, 연결리스트, 스택, 큐
알고리즘/스터디 2020. 7. 14. 01:20

배열, 문자열 배열 여러 개의 동일한 타입의 데이터를 한번에 만들때 사용하는 자료구조입니다. 배열 이름이 상수 포인터의 역할을 하여, 주소로 참조합니다. (첫 번째 인덱스의 주소) 2차원 배열은 첫번째 인덱스가 행, 두번째 인덱스가 열을 의미하며 보통 테이블 처럼 생각하면 됩니다. 하지만 실제 메모리 상에서는 그냥 쭉 나열되어 있는 형태입니다. 배열의 장점으로는 빠르게 데이터에 접근할 수 있고, 배열 생성 이후 데이터를 관리하기 편합니다다. 하지만 배열을 전부 사용하지 않으면 메모리 공간 낭비가 생길 수 있습니다. 동적으로 데이터를 관리하기도 힘듭니다. 문자열 char형이 단어 1글자 밖에 담지 못해서, 문자열을 표현하기 위해 char형 배열을 사용했었습니다. 이때 글자 수+\0 (NULL문자, 문장의 ..