#include using namespace std; class queue{ private: int size; int start; int end; int* arr; public: bool isempty(); bool isfull(); void push(int num); void pop(); void printque(); int front(){ return arr[start]; } int get(int index){ return arr[index]; } queue(int size){ this->size = size; arr = new int[size]; start = end = 0; } void printarr(){ printf("start %d end %d\n",start+1,end); for(int i..
#include using namespace std; void swap(int* a,int *b){ int temp = *a; *a = *b; *b = temp; } int quick(int* arr,int left,int right){ if(left arr[i]) //피벗보다 왼쪽을 스캔하면서 비정상인놈 걸러냄(피벗보다 큰놈들 = 비정상) i++; while (arr[pivot] < arr[j]) //피벗보다 오른쪽을 스캔하면서 비정상인놈 걸러냄(피벗보다 작은놈들 = 비정상) j--; if (i < j) { swap(&arr[i], &arr[j]); i++;j--; } } swap(&arr[left], &arr[j]); pivot = j; quick(arr, left, pivot - 1); quick(..
public class Node {int data;Node next;public Node(int data) {this.data = data;next = null;}public int getData() {return data;}public void setData(int data) {this.data = data;}public Node getNext() {return next;}public void setNext(Node next) {this.next = next;} } import java.util.Scanner; public class LinkedList {Node head;boolean find(int data){Node current = head;while(current != null){if(curr..
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667package sdfg; public class ArrayQueue { // 큐 배열은 front와 rear 그리고 maxSize를 가진다. private int front; private int rear; private int maxSize; private Object[] queueArray; public static void main(String args[]) { ArrayQueue que = new ArrayQueue(3); que.insert('a'); que.insert(40..
큐(Queue) 개념: 스택과 마찬가지로 삽입, 삭제의 위치와 방법이 제한되어있는 유한 순서 리스트(Finite ordered list)지만,스택과 달리 리스트의 한쪽 끝에서는 삽입 작업이 이루어지고, 반대쪽 끝에서는 삭제 작업이 이루어져서삽입된 순서대로 삭제되는 선입선출(FIFO: First In First Out) 구조 입니다! 흔한 예로 볼수 있는게 놀이동산의 놀이기구 기다리는 줄이 있죠. 즉 스택은 뒤에서 들어오고 뒤에서 빠져나가기 때문에 배열의 용량 관련한 문제가 없다. 하지만 큐는 뒤에서 들어와서 앞으로 빠져나가기 때문에 빠져나갔을때 나머지것들을 앞으로 옮겨야 하며, 옮기지 않을경우앞의 배열 공간은 비면 서 뒤에는 계속 늘어나는 형태이므로 사용할수 있는 공간이 큐를 사용할수록 점점 줄어든다. ..
연결 리스트를 써야하는 상황 -> 몇개의 원소를 갖는지 미리 정하지 못하는 상황 장점 : 쉽고 빠른 추가/삽입/삭제단점 : 원소의 참조(탐색)가 비효율적, 포인터 때문에 4byte추가 공간 필요 스택 선입 후출(먼저 들어가면 나중에 나오는) 구조 1. 배열 기반 스택typedef int ElementType; typedef struct tagNode{ElementType Data;}Node; typedef struct tagArrayStack //배열 기반 스택{int Capacity;int Top;Node* Nodes;}ArrayStack;스택을 배열로 구현 할 경우 구현이 상대적으로 간편하지만, 대신에 크기를 미리 정해야함.연결리스트로 스택을 구현 할 경우 구현은 상대적으로 손이 더 가지만, 크기를 ..
내 생각에 버블,선택,삽입정렬 정도는 아무런 참고 없이 손코딩 할줄 아는게 좋다고 생각하지만, 머지소트부터는 손코딩 하기도 힘들뿐더러 그럴필요도 없다 왜냐하면 어차피 이런것들은 아주 잘짜여진 미리 만들어져있는 코드들이 수많이 존재하기 때문이다. 그렇기 때문에 머지소트의 동작과정과 빅오, 어떤 경우에 사용해야 좋은지, 장단점 등등만 잘 알아놓는게 중요한것 같다. 그래야 상황에 맞는 자료구조를 잘 선택할수 있게 될것이다. 머지소트의 동작과정은 다음과 같다. 이 그림에서 처럼 하나의 배열을 반으로 계속해서 자르면서 마지막에 원소가 1개일떄까지 계속 잘라나간다. 그리고 난뒤, 잘라진 조각들이 합쳐지면서 정렬이 완료되게 되는데, 위의 코드는 분할을 하는 과정을 나타낸것이다. 보면 알겠지만 재귀를 통해서 계속해서 ..
- Total
- Today
- Yesterday
- javascript
- promise
- async
- storybook
- atomic design
- reactdom
- Action
- mobx
- webpack
- type alias
- Babel
- useRef
- Polyfill
- react
- reflow
- computed
- useEffect
- state
- reducer
- await
- return type
- Next.js
- react hooks
- hydrate
- design system
- es6
- server side rendering
- typescript
- props
- rendering scope
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |