CPP/c++실전사용법 11

배열 활용 함수(C++)(알고리즘)

위 글은 큰돌의 터전 님의 강의자료를 참조해서 정리하고 제가 알고리즘을 풀면서 더 추가적으로 사용할 만한 내용들을 정리한 글입니다. 알고리즘 풀이 강의로 큰돌의 터전님의 강의 강력 추천드립니다. 강의링크 rotate() 시계 방향과 반시계 방향으로 회전하는 로직을 짤 때 쓰는 함수. #include using namespace std; vector v; int main(){ for (int i=1; i

priority queue(우선순위 큐)(C++)(알고리즘)

위 글은 큰돌의 터전 님의 강의자료를 참조해서 정리하고 제가 알고리즘을 풀면서 더 추가적으로 사용할 만한 내용들을 정리한 글입니다. 알고리즘 풀이 강의로 큰돌의 터전님의 강의 강력 추천드립니다. 강의링크 우선순위 큐란 무엇인가? 우선순위 큐(priority queue)는 각 요소에 어떠한 우선순위가 추가로 부여되어있는 컨테이너를 말합니다. 우선순위 큐에서 우선순위가 높은 요소는 우선순위가 낮은 요소보다 먼저 제공됩니다. 일부 구현에서 두 요소의 우선 순위가 같으면 대기열에 포함된 순서에 따라 제공됩니다. 다른 구현에서 동일한 우선 순위를 가진 요소의 순서는 정의되지 않은 상태로 유지됩니다. 힙은 완전이진트리로 최소힙 또는 최대힙이 있으며 삽입, 삭제, 탐색, 수정에 대해 O(logN)의 시간복잡도를 갖습..

queue와 dqueue(C++)(알고리즘)

위 글은 큰돌의 터전 님의 강의자료를 참조해서 정리하고 제가 알고리즘을 풀면서 더 추가적으로 사용할 만한 내용들을 정리한 글입니다. 알고리즘 풀이 강의로 큰돌의 터전님의 강의 강력 추천드립니다. 강의링크 queue란 무엇인가 큐(queue)는 먼저 집어넣은 데이터가 먼저 나오는 성질인 선입선출(FIFO, First In First Out)을 지닌 자료 구조이며, 나중에 집어넣은 데이터가 먼저 나오는 스택과는 반대되는 개념을 가졌습니다. 삽입 및 삭제에 O(1), 탐색에 O(n)이 걸립니다. 예시코드 #include using namespace std; queue q; int main() { for(int i = 1; i

Stack(C++)(알고리즘)

위 글은 큰돌의 터전 님의 강의자료를 참조해서 정리하고 제가 알고리즘을 풀면서 더 추가적으로 사용할 만한 내용들을 정리한 글입니다. 알고리즘 풀이 강의로 큰돌의 터전님의 강의 강력 추천드립니다. 강의링크 stack이란 스택은 가장 마지막으로 들어간 데이터가 가장 첫 번째로 나오는 성질인 후입선출(LIFO, Last In First Out)을 가진 자료 구조입니다. 재귀적인 함수, 알고리즘에 사용되며 웹 브라우저 방문 기록 등에 쓰입니다. 삽입 및 삭제에 O(1), 탐색에 O(n)이 걸립니다. 탐색에 O(n)이 걸리는 이유는 n번째 요소를 찾는다고 가정하면 계속해서 앞에 있는 요소를 끄집어내는 과정을 n 번 반복해야 찾을 수 있기 때문입니다. 예시 코드 #include using namespace std;..

Map과 unordered_map, Set과 multiset(C++)(알고리즘)

위 글은 큰돌의 터전 님의 강의자료를 참조해서 정리하고 제가 알고리즘을 풀면서 더 추가적으로 사용할 만한 내용들을 정리한 글입니다. 알고리즘 풀이 강의로 큰돌의 터전님의 강의 강력 추천드립니다. 강의링크 map map은 고유한 키를 기반으로 키 - 값(key - value) 쌍으로 이루어져 있는 정렬된(삽입할 때마다 자동 정렬된) 연관 컨테이너입니다. 레드 - 블랙트리로 구현됩니다. 레드 - 블랙 트리로 구현되어있기 때문에 삽입, 삭제, 수정, 탐색이 O(logN)의 시간복잡도를 가집니다. 고유한 키를 갖기 때문에 하나의 키에 중복된 값이 들어갈 수 없으며 자동으로 오름차순 정렬되기 때문에 넣은 순서대로 map을 탐색할 수 있는 것이 아닌 아스키코드순으로 정렬된 값들을 기반으로 탐색하게 됩니다. 또한 대..

알고리즘 자주 사용 함수(C++)(알고리즘)(fill, memset, memcpy,sort, unique, stable_sort)

위 글은 큰돌의 터전 님의 강의자료를 참조해서 정리하고 제가 알고리즘을 풀면서 더 추가적으로 사용할 만한 내용들을 정리한 글입니다. 알고리즘 풀이 강의로 큰돌의 터전님의 강의 강력 추천드립니다. 강의링크 fill()과 memset() fill()과 memset()은 배열을 초기화 할 때 쓰입니다 fill() fill()은 O(n)의 시간복잡도를 가지며 fill(시작값, 끝값, 초기화하는값)로 값을 초기화합니다. 모든 값을 기반으로 초기화가 가능합니다. void fill (ForwardIterator first, ForwardIterator last, const T& val); fill()로 배열의 값을 초기화한다고 했을 때 배열의 모든 값이 아닌 일부값을 초기화하는 경우도 있지만 보통은 전체를 초기화 합..

이터레이터(C++)(알고리즘)

위 글은 큰돌의 터전 님의 강의자료를 참조해서 정리하고 제가 알고리즘을 풀면서 더 추가적으로 사용할 만한 내용들을 정리한 글입니다. 알고리즘 풀이 강의로 큰돌의 터전님의 강의 강력 추천드립니다. 강의링크 이터레이터란 이터레이터는 컨테이너에 저장되어 있는 요소의 주소를 가리키는 개체를 말하며 포인터를 일반화한 것을 말합니다. vector, map 등 각각 다르게 구현된 컨테이너들을 일반화된 이터레이터를 통해 쉽게 순회할 수 있습니다. 바로는 주소값을 반환하지는 못하며 &*를 통해 한단계 더 거쳐서 가리키는 해당 요소의 주소값을 반환할 수 있습니다. #include using namespace std; vector v; int main(){ for(int i = 1; i

pair와 tuple(C++)(알고리즘) (find,find_if, 람다식 캡쳐절)

위 글은 큰돌의 터전 님의 강의자료를 참조해서 정리하고 제가 알고리즘을 풀면서 더 추가적으로 사용할 만한 내용들을 정리한 글입니다. 알고리즘 풀이 강의로 큰돌의 터전님의 강의 강력 추천드립니다. 강의링크 pair와 tuple pair와 tuple은 타입이나 자료구조는 아닙니다. C++에서 제공하는 utility 라이브러리 헤더의 템플릿 클래스이며 자주 사용되기 때문에 알아보겠습니다. pair는 first와 second 라는 멤버변수를 가지는 클래스입니다. 두가지 값을 담아야 할 때 씁니다. tuple은 세가지 이상의 값을 담을 때 씁니다. 여기서 tie는 pair이나 tuple로부터 값을 끄집어낼 때 사용되는 함수입니다. #include using namespace std; pair pi; tuple t..

728x90