일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- git 설정
- 코드스테이츠
- file i/o
- ubuntu 패스워드
- ubuntu passwd
- git workflow
- set-version
- 탐욕 알고리즘
- root passwd
- http 응답코드
- ubuntu
- char to int
- 리눅스 사용권한
- Java
- O(log n)
- Spring MVC
- REST HTTP API
- N:N
- 스키마 설계
- RestControllerAdvice
- Spring
- JAVA 재귀함수
- 자료구조
- AOP
- mapstruct
- 배열 탐색
- 함수형 인터페이스
- custom exception
- Spring 예외처리
- 스키마 디자인
- Today
- Total
목록CS/자료구조 (7)
개발소설
트리 순회 (Tree traversal) 특정 목적을 위해 트리의 모든 노드를 방문하는 것을 트리 순회라고 한다. 트리 순회에는 전위 순회, 중위 순회, 후위 순회가 있다. 전위 순회 root를 먼저 순회 root(부모노드) -> 왼쪽 하위 트리 (왼쪽 자식 노드) -> 오른쪽 하위 트리 (오른쪽 자식 노드) public ArrayList preorderTree(Node root, int depth, ArrayList list) { //전위 순회 if (root != null) { list.add(root.getData()); // 부모 노드 preorderTree(root.getLeft(), depth + 1, list); // 왼쪽 자식노드 preorderTree(root.getRight(), dep..
그래프 탐색 하나의 정점에서 시작하여 그래프의 모든 정점을 순회하는 것이 목적 넓이 우선 탐색 (BFS), 깊이 우선 탐색(DFS)로 나뉜다. 넓이 우선 탐색 - BFS (Breadth-First Search) 가장 가까운 정점 부터 탐색한다. 인접한 정점을 모두 탐색한후 다음 깊이(depth)의 정점들을 모두 탐색 마지막 깊이의 정점들을 탐색할때까지 반복 주로 두 정점 사이에 최단 경로를 확인할때 사용한다. 깊이(depth)가 낮을때 사용하면 좋다. 깊이 우선 탐색 - DFS(Depth-First Search) 하나의 경로를 끝까지 탐색한후 다음 경로를 탐색 한다. 하나의 경로에 최대 깊이(depth)까지 탐색한다. 다음 경로로 넘어가기전까지 하나의 경로를 완벽하게 탐색 할 수있으므로 운이 좋다면 몇번..

BST(Binary Search Tree) 트리 구조는 편리한 구조를 전시하는것 외에 효율 적인 탐색을 위해서도 사용한다. 효율 적인 탐색을 위한 트리 구조중 가장 대표적인 트리는, 이진 트리(binary tree)와 이진 탐색 트리(binary search tree) 이진 트리(binary tree) 자식 노드가 최대 2개인 트리 왼쪽 자식노드와 오른쪽 자식노드를 가진다. 정 이진 트리, 포화 이진 트리, 완전 이진 트리로 나뉜다. 각 노드가 0개 or 2개의 자식 노드만 가진다. 마지막 레벨을 제외한 모든 노드가 가득 차야하고 마지막 레벨 노드는 전부 차있지 않아도 되지만 왼쪽 노드는 차있어야 한다. 모든 리프 노드의 레벨이 동일하고 , 모든 레벨이 가득 차 있는 이진 트리 이진 탐색 트리(binar..

Grahp 여러 개의 점들이 서로 복잡하게 연결되어 있는 관계를 표현한 자료구조 x축과 y축이 있는 수학에서의 그래프와 달리 거미줄처럼 여러개의 점과 선으로 이루어진 복잡한 네트워크 모양을 하고 있다. Graph의 구조 직접적인 관계가 있는 경우 두점이 직접적인 선으로 이어진다. 간접적인 관계인 경우 몇개의 점과 선에 걸쳐 이어진다, 그래프에서 하나의 점을 정점(vertex), 하나의 선은 간선(edge)라고 합니다. Graph의 표현 방식 인접 행렬 두 정점을 바로 이어주는 간선이 있다면 두 정점은 인접한다 라고 한다. 서로 다른 정점들이 인접한 상태인지를 2차원 배열의 형태로 나타낸다. A라는 정점과 B라는 정점이 이어져 있다면 1(true), 이어져 있지 않다면 0(false)로 표시한다. 가중치 ..

Tree 나무를 거꾸로 뒤집어 놓은 형태를 의미하는 자료 구조 단방향 그래프이고 하나의 뿌리(root)로부터 가지가 사방으로 뻗은 형태 데이터가 바로 아래에 있는 하나 이상의 데이터에 무방향으로 연결된 계층적 자료구조 하나의 데이터 아래 여러개 데이터가 존재하는 비선형 구조 stack과 queue는 데이터를 순차적으로 나열시킨 선형구조 이다. 루트(Root)라는 하나의 꼭짓점 데이터를 시작으로 여러 개의 데이터를 간선(edge)으로 연결 각 데이터를 노드(Node)라고 한다. 두 노드가 상하 관계의 계층으로 연결되면 부모/자식 관계가됨 연결된 상층의 노드를 부모 노드(Parent Node), 하층의 노드를 자식 노드(Child Node)라 한다. 자식이 없는 노드를 리프 노드(Reaf Node)라고 한다..

Queue 선입 선출 구조의 자료구조 이다. FIFO(First In First Out) 가장 먼저 입력한 데이터를 가장 먼저 출력한다. 데이터의 입출력 방향이 다르다. front : 출력 rear : 입력 데이터를 하나씩 입력하고 하나씩 빼야 한다. - 여러개의 데이터를 동시에 처리 할 수 없다. 큐에 데이터를 입력하는 것을 'enqueue', 데이터를 출력하는 것을 'dequeue'라고 한다. 현실에서 일반적인 대기줄을 생각하면 된다. 가장 먼저 대기줄에 선 사람이 우선 순위가 가장 높다. 컴퓨터의 장치들 사이에서 데이터를 주고 받을 때, 각 장치 사이에 존재하는 속도, 시간의 차이를 극복하기 위해 임시 기억 장치의 자료 구조로 Queue를 사용한다, 이것을 버퍼(buffer)라고 한다. 프린터로 인..
Stack 데이터를 순서대로 쌓는 자료구조 후입 선출 구조 이다. - LIFO(Last In First Out), FILO(First In Last Out) 가장 먼저 입력한 데이터가 가장 마지막의 출력이 된다. 데이터의 입출력 방향이 같다. 데이터를 하나씩 입력하고 하나씩 빼야 한다. - 여러개의 데이터를 동시에 처리 할 수 없다. 현실에서 프링글스통을 생각하면 된다. - 포장시 가장 먼저 넣었던 과자를 가장 마지막에 뺀다. 스택에 데이터를 입력하는 것을 PUSH, 데이터를 꺼내는것을 POP이라고 한다. JAVA에서 Stack 자바에서 클래스로 제공한다. import java.util.*; // stack 생성 Stack stack = new Stack(); // stack 입력 stack.push("..