* Cpp STL max_element, min_element의 사용법과distance method를 사용해 벡터 내부의 최대/최소 원소의 인덱스를 구하는 방법에 대해 소개합니다.#max_element / min element usage max_element(vector_name.begin(), vector_name.end())min_element(vector_name.begin(), vector_name.end()) Header에 선언되어 있다. 벡터 내부의 최대/최소 원소의 첫 번째 위치를 "이터레이터" 형태로 반환한다. 반환타입이 "값"이 아닌 "이터레이터" 이기에 * 연산자를 사용해 값에 접근해야 한다. #include #include #include using namespace std;int ..
#1 About Union-Find유니온 파인드는 여러 개의 노드가 주어졌을 때 특정한 노드들이 같은 그룹에 속해있는지 판별하고 여러 개의 그룹 노드를 하나로 합치는 작업을 수행할 때 사용되는 알고리즘이다.이름에서 유추 가능하듯 노드를 한 그룹으로 합치는 "유니온(Union)"연산과 노드가 특정 그룹 내에 존재하는지 판별하는 "파인드(Find)"연산으로 이루어진다. Union-Find 알고리즘을 직접 구현해 보자.우선 크기가 5인 배열을 모두 -1로 초기화해준다. 각 배열의 원소값은 해당 인덱스의 부모 노드를 가리킨다. 배열의 원소가 -1이라면 부모 노드가 자기 자신 즉, 루트노드라는 의미이다. union(1, 5)노드1과 노드5를 유니온 연산을 진행한다. 노드5는 노드1의 자식노드가 되며 배열의 5번째..
본 문서는 이차원 배열에서 누적합 알고리즘을 적용하는 방법에 대해 다루고 있습니다. BOJ 23247 Ten 문항을 기반으로 설명합니다. https://www.acmicpc.net/problem/23247 이차원 배열에서 누적합을 구하는 방법1. 행 방향으로 원소들의 누적합을 계산한다. // 2차원 누적합 계산 로직 // [Logic1] row(행) 방향으로 모든 원소의 합을 구한다. for (int y = 1; y 2. 행 방향으로 누적된 누적합 배열을 기반으로열 방향으로 누적합을 계산한다. 그러면 최종적으로 2차원 배열 누적합이 완성된다.apple_sum 누적합의 1행2열(17)에는기존 apple 배열의 0행0열부터 1행2열까지의 합이 담기게 된다. // [Logic2] C..
알고리즘 문제를 풀이하다 보면 가장 큰 값을 초기화해야 한다던지가장 작은 값을 초기화해야 하는 케이스가 빈번하게 발생한다. 그럴 때마다 문제에서 제시해 준 조건으로 나올 수 있는 최대 최소를 계산했는데, climits 내부의 LLONG_MAX, LLONG_MIN을 활용하면 간편하게 계산할 수 있어 정리해 보고자 한다. #include #include using namespace std;int main() { cout LLONG_MAX : 9223372036854775807LLONG_MIN : -9223372036854775808Program ended with exit code: 0 LLONG_MAX의 경우 64bit long long 정수형의 최댓값인 2^63−1 (9223372036854775..
Cpp STL의 2차원 벡터를 생성하는 방법에 대해 정리한 문서입니다.개인적인 공부 내용을 정리하는 용도로 작성한 글이기에 잘못된 내용을 포함하고 있을 수 있습니다. 2차원 벡터를 선언하는 방법은 크게 2가지로 구분됩니다.Case1. 벡터 내부에 벡터를 선언하여 2차원 벡터를 생성하는 방식Case2. 1차원 벡터 배열을 사용해 2차원 벡터처럼 사용하는 방식 1번째 케이스는 Row, Column이 모두 동적인 벡터로 벡터 안에 백터가 들어가 있는 형태입니다. 반면 2번째 케이스는 Row는 정적이지만 Column은 동적인 벡터로 1차원 벡터를 배열 형태로 선언하여실제로는 1차원 벡터이지만 2차원 벡터와 같이 사용 가능합니다. 주로 그래프 관련 알고리즘 문제를 풀이할때 인접리스트를 정의할때 2번 방식을 자주 ..