언어

#0. 개념 1. 그래프?[정의] : 그래프는 노드와 간선들의 집합으로 이루어진 비 선형 자료구조입니다. 그래프의 노드들은 간선을 통해 연결되어 일종의 네트워크를 형성합니다. 그래프는 노드와 간선의 개수, 간선의 방향 유무 등에 따라서 다양한 형태로 나타납니다. 예를 들면, 간선의 방향성 유무에 따라서 비 방향성 그래프와 방향성 그래프가 존재합니다. 더불어, 간선의 연결 강도에 따라서 가중치 그래프/네트워크가 있고, 노드와 간선의 연결 유무에 따라서 부분 그래프와 완전 그래프가 존재합니다.[특징] : (1) 계층 구조의 부재 : 그래프는 계층 구조를 갖지 않습니다. (2) 간선의 방향성 : 그래프의 간선은 비 방향성 혹은 방향성을 갖습니다. (3) 간선의 가중치 : 그래프의 간선은 가중치를 가질 수 있습..
[자료구조]#5_트리 트리 자료구조에 대해 알아보겠습니다.  Overview 개념이진트리순회이진 탐색 트리균형 이진트리AVL 트리레드-블랙 트리Map, Set힙 #0. 개념1. 트리? [정의] : 트리는 1:n 관계의 계층 구조를 갖는 비선형 자료구조입니다. 트리는 노드로 구성되어, 각 노드의 연결 관계는 간선으로 표현합니다. 트리 자료구조는 사이클이 존재하지 않아 노드 간 계층 구조를 갖는 것이 특징입니다. 만약, 트리 자료구조의 노드 개수가 N개라면, 간선의 갯수는 N-1개입니다. [특징] : (1) 계층 구조 : 트리의 루트 노드는 부모 노드가 없지만, 그 외 노드들은 부모-자식 관계를 가지며 계층 구조를 형성합니다.  (2) 간선의 방향성 : 트리의 간선은 항상 부모 -> 자식으로 방향성을 갖습니..
[자료 구조] #0_선형 자료구조 선형 자료구조에 대해 알아보겠습니다. Overview 개념 스택 큐 원형 큐 덱 배열 벡터 리스트 이중 연결 리스트 #0. 개념 1. 선형 자료구조? [정의] : 선형 자료구조는 데이터 항목이 순차적으로 배열되는 자료구조입니다. 선형 자료구조에서 각 항목은 전후 관계를 가지며, 이를 통해 리스트의 처음부터 끝까지 순차적으로 접근할 수 있습니다. [종류] : 선형 자료구조의 대표적인 예로 스택, 큐, 배열, 리스트가 있습니다. 2. 장점 비교적 빠른 접근 속도 : 선형 자료구조는 데이터가 연속적으로 저장되어 특정 인덱스 혹은 포인터를 통해 빠르게 데이터에 접근할 수 있습니다. 간단한 구현 3. 단점 비교적 느린 검색 속도 : 선형 자료구조 안에서 특정 데이터를 검색하는 과..
[자료구조]#4_레드-블랙 트리 레드-블랙 트리에 대해 알아보겠습니다. Overview 개념 정렬 방법 #0. 개념 1. 레드-블랙 트리? [정의] : 레드-블랙 트리는 균형 이진 트리의 한 종류로, 노드에 빨간색/검정색을 부여하는 방식으로 트리의 높이 균형을 유지합니다. 레드-블랙 트리의 자가 균형성은 편향 이진 트리의 최악의 경우 O(n)의 시간 복잡도 대신, 항상 O(log n)의 탐색 시간을 보장합니다. [특징] : 레드-블랙 트리는 몇 가지 조건으로 노드에 색을 부여하고, Restructuring 혹은 Recolorizing을 통해 정렬 작업을 수행합니다. [레드-블랙 트리 vs AVL트리] : 레드-블랙 트리는 AVL트리와 같은 균형 이진 트리이지만, 균형 조건이 비교적 더 허용적이므로, 일반..
[Basic C++] #66_rotate, 배열 회전 C++에서 제공하는 rotate() 함수에 대해 알아보겠습니다. Overview 개념 코드 예제 #0. 개념 1. 배열 회전 C++에서 제공하는 rotate() 함수는 지정된 범위 내에서 항목들의 순서를 변경합니다. 2. 헤더 #include 3. Syntax template void rotate (ForwardIterator first, ForwardIterator middle, ForwardIterator last); Details rotate() 함수는 총 세 가지 인자를 전달받습니다. first, middle, last. first는 범위의 첫 번째 항목을 가리키는 반복자입니다. middle은 범위의 첫 번째 그룹의 마지막 요소를 가리키는 반복..
[Basic C++] #65_getline() C++에서 제공하는 getline() 함수에 대해 알아보겠습니다. Overview 개념 코드 예제 #0. 개념 1. getline() getline() 함수는 문자열을 입력받는 함수입니다. getline() 함수는 입력 스트림에서 개행 문자(\n)를 만날 때까지 문자를 읽습니다. 즉, 사용자가 작성한 공백을 포함한 문자열을 입력해도 개행 문자를 만날 때까지 모든 문자를 읽을 수 있습니다! #1. 코드 예제 1. 헤더 #include 2. 문법 istream& getline (istream& is, string& str, char delim); Details getline() 함수는 첫 번째 인자로 입력 스트림 객체(cin)를 전달받습니다. getline() ..
[Basic C++] #64_stack C++에서 제공하는 stack 클래스에 대해 알아보겠습니다. Overview 개념 선언 멤버 함수 예제 #0. 개념 1. Stack C++에서 제공하는 stack은 LIFO 데이터 구조를 구현하는 STL 컨테이너입니다. stack은 기본적으로 컨테이너의 가장 뒤쪽에서만 데이터를 삽입하고 삭제합니다. #1. 선언 1. 헤더 #include 2. 선언 및 초기화 #include #include using namespace std; int main() { // #0. 빈 스택 선언 stack s1; // #1. 기존 배열을 활용한 초기화 int arr[] = { 1, 2, 3, 4, 5 }; int n = sizeof(arr) / sizeof(arr[0]); stack ..
[Basic C++] #63_string C++에서 제공하는 string 클래스에 대해 알아보겠습니다. Overview 정의 선언 멤버 함수 그 외 특징 예제 #0. 정의 1. string 클래스 C++에서 제공하는 string 클래스는 문자열을 다루기 위한 클래스입니다. string 클래스는 문자열을 저장하고 다양한 조작 함수를 제공합니다. string 클래스를 활용하면 복잡한 작업들을 직접 구현할 필요가 없고, 효율적으로 문자열을 다룰 수 있습니다. C언어의 char* 혹은 char[]과 달리, 문자열 끝에 '\0'이 들어있지 않습니다. #1. 선언 1. 헤더 #include 2. 선언 혹은 초기화 #include using namespace std; int main() { string str("He..
[Basic C++] #62_erase(), 주의할 점 STL 순차 컨테이에서 활용하는 erase() 함수에 대해 알아보겠습니다. Overview 개념 코드 예제 #0. 개념 1. std::erase() iterator erase (const_iterator position); iterator erase (const_iterator first, const_iterator last); Details erase() 함수는 STL의 순차 컨테이너에 저장된 요소를 제거하는 데 사용됩니다. #1. 코드 예제 1. 예제-1 #include #include using namespace std; int main() { vectorv = { 0, 1, 2, 3, 4, 5, 6 }; v.erase(v.begin(), v...
[기술 질문] #18_알고리즘 복잡도 알고리즘의 복잡도에 대해 알아보겠습니다. Overview 개념 시간 복잡도 공간 복잡도 #0. 개념 1. 복잡도 알고리즘의 복잡도는 알고리즘의 입력 크기와 연산 횟수 사이의 관계를 나타내는 함수입니다. 보통 시간 복잡도와 공간 복잡도로 나누어져 있습니다. #1. 시간 복잡도 1. 개념 시간 복잡도는 알고리즘이 실행되는 동안 수행하는 기본적인 연산 횟수를 입력 크기와 연관시켜 분석하는 것입니다. 결과적으로, 입력 크기에 따라서 알고리즘의 실행 시간이 어떻게 변화하는지 나타내며, 알고리즘의 효율성과 성능을 평가하는 중요한 지표 중 하나입니다. Big-O 표기법은 알고리즘의 시간 복잡도를 점근적으로 표기하는 방법입니다. 즉, 알고리즘의 입력의 크기가 충분히 커질 때, 알고..
Hardii2
'언어' 카테고리의 글 목록 (2 Page)