Algorithm/basic 7

알고리즘 기초 7 - [자료구조, 트리]

Tree Tree 개념, 주요 용어 Tree의 개념 노드와 링크를 이용한 자료구조 족보 구조 트리 구조로 많은 알고리즘을 구현하는 이유 : 다른 자료구조보다 자료를 저장하거나 검색하는 등의 방법이 간단하고 메모리를 효율적으로 사용 가능 트리 관련 주요 용어 선택한 요소의 '마지막'에 새로운 요소나 콘텐츠를 추가 ㅇ노드의 주요 용어 용어 설명 루트 노드, Root Node 연결된 노드가 한 군데로 모이는 상위에 위치하는 노드 (노드 A) 차수, Degree - 한 노드에 연결된 서브 트리의 개수 -차수가 2개 이하인 트리 구조를 이진 트리(Binary Tree)라고 부른다. - 노드 A의 차수는 노드 A에 연결된 서브 트리가 모두 3개이므로 3이 되고, 노드 B의 차수는 노드 B에 연결된 노드가 2개이므로..

Algorithm/basic 2021.03.10

알고리즘 기초 6 - [자료구조, 덱]

Dequeue 덱 ( 이중 링크드 리스트로 구현) FIFO + LIFO (Stack + Queue) Stack putFront getBack Queue putBack getFront 과정 1. initDeque 2. putFront(10) or putBack(10) 3. putFront(5) 4. putBack(4) 5. getBack() 6. getFront() Java class Deque { static class Node { int data; Node next; Node prev; public Node(int data) { this.data = data; this.next = null; this.prev = null; } } static Node front, rear, ptrNode; public..

Algorithm/basic 2021.03.09

알고리즘 기초 5 - [자료구조, 큐]

Queue 목차 LIFO(Last Input First Out)이 아닌 FIFO(First In First Out) Put : 데이터가 도착하는 순대로 저장된다. Get : 처음 저장된 데이터부터 차례대로 사용된다. 배열을 사용한 큐의 구현 C #include #define MAX 100 // Queue int Queue[MAX]; int Front, Rear; void InitializeQueue(void); // 큐 초기화 함수 void Put(int); // 데이터 삽입 void Get(void); // 데이터 삭제 void DisplayQueue(void); // 큐를 보여줌 void InitializeQueue(void) { Front = Rear = 0; } void Put(int num) {..

Algorithm/basic 2021.03.09

알고리즘 기초 4- [자료구조, 스택]

Stack 목차 Stack의 기본 개념 입력과 출력을 한 방향으로 제한한 자료 구조 바닥부터 데이터를 Stacking(쌓는) 느낌으로 접근 push : 데이터에 순서를 적용해 차례로 저장 pop : 가장 최신 데이터부터 차례로 가져온다. Stack data data data data 위와 같은 방식을 LIFO (Last In First Out)라고 한다. 스택의 구조체 C typedef struct _NODE { int Data; struct _NODE *Next; }NODE; Java class Node { int data; Node next; public Node(int data) { this.data = data; this.next = null; } } JavaScript class Node { c..

Algorithm/basic 2021.03.08

알고리즘 기초 3 - [자료구조, 이중링크드리스트, 삽입(검색), 삭제(검색)]

이중 링크드 리스트 목차 단일 링크드 리스트는 배열처럼 오직 한 방향으로만 순회하여 참조 가능한 자료구조이지만, 이중/원형 링크드 리스트는 전의 요소를 순회 혹은 이전 노드로 이동하여 참조가 가능한 자료구조이다. [참조] 달달한 디버깅 이중 링크드 리스트 구조체 정의 C typedef struct _NODE { char Data; struct _Node *Next; struct _Node *prev; } NODE; Java class Node { char data; Node next; Node prev; public Node(char data) { this.data = data; next = null; prev = null; } } JavaScript class Node { constructor(data..

Algorithm/basic 2021.03.08

알고리즘 기초 2 - [자료구조, 단일링크드리스트(삽입, 삭제, 검색)]

알고리즘 메모리와 주소, 자료형과 자료구조 목차 메모리와 주소의 관계 Simple Question 프로그램 안에서 데이터를 저장하거나 저장된 데이터를 불러올 때, 메모리에 어떻게 접근할까? - 보통은 메모리의 위치정보가 있는 "메모리 주소"를 통해 접근한다 (C, C++에서는 Pointer) 프로그램의 효율성 측면에서 볼 때, 배열이 담고 있는 각각의 집이라면, 'A'라는 친구의 집을 찾아갈 때, 0번지부터 끝번지까지 집 문앞에서 문을 두드려 주인을 확인하는 방법이 빠를까? 아니면 이미 'A'라는 친구의 집주소를 알고 그 집으로 한번에 찾아가는 것이 빠를까? 자료형과 자료구조 Simple Question 프로그래밍 언어에서 별도의 자료형(type)을 제공하는 이유는 무엇일까? 1. 메모리 공간의 효율적 ..

Algorithm/basic 2021.03.08

알고리즘 기초 - 1 [알고리즘 정의, 평가, 분석, 빅오 표기법]

목차 알고리즘의 역할 주어진 조건에서, 어떤 절차와 방법으로 문제를 해결할 수 있을까? 알고리즘의 정의 "어떤 문제를 해결하기 위한 절차나 방법" 어떤 방식이더라도, 결국 문제를 해결할 수 있는 절차와 방법이 중요하다. 다만, 해결 방식에서의 효율성[시공간적], 안정성[Race Condition]등을 생각해야 한다. 알고리즘의 조건 입력 : 0 또는 그 이상의 외부에서 제공된 자료가 존재 출력 : 최소 1개 이상의 결과 명확성 : 각 단계의 애매함 없는 명확한 과정 구성 유한성 : 유한한 수의 단계 수행 후, 문제가 해결되어 종료 효율성 : 모든 연산은 명백하게 실행할 수 있음을 검증 알고리즘 평가 알고리즘은 어떤 조건 condition이 중요하냐에 따라 효율적인 문제 해결 방법이 달라진다. 따라서 여러..

Algorithm/basic 2021.02.19