본문 바로가기

알고리즘 문제풀이/개념정리27

[개념정리] priority_queue priority_queue란 자료구조에서 우선순위큐는 먼저들어간데이터에 상관없이 우선순위가 높은 데이터가 먼저 반환되는 구조이다. C++ STL에서 priority_queue를 이용하여 쉽게 구현해낼 수 있다. vector container 기반으로 내부구조가 설정되어있다. ​ priority_queue사용 #include 선언 priority_queue변수명; priority_queuepq; 기본 사용 pq.push(element) // 우선순위큐에 원소 추가 pq.pop() //우선순위큐에서 top의 원소를 삭제 pq.top() //top에 있는 원소를 반환 pq.empty() //비어있으면 true 아니면 false 반환 pq.size() //우선순위큐에 포함되어있는 원소들의 수를 반환 기본적으로 .. 2020. 12. 26.
[개념정리] deque container deque container란 deque는 vector container의 단점을 보완하기 위해서 만들어진 container이다. vector와 마찬가지로 list구조. vector는 새로운 원소가 추가될 때 메모리 재할당 후 이전원소를 복사하는 방식으로쓰여 삽입,제거 시 성능이 저하되었다. 이에 deque는 여러개의 메모리 블록을 할당하고 하나의 블록처럼 여기는 기능을 제공한다. - deque는 메모리가 부족할때마다 일정한 크기의 새로운 메모리블록을 할당함으로써 이전 원소를 복사X ​ deque 사용 #include 선언 deque변수명 dequedq; 사용 dq.front() //첫번째 원소를 참조 dq.back() //맨 마지막 원소를 참조 dq.clear() //모든 원소를 제거 dq.assign.. 2020. 12. 26.
[개념정리] map container map container란 key와 value가 쌍으로 저장되는 노드기반 이진트리구조 container이다. 이에 반해 vector는 key없이 value만 list형태로 저장된다. key는 고유한 값이므로 중복이 불가능하다. 삽입이 되면서 자동으로 정렬된다. (defalut : 오름차순) ​ map 사용 #include 선언 map m; //map을 key,value의 자료형으로 선언해준다. map m; 사용 m[key] = val //로 원소를 추가 또는 수정할 수 있다. m.begin() //맨 첫번째 원소를 가리키는 반복자를 리턴한다. m.end() //맨 마지막 원소를 가리키는 원소의 끝부분을 알때 사용한다. 반복자를 리턴한다. m.insert(make_pair(key,value)) //원소를 .. 2020. 12. 26.
[개념정리] memset함수 메모리를 조작하는 함수로는 대표적으로 memset, memcpy, memmove, memcmp 등이 있다. 그 중 메모리를 초기화하는 memset을 알아본다. memset함수란 메모리의 내용을 원하는 크기만큼 특정 값으로 세팅할 수 있는 함수이다. memory + setting 알고리즘 문제에서는 여러 번의 케이스를 수행해야 할 경우에 배열 등을 초기화 하는데에 이용한다. #include or #include 함수 원형 void* memset(void *ptr, int value, size_t num); - ptr은 시작주소 - value는 메모리에 세팅하고자 하는 값 - num은 길이 //길이xsizeof(타입) 으로 사용하곤한다. 함수 사용 #define NUM 10 int visit[NUM] = {.. 2020. 12. 26.
[개념정리] queue queue란 자료구조의 한가지로 FIFO구조로 데이터를 저장하는 방식 ​ queue의 사용 #include 선언 queue변수; queueq1; 사용 q1.push(element) //큐에 원소를 추가한다. (뒤에 추가하는것) q1.pop() //큐에 있는 원소를 삭제한다 (넣은지 가장 오래된 원소를 삭제하는것) q1.front() //큐 제일 앞에 있는 원소를 반환한다 q1.back() //큐 제일 뒤에 있는 원소를 반환한다. q1.empty() //큐의 사이즈를 반환한다. ​ pair / struct / tuple 과 같이 사용하는 방법은 아래의 링크에 같이 설명되어있다. dbstndi6316.tistory.com/30 [개념정리] deque container deque container란 deque.. 2020. 12. 26.
[개념정리] stack stack이란 LIFO(Last In First Out) 형식의 자료구조이다. ​ stack사용 #include 가장 최근에 스택에 추가한 항목이 가장 먼저 제거될 항목이다 ​ 선언 stack변수; stack s1; 사용 s1.push(element) // stack의 top에 element를 추가 s1.pop() //top에 있는 원소를 삭제 s1.top() //스택의 top에 있는 원소를 반환 s1.empty() //스택이 비어있으면 true 아니면 false를 반환 s1.size() //스택의 사이즈를 반환한다. 2020. 12. 26.
[개념정리] vector container vector 란 C++ STL vector는 list계열의 container 종류이다. 자료구조의 스택과 구조가 비슷하다. vector를 생성하면 메모리 heap에 생성되며 동적할당 된다. ​ vector 사용 선언 및 초기화 vector 변수명 vector 변수명(숫자) // 숫자만큼 벡터생성 후 0으로 초기화 vector 변수명 = {변수1, 변수2..} //벡터생성 후 오른쪽 변수값으로 초기화 vector q[] = {{변수1, 변수2}, {변수3, 변수4}) //2차원벡터 선언 및 초기화 vector변수명 //2차원 벡터 생성 Iterators 우선 vectorv; 로 선언한다. v.begin() //벡터 시작점의 주소값 반환 v.end() //벡터 끝부분+1 주소값 반환 v.[i] //벡터의 i.. 2020. 12. 26.
[개념정리] tuple tuple 이란 std::tuple로 std::pair를 확장한 자료형이다. 객체의 제한이 없이 묶을 수 있다. ​ tuple의 사용 #include 선언 queue q1; vector v; 만들기 q1.push({1,2,3}); v.push_back({1,2,3}); // or q1.make_tuple(1,2,3); 값추출 1. tie : tuple의 복수의 타입 인자값을 추출할 수 있다. int a,b,c; //(담을 변수들을 선언) tie(a,b,c)=q1; //로 추출가능 또는 여러 벡터로 구성되어있다면 vector v; tie(a,b,c)=v[i]; 로 원하는 위치의 tuple을 추출할 수 있을것이다. ​ 2. get : 몇 번재 타입을 얻고싶은지 선택하여 추출할 수 있다. cout 2020. 12. 26.
반응형