목록분류 전체보기 (96)
코딩 성장기

이진 트리란? 노드가 최대 2개의 자식을 가질 수 있는 트리 자식노드를 왼쪽자식/오른쪽자식 으로 나누어서 부른다. 이진 트리의 종류 정 이진 트리(Full Binary Tree) 2개 혹은 0개의 자식을 갖는 노드로 이루어진 트리.(자식이 아예 없거나 있으면 무조건 둘이어야 함!) 완전 이진 트리(Complete Binary Tree) 1. 마지막 레벨을 제외한 모든 노드가 꽉 채워져 있어야 한다. 2. 마지막 레벨의 노드는 맨 왼쪽부터 채워지는 구조이어야 한다. 포화 이진 트리(Perfect Binary Tree) 모든 리프 노드가 같은 높이를 가지고 있으며, 모든 레벨의 노드가 2개의 자식을 가져 노드들이 완벽히 채워져있는 트리. 이진 탐색 트리 이진 트리 이면서, 특정 노드의 왼쪽에 있는 후손 노드..

트리란? 데이터의 상하관계(계층관계)를 저장하는 자료구조. 데이터에 하나 이상의 데이터들이 단방향으로 연결되어 있다. 이러한 구조가 마치 나무의 모습과 같아서, 트리구조라고 부른다. 비선형 구조이다. (선형 구조는 배열/리스트와 같이 순서를 갖는 데이터를 갖는다.) 트리 구조 노드를 데이터를 가지고 있는 점으로 보고, 노드 사이를 선으로 연결시킨다. 선으로 연결되어 있는 각 노드를 부모노드/자식노드 라고 부른다. (위에 있는 노드가 부모노드) 이 중, 가장 최상단에 위치하는 노드를 root 노드라고 부른다. 트리 용어 노드 : 그래프에서 각 데이터 root 노드(뿌리 노드) : 트리 최 상단의 노드. 트리의 시작점. 위의 그림에서 F에 해당한다. 부모 노드 : 상하 관계에 있는 데이터들 중에서, 윗쪽에 ..

인접 행렬과 인접 리스트는 언제 사용하나요? 인접 행렬과 인접 리스트는 데이터간 연결관계를 확인할 때 사용한다. 인접하다 = 노드가 서로 엣지로 연결되어 있다. 인접 행렬 이란? 노드(데이터)들의 연결관계를 보여주는 2차원 리스트(행렬). 각 노드에 고유한 인덱스를 부여하여 연결관계를 확인한다. 행렬의 행과 열에 인덱스들을 위치 시키고, 행렬의 성분으로 인덱스간의 연결 관계를 넣는다. 비가중치 & 무방향 그래프인 경우 성분이 0, 1 중 하나가 된다. 노드간 연결이 되어있으면 1, 없으면 0 이 된다. 행렬에서 왼쪽에서 오른쪽으로 내려가는 방향의 대각선을 기준으로 행렬이 좌우 대칭을 이룬다. 비가중치 & 방향 그래프인 경우 성분이 0, 1 중 하나가 된다. 노드간 연결이 되어있으면 1, 없으면 0 이 된..
버블정렬이란? 배열에서 첫번째 요소와 두번째 요소의 크기를 비교하여, 첫번째 요소가 크면 두번째 요소와 자리를 바꾸고 그렇지 않다면 그대로 둔다. 그 후 두번째 요소와 세번째 요소 비교, 세번째 요소와 네번째 요소 비교... 하여 정렬 끝까지 비교를 한 후, 크기 순서대로 요소가 정렬 될 때까지 위의 과정을 반복하는 정렬이다. -이중 반복문을 이용하는 버블정렬 코드- const bubbleSort = function (arr) { // 두 요소끼리 비교하는 반복문 작성 // 바꿔줄 요소를 담는 변수 생성 let temp = arr[0] // 한 사이클 for (i = 0; i < arr.length - 1; i++) { // 숫자끼리 비교해서 자리 바꾸기 for (j = 0; j < arr.length ..

그래프란? 데이터간 연결관계를 저장하는 자료구조. 데이터 하나를 점으로 보고, 점 사이를 선으로 연결하여 데이터간 연결 관계를 나타낸다. 점은 정점(vertex) 혹은 노드(node)라고 부르고 선은 엣지(edge) 혹은 간선이라고 부른다. 두 데이터가 직접적인 관계를 가지고 있으면, 서로 선으로 연결해주며 여러개의 점과 선으로 연결되어있는 데이터는 서로 간접적인 관계를 가지고 있다고 생각한다. 서로 아무런 접점/연결성이 없으면 관계가 없다고 말한다. 비가중치 그래프 가중치가 없는 그래프이다. 두 점끼리 관련이 있다는 것은 파악 할 수 있지만, 세부 정보는 알 수 없는 그래프. (정점간의 연결 유무만 확인 가능) 가중치 : 두 점이 얼마나 관련이 있는지 알려주는 척도. 정보를 나타내는 수치 예) 사람 사..

자료구조란? 데이터를 저장하고 관리하기 위한 방식. 자료구조를 통해서 데이터에 효율적으로 접근하여 조작할 수 있다. 상황에 따라 적절한 자료구조를 이용하여 데이터를 관리하는것이 좋다. 큐(Queue) 마트 계산대 줄을 생각하면 좋다. 맨 앞 부터 차례대로 데이터가 나가고(데이터를 앞에서만 삭제), 맨 뒤에 데이터가 들어오는 구조. FIFO(First In First Out) : 가장 먼저 들어온 데이터가 가장 먼저 삭제되는 구조 LILO(Last In Last Out) : 가장 늦게 들어온 데이터가 가장 나중에 삭제되는 구조 맨 뒤 데이터 추가 맨 앞 데이터 접근 맨 앞 데이터 삭제 스택(Stack) 데이터가 차곡차곡 쌓여있는 구조. 쌓여있는 접시를 상상! LIFO(Last In First Out) : ..