전체 글 (504) 썸네일형 리스트형 [C++ STL] Set, Multiset 1. Set - 저장 데이터의 값이 유일한 자료구조이다.(중복이 허용되지 않는다.) - 노드 기반 컨테이너이다. - 임의 접근이 불가능하다. - 균형 이진 트리로 구현되어있다. - 각 노드는 pair로 구성되었다. - multiset은 set에서 중복이 허용된다는 것 말고는 다른게 없기 때문에 함께 정리한다. 2. Include #include // multiset도 set에 포함되어있음 3. 생성자 std::set name; // 기본 오름차순(== set) std::set name(const key_compare& _Pred); // 정렬 방법을 _Pred로 설정한다. (== set) std::set name(const set& otherSet); std::set name(_Iter first, _I.. [C++ STL] Vector 1. Vector - 원소가 하나의 메모리 블록에 연속하게 저장된다. - 배열은 크기가 고정이고 vector는 크기가 동적으로 변한다. (개수를 미리 알 수 없다면 vector를 사용한다.) - 임의 접근이 가능하다. ( [], at() ) - ArrayList는 배열에 동적 메모리 증가 기능을 구현한 클래스, Vector는 ArrayList에 동기화가 보장되도록 최적화한 클래스이다. - Deque와 비교 Deque Vector 효율성 크기 변경 가능 O (여러 개의 메로리 블록을 하나의 블록처럼 사용 메모리 부족시 새로운 블록 추가 할당) O (할당된 메모리가 부족할 시 이전 메모리 블록 삭제후 새로운 메모리 블록을 재할당) Deque 앞에 삽입, 삭제 용이 O X Deque 뒤에 삽입, 삭제 용이 O.. [C++ STL] Deque 1. Deque - FIFO, LIFO가 모두 가능한 자료형이다. - 임의 접근이 가능하다. - Vector와 의 비교 Deque Vector 효율성 크기 변경 가능 O (여러 개의 메로리 블록을 하나의 블록처럼 사용 메모리 부족시 새로운 블록 추가 할당) O (할당된 메모리가 부족할 시 이전 메모리 블록 삭제후 새로운 메모리 블록을 재할당) Deque 앞에 삽입, 삭제 용이 O X Deque 뒤에 삽입, 삭제 용이 O O Deque 중간 삽입, 삭제 용이 X X Vector 순차 접근 가능 O O = 임의 접근 가능 O O Vector (거의 같음) 2. Include #include 3. 생성자 std::deque name; std::deque name(size_type size); std::dequ.. [C++ STL] List 1. List - Node기반 컨테이너이다. - 첫번째 원소와 마지막 원소를 알고 있는 Doubly linked list - 임의접근이 불가능하다. 순차접근만 가능. - 연산자("==", "!=", "", "=") 사용 가능. 2. Include #include 3. 선언 std::list name; std::list name(SizeType listSize); // initialized to default std::list name(SizeType listSize, T& initialize); std::list name(list otherList); namespace std를 사용함. 생성시 초기화 설정 가능. 기존의 list를 복사해서 생성가능. 4. function // list를 초기화하며 할당... [C++ STL] Queue 1. Queue - FIFO 자료형이다. - 가장 먼저 들어간 자료가 가장 먼저 나온다. - 임의접근이 불가능 하다. - 내부는 deque로 이루어져있다. - 임의 접근이 가능한 deque의 기능을 제한하여 임의 접근이 불가능 하게 한 형태 2. Include #include 3. 생성자 std::queue name; std::queue name(const _Container& otherContainer); // queue, deque std::queue name(const _Container& otherContainer); // list, deque, other circular buffer (make your own) /* ex) list li(5,100); queue q(li); */ namespac.. [C++ STL] Stack 1. Stack - LIFO 자료형이다. - 가장 나중에 들어간 자료가 가장 먼저 나온다. - 임의 접근이 불가능하다. - 내부는 deque로 구성되어 있다. 2. Include #include 3. 선언 std::stack name; std::stack name(otherStack); std::stack name(otherDeque); namespace std를 사용함. 이미 만들어져있는 stack이나 deque를 사용하여 생성 가능. 4. function // stack의 제일 위에 새로운 data 삽입 void push(T) // stack의 제일 위에 있는 data를 제거(반환값 없음) void pop() // stack의 제일 위에 있는 원소의 값을 반환한다. reference top() // .. [코딩인터뷰 완전정복] 1.2 순열 확인 Q : 문자열 두 개가 주어졌을 때 이 둘이 서로 순열 관계에 있는지 확인하는 메서드를 작성하라. #include bool CheckIsPermutation(char* str1, char* str2, int len1, int len2); int main() { std::ios_base::sync_with_stdio(false); char string1[100]; char string2[100]; std::cin.getline(string1, 99); std::cin.getline(string2, 99); printf("%d\n", CheckIsPermutation(string1, string2, strlen(string1), strlen(string2))); } bool CheckIsPermutation.. [코딩인터뷰 완전정복] 1.1 중복이 없는가 문자열이 주어졌을 때, 이 문자열에 같은 문자가 중복되어 등장하는지 확인하는 알고리즘을 작성하라. 해법1 - 문자열의 처음부터 한 문자씩 순회하며 자료구조(스텍, 큐 등)에 입력된 문자열을 저장한뒤 새로운 문자를 확인 할 때마다 자료구조를 순회하며 중복되는 문자가 있는지 확인한다. public bool IsDuplicate(char[] str){ var inputStack = new Stack(); foreach(var ch : str){ foreach(var stackChar : inputStack){ if(ch==stackChar) return true; } inputStack.add(ch); } return false; } 해법2 - 입력문자의 갯수만큼의 크기를 가진 char 배열을 생성한다. 하나.. 이전 1 ··· 60 61 62 63 다음 63/63