-
덱알고리즘 스터디 01/강의 정리 2022. 11. 21. 14:18
stl vector에서 제공해주는 기능을 stl deque에서도 대부분 제공 +push_front 앞쪽에서의 추가 제거가 필요하지 않으면 굳이 deque 쓸 필요 없음 배열로 구현하는 덱 #include using namespace std; const int MX = 1000005; int dat[2 * MX + 1]; int head = MX, tail = MX; // 앞으로도 뒤로도 확장 가능해야 하기 때문에 인덱스의 초기값을 중간으로 세팅함 // head 는 맨 앞의 원소를 가리키고 tail은 맨 뒤의 원소 하나 뒤를 가리킴 void push_front(int x) { // 아니 암만 정신 없을 때 풀었어도 그렇지 이게 뭐니 // dat[head--]; dat[--head] = x; } void p..
-
큐알고리즘 스터디 01/강의 정리 2022. 11. 21. 14:18
원소를 담을 배열이랑 HEAD , TAIL head = index / tail = end 큐를 배열로 구현하면 앞쪽에 자꾸 빈 자리가 생김 이를 해결하기 위해 head나 tail이 배열의 끝이면 다시 배열의 처음으로 돌아오도록 하면 됨 = > 원형 큐 코테에서는 어차피 oush 최대 횟수가 정해져 있어서 배열을 엄청 크게 만들어서 원형큐를 사용하지 않을 수 있음 배열로 구현한 큐 #include using namespace std; const int MX = 1000005; int dat[MX]; int head = 0, tail = 0; void push(int x) { dat[tail] = x; tail++; } void pop() { // 이거 아님 tail--; head++; } int front..
-
스택알고리즘 스터디 01/강의 정리 2022. 11. 21. 14:18
restricted structure - 스택 큐 덱 등 특정 위치에서만 원소를 넣거나 뺄 수 있음 원소 추가 제거가 모두 O(1) 제일 상단이 아닌 나머지 원소들의 확인/변경이 원칙적으로 불가능 배열로 구현하는 경우 int data[] & int index 만 있으면 됨 #include using namespace std; const int MX = 1000005; int dat[MX]; int pos = 0; void push(int x) { dat[pos++] = x; } void pop() { pos--; } int top() { return dat[pos-1]; } void test() { push(5); push(4); push(3); cout