알고리즘 관련 함수 2 + 코테 Tip
·
알고리즘(코딩테스트)
1. 최대값 & 최소값 탐색주어진 컨테이너(주로 벡터나 string)에서 최대 혹은 최소를 구해주는 함수algorithm 헤더 include 필요min_element와 max_element 모두 리턴값은 해당 위치를 가리키는 iterator이다.string에서도 사용할 수 있다!숫자가 문자보다 우선순위가 빠르고, 대문자가 소문자보다 우선순위가 빠르다. (숫자 -> 대문자 -> 소문자)#include #include #include using namespace std;int main(){ vector vec = { 5,4,1,2,10 }; vector::iterator min_it = min_element(vec.begin(), vec.end()); cout ::iterator max_it = max_el..
1, 2 주차 알고리즘 정리
·
알고리즘(코딩테스트)
1. STL 기본 구조STL이란C++ 내장 템플릿 기반 라이브러리컨테이너, iterator, 알고리즘으로 구성되어 있다.주요 컨테이너vector동적 배열로 구현된 컨테이너원소 삽입/삭제를 마지막 원소에 할때는 O(1)랜덤 접근이 O(1)중간 삽입/삭제는 비효율적list이중 링크드 리스트 구조의 컨테이너중간 삽입/삭제가 효율적deque양뱡향으로 동적으로 동작하는 컨테이너반복자컨테이너를 순환하면서 정리하거나 가져다주는 역할종류iteratorreverse_iteratorconst_iteratorinserter알고리즘정렬 관련 : sort, partial_sort, stable_sort, nth_element ...탐색 관련 : find, binary_search, lower_bound, upper_bound ..
알고리즘 관련 함수 1
·
알고리즘(코딩테스트)
1. partial_sum연속된 구간의 합을 구해주는 함수numeric 헤더를 include 해주어야 사용 가능하다.[] 연산자를 통해 특정 구간까지의 합을 구할 수 있다.#include #include #include using namespace std;int main(){ vector vec = { 1,2,3,4,5 }; vector vec_sum(vec.size()); partial_sum(vec.begin(), vec.end(), vec_sum.begin()); for (const int& v : vec_sum) { cout   2. unique중복된 원소를 제거한 후 끝 위치를 반환하는 함수unique 결과값이 중복을 제거하고 정렬된 맨 값들을 제외하고 맨 처음 원소를 가리킨다.아래 예시의 경..
C++ 간단한 string 함수들
·
알고리즘(코딩테스트)
1. find찾으려고 하는 문자 혹은 문자열의 시작 위치 index를 size_t 타입으로 리턴찾는 문자가 없는 경우 string::npos 값을 리턴 (18446744073709551615 가 출력된다)find에 두번째 매개변수를 넣으면, 해당 위치부터 시작해서 find 함수를 수행할 수도 있다.#include #include using namespace std;int main(){ string str = "Hello,World\n"; //특정 문자의 위치 찾기 size_t pos1 = str.find(','); size_t pos2 = str.find("ZZ"); size_t pos3 = str.find("H", 1); cout   2. replace파라메터첫번째 : 시작..
우선순위 큐, 순열, k값 찾기
·
알고리즘(코딩테스트)
1. 우선순위 큐1 - 1. 기본 개념우선순위를 가지고 정렬 되어 있는 큐내부적으로 Heap 자료구조를 사용한다.삽입 삭제는 "항상" O(logN), 우선순위 높은 원소 검색은 O(1) 1 - 2. 사용하기기본적으로 가장 큰 원소가 먼저 나오는 최대 힙으로 구현 되어 있다.최소힙을 위해서는 아래와 같이 구현하면 된다.첫번째 인자는 자료형두번째 인자는 구현체세번째 인자는 비교연산자(비교 함수)priority_queue, greater> minPQ;새롭게 만든 타입을 사용하는 경우의 예시#include #include #include using namespace std;class Student{public: string name; int age;};struct cmp{ bool operator()(Stude..
map & set
·
알고리즘(코딩테스트)
1. map1-1. map 기본 개념key와 value 쌍으로 이루어져 있으며, key를 통해 value값에 O(1)에 접근할 수 있는 자료구조검색, 삽입, 삭제가 평균적으로 O(logN)의 복잡도를 가진다.내부 구현은 레드-블랙 트리로 되어있다.1-2. 레드 블랙 트리레드 블랙 트리는 이진 탐색 트리의 일종인데, 치우치는 값이 들어온 경우(편향된 경우) 를 방지하기 위해 트리의 높이를 logN으로 유지해주는 개선된 이진 탐색 트리이다. 편향된 트리의 경우 탐색 시간이 길어져, O(logN) 복잡도가 불가능해진다.왜냐하면, 이진 탐색 트리가 기본적으로 선택한 노드를 기반으로 왼쪽은 작은 값 오른쪽은 큰 값으로 이루어져 있어서 값을 반씩 쪼개면서 찾기 때문에 빠른 탐색 O(logN) 을 할 수 있는데편향된..
unordered_map 순환
·
알고리즘(코딩테스트)
코딩테스트를 풀다가 unordered_map을 key로 순환하는 방법을 생각하다가 새로운 방식을 알게 되어서 정리하게 되었다. 1. range-based for 사용for (const pair& pair : um){ cout  2. iterator 사용for (unordered_map::iterator it = um.begin(); it != um.end(); ++it){ cout first second  3. C++17 이후 range-based for새롭게 알게된 방식(visual studio에서는 C++언어 표준을 C++17 로 해야 사용할 수 있었다.)//c++17for (auto& [key, value] : um){ cout
허프만 코딩 & 유클리드 호제법
·
알고리즘(코딩테스트)
코딩테스트 문제를 풀다가 해당 알고리즘들이 떠올라서, 정리해보기로 하였다.1. 허프만 코딩허프만 코딩이란데이터 압축 알고리즘 중 하나인데, 문자의 등장 빈도를 기준으로 인코딩 하는 기술이다.간단히 과정을 설명하자면, 우선순위 큐를 이용하여 문자를 빈도에 따라 정렬하고최소 빈도의 두 노드를 합쳐 새로운 노드를 구성하는 방식을 반복하게 된다.가장 이해하기 쉬운 그림을 가져오면, 아래와 유사하다아래 그림에서 각 숫자는 빈도수를 뜻한다.빈도수대로 정렬한 후, 최소 빈도의 수를 더하는 과정을 반복하는 모습을 볼 수 있다.간단한 예시 문제를 풀어보자 (백준 1715 https://www.acmicpc.net/problem/1715)이 문제의 알고리즘 분류가 우선순위큐와 그리디 알고리즘이다. 즉 허프만 코딩이 우선순..
string 관련 함수들 (tolower, isalpha, transform)
·
알고리즘(코딩테스트)
문제 풀다가 접하게 된 string 처리 관련 함수를 정리해 보았다.참고한 자료는https://modoocode.com/275 C++ 레퍼런스 - transform 함수모두의 코드 C++ 레퍼런스 - transform 함수 작성일 : 2019-04-19 이 글은 21195 번 읽혔습니다. std::transform 은 범위 내 (first 부터 last 전 까지) 원소들 각각에 대해 인자로 전달한 함수를 실행 한 후, 그 결modoocode.comhttps://en.cppreference.com/w/ cppreference.comNull-terminated strings:    byte  −   multibyte  −   wideen.cppreference.com그리고 chat gpt이다. 1. tolo..
substr
·
알고리즘(코딩테스트)
수업을 듣던 도중 substr 함수를 접하게 되어서, 이번 기회에 잘 기억해 보고자 다시 정리를 해보았다.아래의 자료를 참고해서 정리해 보았다.https://en.cppreference.com/w/cpp/string/basic_string/substr::substr - cppreference.com" data-og-description="(1) basic_string substr( size_type pos = 0, size_type count = npos ) const; (until C++23) (constexpr since C++20) constexpr basic_string     substr( size_type pos = 0, size_type count = npos ) const&; (since ..