본문 바로가기

전체 글

(32)
Tree Data Structure(트리 자료구조) 1. 트리(Tree) 란? 트리는 비선형, 계층적 관계를 표현하는 자료구조이다. 또한 명확한 부모와 자식 관계의 자료구조이다. 구성요소 노드 : 자료, 객체, 각 항목 Path(간선 or edge) : 노드와 노드를 연결하는 선 Root Node : 구조의 최상위 노드 Terminal Node(or leaf Node) : 자식노드를 가지고 있지 않은 노드 Internal Node : 터미널 노드를 제외한 모든 노드(루트 노드 포함) 트리 구조의 종류 General Tree 레벨 0 에 있는 노드는 항상 루트노드다. 같은 레벨에 존재하는 노드는 동일한 관계이고 다른 레벨에 존재하는 노드는 부모-자식의 관계이다. 어떤 노드든 갯수에 관계없이 자식노드를 가질 수 있다. Forests 만약 루트노드를 삭제하면 ..
Graph Data Structure(그래프 자료구조) 1. 그래프(Graph) 란? 단순히 노드(또는 vertex)와 그 노드를 연결하는 간선(edge)을 하나로 모아놓은 자료구조이다. 즉, 연결되어 있는 객체 간의 관계를 표현할 수 있는 자료구조로 여러 개의 고립된 부분 그래프(Isolated Subgraphs)로 구성될 수 있다. 방향(directed)/무방향(undirected) 그래프 모두 존재한다. 트리 자료구조는 그래프 자료구조에 포함된다. 2. 그래프의 활용 지하철 노선도의 최단경로 구글맵 최단경로 페이스북 팔로워 등 3. 구현을 위한 의사코드(Pseudo Code) 자바스크립트 그래프 형태 graph = { "data1": { "value": "data1", "from": [], "to": ["data2", "data3"] }, "date2"..
Linked List Data Structure(링크드 리스트 자료구조) 1. 링크드 리스트(Linked List) 란? 배열의 단점을 해결하고자 만든 자료구조로 몇개의 배열을 선언할 지 알 수 없기 때문에 이를 해결하기 위한 자료구조이다. 고리와 고리를 연결한 형태로 각각의 데이터가 다음 데이터가 누구인지 알고 있는 데이터 구조이다. 장점: 추가와 삭제가 용이하다. 미리 사이즈를 할당할 필요가 없다. 단점: 탐색 속도가 느리다. 링크드 리스트는 두가지 형태로 존재할 수 있다. Head-to-Tail search structure 헤드부터 테일까지 노드의 연결로 구조화 되어있다. 더미노드 헤드와 테일을 지정하지 않고 노드를 중심으로 연결된 자료구조 형태 ***마지막 노드(테일)는 항상 null을 가리킨다. 노드(or vertex): 각 객체, 자료 데이터필드(data fiel..
Queue Data Structure(큐 자료구조) 1. 큐(Queue) 란? 먼저 넣은 데이터가 먼저 나오는 FIFO(First In First Out) 구조 형식 장점: 우선순위가 필요한 데이터를 처리할 때 유용 단점: 크기가 제한적이다. 큐의 앞이 비어있어도 데이터를 추가 할 수 없다. 2. 큐의 활용 캐시(Cache) 구현 선입선출이 필요한 대기열(인쇄 대기열, 티켓 카운터 등) 콜센터 고객 대기시간 프로세스 관리 등 3. 구현을 위한 의사코드(Pseudo Code) 1. 데이터를 담을 수 있는 객체 생성 2. 데이터의 추가/삭제 등 큐구조에 맞는 메소드함수를 만든다. 2-1. enqueue(data) : 새로운 데이터를 순서에 따라 다음 키값으로 지정해 추가한다. 2-2. dequeue() : 큐의 첫번째 키값을 가진 데이터를 제거한다. 2-3...
Stack Data Structure(스택 자료구조) 1. 스택(Stack) 이란? 한 쪽 끝에서만 자료를 넣고 뺄 수 있는 LIFO(Last In First Out) or FILO(First In Last Out) 형식의 자료구조 장점: 구현이 쉽다. 원하는 데이터의 접근 속도가 빠르다. 단점: 데이터의 최대 개수를 미리 정해야 한다. 추가/삭제가 어렵다. 2. 스택의 활용 재귀 알고리즘 실행 취소 역순 문자역 만들기 수식의 괄호 검사 미로 찾기 컴퓨터 메모리 관리 등 3. 구현을 위한 의사코드(Pseudo Code) 1. 데이터를 담을 수 있는 객체 생성 2. 데이터의 추가/삭제 등 스택구조에 맞는 메소드함수를 만든다. 2-1. push(date) : 데이터가 추가되는 순서에 따라 다음 키값을 지정해준다. 2-2. pop() : 스택의 마지막 값을 가져..
자료구조의 이해 자료구조의 이해 1. 알고리즘이란? 알고리즘이란, 어떠한 문제를 해결하기 위한 여러 순차적인 동작들의 모임을 말한다. 그 문제가 해결되기 까지의 유한성을 가진 프로세스며, 의사코드(Pseudo Code)로 표현될 수 있다. 또한, 특정언어에 구속되지 않는다. 2. 왜 알고리즘은 중요한가? 프로그램의 성능에 큰 영향을 미친다. 알고리즘 설계시 다음 요소들을 고려해야 한다. 1) Time Complexity : 알고리즘을 수행하는데 걸리는 시간 2) Space Complexity : 알고리즘을 수행하는데 필요한 공간 3. 자료구조란? 데이터를 어떤 공간에 어떻게 저장할 것인지를 표현한 설계구조다. 자바스크립트의 배열(Array)과 객체(Object)는 대표적인 자료구조의 예라고 볼 수 있다. 적절한 자료구조..
조건문(if...statement)과 함수(function) 1. 조건문(if...statement) 모든 조건문은 Boolean 값이 true 인지 false 에 따라 실행되거나 실행되지 않는다. Boolean 이란, JavaScript 타입 중 하나로 true 혹은 false 의 반환 값을 갖는다. 아래와 같이 비교 연산자(comparison operator)를 통해 값을 반환할 수 있다. Comparison operators Description === equal to !== not equal to > greater than = greater than or equal to = 10) { return name + ', 나가서 먹자!'; } else { return name + ', 그냥 집에서 먹어.'; } } console.log(eatOut('Daniel'..
변수(variable)와 타입(type) 1. 변수_variable 변수(variable)란? = 이름(label)이 붙은 값. 다음과 같이 원하는 변수에 값을 대입시킬 수 있다. let myname = 'Daniel'; 여기서 말하는 " = " 는 " 같다. " 라는 개념이 아닌 " 대입한다(assign). " 라는 개념이다. 예를 들어, let pi = 3.141592; let r = 5; 이렇게 변수를 정의하고 원의 넓이를 표현식으로 쓰면 다음과 같다. let areaOfCircle = pi * r * r; 만약 할당값이 없다면 결과는 undefined를 얻게된다. 2. 타입_type JavaScript에는 여러종류의 형식이 존재한다. Type Examples Number(숫자열) 1, 3.141592, 505 String(문자열) 'Da..