여기서 C++에서 문자열의 일부를 다른 문자열로 바꾸는 방법을 살펴보겠습니다. C++에서는 교체가 매우 쉽습니다. string.replace()라는 함수가 있습니다. 이 바꾸기 기능은 일치 항목의 첫 번째 항목만 바꿉니다. 우리는 루프를 사용했습니다. 이 대체 함수는 대체할 위치에서 인덱스를 가져오고 문자열의 길이와 일치하는 문자열 자리에 배치될 문자열을 가져옵니다. Input: A string "Hello...Here all Hello will be replaced", and another string to re
여기에서 부분 문자열을 다른 부분 문자열로 바꾸는 방법을 볼 것입니다. pos 문자에서 시작하여 len 문자에 걸쳐 있는 문자열 부분을 대체합니다. 바꾸기 함수의 구조는 다음과 같습니다. string& replace (size_t pos, size_t len, const string& str, size_t subpos, size_t sublen); 매개변수는 pos입니다. :삽입점 str입니다. :string
여기에서는 스택을 사용하여 균형 잡힌 브래킷을 확인하는 방법에 대해 설명합니다. 여는 대괄호와 닫는 대괄호만 확인하는 것이 아니라 대괄호의 순서도 확인합니다. 예를 들어 [{} () {()}] 표현식은 정확하지만 {[}] 표현식은 올바르지 않다고 말할 수 있습니다. Input: Some expression with brackets "{()}[]" Output: They are balanced 알고리즘 Step 1: Define a stack to hold brackets Step 2: Traverse the exp
이 문제에서는 스택을 사용하여 십진수를 이진수로 변환하는 방법을 볼 것입니다. 십진수를 2로 나누고 나머지를 취한 후 이진수를 사용하여 변환할 수 있다는 것을 알고 있습니다. 나머지를 마지막에서 처음으로 취하므로 스택 데이터 구조를 쉽게 사용할 수 있습니다. Input: Decimal number 13 Output: Binary number 1101 알고리즘 Step 1: Take a number in decimal Step 2: while the number is greater than 0: Step 2.1: Push the re
수학적 표현을 풀기 위해서는 접두사 또는 접미사 형식이 필요합니다. 중위를 후위로 변환한 후 정답을 찾기 위해서는 후위 평가 알고리즘이 필요합니다. 여기에서도 스택 데이터 구조를 사용하여 접미사 식을 해결해야 합니다. 접미사 식에서 일부 피연산자가 발견되면 스택에 푸시합니다. 어떤 연산자가 발견되면 스택에서 두 개의 항목을 팝한 다음 올바른 순서로 연산을 수행합니다. 그 후 결과도 나중에 사용할 수 있도록 스택에 푸시됩니다. 전체 표현식이 완료되면 최종 결과도 스택 상단에 저장됩니다. Input: Postfix expressio
이 프로그램에서 우리는 C++를 사용하여 스택을 구현하는 방법을 볼 것입니다. 스택은 요소 모음을 포함하는 추상 데이터 구조입니다. 스택은 LIFO 메커니즘을 구현합니다. 즉, 끝에 푸시된 요소가 먼저 튀어 나옵니다. 스택의 주요 작업 중 일부는 다음과 같습니다. - 푸시 - 스택의 맨 위에 데이터 값을 추가합니다. 팝 - 스택 맨 위에 있는 데이터 값을 제거합니다. 피킹 - 스택의 최상위 데이터 값을 반환합니다. 배열을 이용하여 스택을 구현하는 프로그램은 다음과 같다. Input: Push elements 1
그래프의 인접 목록 표현은 연결 목록 표현입니다. 이 표현에서 우리는 리스트의 배열을 가지고 있습니다. 배열 크기는 V입니다. 여기서 V는 정점의 수입니다. 즉, 서로 다른 V개의 목록을 저장할 배열이 있다고 말할 수 있습니다. 목록 헤더가 정점 u이면 u의 모든 인접 정점을 보유한다는 것을 의미합니다. 인접 목록 표현의 복잡성 이 표현은 무방향 그래프의 경우 O(V+2E), 방향 그래프의 경우 O(V+E)를 사용합니다. 모서리 수가 늘어나면 필요한 공간도 늘어납니다. 입력 : 출력 : 알고리즘 add_edge(
그래프의 인접 행렬은 V x V 크기의 정방 행렬입니다. V는 그래프 G의 꼭짓점 수입니다. 이 행렬에서 각 변의 V 꼭짓점은 표시됩니다. 그래프에 i에서 j 정점까지의 모서리가 있는 경우 i번째의 인접 행렬에서 행 및 j번째 열은 1(또는 가중치 그래프의 경우 0이 아닌 값)이 됩니다. 그렇지 않으면 해당 위치는 0을 유지합니다. 인접 행렬 표현의 복잡성: 인접 행렬 표현은 계산되는 동안 O(V2)의 공간을 차지합니다. 그래프에 최대 모서리 수와 최소 모서리 수가 있을 때 두 경우 모두 필요한 공간은 동일합니다. 입력
볼록 껍질은 주어진 모든 데이터 포인트를 포함할 수 있는 최소 닫힌 영역입니다. Graham의 스캔 알고리즘은 볼록 껍질의 모서리 점을 찾습니다. 이 알고리즘에서는 처음에 가장 낮은 지점이 선택됩니다. 그 점은 볼록 껍질의 시작점입니다. 나머지 n-1 정점은 시작점에서 반시계 방향을 기준으로 정렬됩니다. 2개 이상의 점이 같은 각을 형성하고 있는 경우, 시작점에서 가장 먼 점을 제외하고 같은 각의 모든 점을 제거합니다. 나머지 포인트에서 스택으로 푸시합니다. 그리고 스택 맨 위 포인트, 두 번째 맨 위 포인트 및 새로 선택한 포
Jarvis March 알고리즘은 주어진 데이터 포인트 세트에서 볼록 껍질의 코너 포인트를 감지하는 데 사용됩니다. 데이터 세트의 가장 왼쪽 지점에서 시작하여 시계 반대 방향 회전으로 볼록 껍질의 지점을 유지합니다. 현재 지점에서 현재 지점에서 해당 지점의 방향을 확인하여 다음 지점을 선택할 수 있습니다. 각도가 가장 클 때 점이 선택됩니다. 모든 포인트를 완료한 후 다음 포인트가 시작 포인트가 되면 알고리즘을 중지합니다. Input: Set of points: {(-7,8), (-4,6), (2,6), (6,4), (8,6),
가장 긴 증가 부분 수열은 한 항목이 이전 항목보다 큰 부분 수열입니다. 여기서 우리는 정수 집합에서 가장 긴 증가 부분 시퀀스 길이를 찾으려고 노력할 것입니다. Input: A set of integers. {0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15} Output: The length of longest increasing subsequence. Here it is 6. The subsequence is 0, 2, 6, 9, 13, 15. 알고리즘 longestSubSeq(하
객체를 함수에 전달하는 네 가지 방법이 있습니다. X 클래스가 있고 fun 함수에 전달하려고 한다고 가정해 보겠습니다. 그런 다음 값으로 전달 이렇게 하면 함수 범위에 개체의 얕은 로컬 복사본이 생성됩니다. 여기에서 수정한 사항은 전달된 객체에 반영되지 않습니다. 예를 들어, 선언 void fun(X x); 통화 X x; fun(x); 참조로 전달 이것은 객체에 대한 참조를 함수에 전달합니다. 여기에서 수정한 사항은 전달된 객체에 반영됩니다. 개체의 복사본이 생성되지 않습니다. 예를 들어, 선언 void fun(X &x)
argc는 인수 개수를 나타내고 argv는 인수 값을 나타냅니다. 메인 함수가 실행을 시작할 때 전달되는 변수입니다. 프로그램을 실행할 때 다음과 같이 해당 프로그램에 인수를 제공할 수 있습니다. $ ./a.out hello 여기 hello는 실행 파일에 대한 인수입니다. 이것은 프로그램에서 액세스할 수 있습니다. 예시 코드 #include<iostream> using namespace std; int main(int argc, char** argv) { cout << "Thi
static_cast - 노멀/보통 타입 변환에 사용합니다. 이것은 또한 암시적 형식 강제 변환을 담당하는 캐스트이며 명시적으로 호출할 수도 있습니다. float를 int로, char를 int로 변환하는 경우 등의 경우에 사용해야 합니다. 다이내믹_캐스트 - 이 캐스트는 다형성을 처리하는 데 사용됩니다. 파생 클래스로 캐스팅할 때만 사용해야 합니다. 이것은 기본 클래스에서 파생 클래스로 형변환할 때 상속에서만 사용됩니다. 일반 캐스트 − const_cast, static_cast 및 reinterpret_cast를 결합한 C++
기본적으로 struct는 구조를 정의하는 데 사용됩니다. 그러나 그것을 사용하려면 C에서 struct 키워드를 사용해야 합니다. typedef 키워드를 사용하고 새 이름을 사용하면 struct 키워드를 작성하지 않고도 해당 이름으로 struct를 사용할 수 있습니다. C++에서는 struct와 typedef struct 사이에 차이가 없습니다. 왜냐하면 C++에서는 이름이 다른 선언에 의해 숨겨지지 않는 한 모든 struct/union/enum/class 선언이 암시적으로 typedef된 것처럼 작동하기 때문입니다. 같은 이름으로
데이터 은닉은 프로그램의 기능이 클래스 유형의 내부 표현에 직접 액세스하는 것을 방지하는 객체 지향 프로그래밍의 중요한 기능 중 하나입니다. 클래스 멤버에 대한 액세스 제한은 레이블이 지정된 액세스 수정자(클래스 본문 내의 public, private 및 protected 섹션)에 의해 지정됩니다. 멤버 및 클래스에 대한 기본 액세스는 비공개입니다. 예시 코드 class Base { public: // public members go here protected: // protect
++의 접미사와 접두사 버전 사이에는 큰 차이가 있습니다. 접두사 버전(즉, ++i)에서 i의 값은 증가하고 표현식의 값은 i의 새 값입니다. 따라서 기본적으로 먼저 증분한 다음 표현식에 값을 할당합니다. 후위 버전(i.e., i++)에서는 i의 값이 증가하지만 표현식의 값은 i의 원래 값입니다. 따라서 기본적으로 먼저 표현식에 값을 할당한 다음 변수를 증가시킵니다. 더 나은 이해를 위해 몇 가지 코드를 살펴보겠습니다. 예시 코드 #include<iostream> using namespace std
이분 그래프는 그래프의 채색이 두 가지 색상, 즉, 세트의 꼭짓점은 같은 색으로 지정됩니다. 이 프로그램에서는 이분 그래프를 입력으로 사용하고 정점을 채색한 후 각 정점의 색상을 출력합니다. 알고리즘 Begin BFS algorithm is used to traverse all the vertices. Take a vertex and colour it yellow. Colour all its neighbour vertices as blue. Colour the next level vertices as yello
무방향 그래프 G의 선 그래프는 G의 가장자리 사이의 인접성을 나타내는 또 다른 그래프 L(G)입니다. 이 프로그램에서 우리는 입력 그래프의 선 그래프에 가장자리 색칠을 수행합니다. 알고리즘 Begin Take the input of the number of vertices ‘n’ and number of edges ‘e’. Take the input of ‘n’ vertex pairs for the ‘e&rsq
방향성 비순환 그래프(DAG)는 방향이 있고 다른 간선을 연결하는 순환이 없는 그래프입니다. 이 그래프의 모서리는 한 방향으로 이동합니다. 그래프가 DAG인지 확인하는 C++ 프로그램입니다. 알고리즘 Begin Function checkDAG(int n): intialize count = 0 intialize size = n - 1 for i = 0 to n-1 if (count == size) &nb