공부 8

[자료구조] 우선 순위 큐(Priority Queue)

우선 순위 큐 우선 순위를 가진 항목들을 저장하는 큐 FIFO 순서가 아닌 우선 순위에 따라서 순서가 결정된다. ADT 객체 n개의 element 형의 우선 순위를 가진 요소들의 모임 연산 push(data) : 우선 순위 큐에 데이터를 추가한다. (시간 복잡도 : O(log2n)) pop() : 우선 순위 큐에서 가장 우선순위가 높은 요소를 삭제한다. (시간 복잡도 : O(log2n)) empty() : 우선 순위 큐가 비었는지 확인한다. size() : 우선 순위 큐의 크기를 구한다. top() : 우선 순위 큐에서 가장 우선순위가 높은 요소를 반환한다. #include #include typedef int element; using namespace std; class priorityQueue{ p..

공부/자료구조 2023.05.12

[자료구조] 이진트리(Binary Tree)

이진트리 모든 노드가 최대 2개의 서브 트리를 가질 수 있는 트리 높이가 h일 때 최소 h개의 노드, 최대 2^h-1개의 노드를 가짐 노드의 개수가 n개일 때 간선의 개수는 n-1 이진트리 종류 포화 이진트리 : 트리의 모든 레벨에 노드가 모두 차있는 이진트리 완전 이진트리 : 높이가 h일 때 레벨 1부터 h-1까지는 노드가 모두 채워져 있고 마지막 레벨 h에서는 왼쪽부터 오른쪽의 순서로 노드가 채워져 있는 이진트리 연결리스트를 이용한 이진트리 #include using namespace std; typedef int element; typedef struct Node{ element data; Node* left; Node* right; }Node; class BinaryTree{ public: Bin..

공부/자료구조 2023.05.11

[javascript] var, let, const 뭐가 다르지?

ES6에서 변수 선언 키워드로 let과 const가 추가되었다. var로도 변수 선언이 가능했는데 ES6에서는 왜 let과 const를 추가했을까. var의 문제점 1. 중복 선언 가능 var name = 'narme'; console.log(name);//narme var name = 'narmeee' console.log(name);//narmeee 2. 선언 전 참조 가능(Hoisting) console.log(name);//undefined var name = 'narme'; Hoisting? 네이버 영어사전에서 hoisting의 뜻은 "끌어올리기, 들어 올려 나르기"이다. Hoisting은 코드가 실행되기 전에 변수선언과 함수선언이 해당 스코프의 최상단으로 끌어올려진 것 같게끔 만드는 것이다. ..

공부/javascript 2023.05.02

[Node.js] 텔레그램 봇 만들기

준비물 Node.js node-telegram-bot-api telegram account 1. 봇의 아버지에게 귀중한 자식하나만 빌려줍쇼 부탁하기. 검색창에 BotFather 를 검색하면 봇아버지가 등장한다. 우리는 봇을 하나 받으면 된다. /newbot을 입력하면 봇의 이름을 설정하라고 한다. (그 외의 메뉴얼) 이름은 꼭 bot 혹은 Bot으로 끝나야한다! 이제 부여된 API Token을 사용해서 다양한 기능을 이용할 수 있다. 2. Node.js 구성 우선 npm init 으로 프로젝트를 초기화 해준다. 그 다음 node-telegram-bot-api 를 설치해준다. (자세히 나온 곳) npm install node-telegram-bot-api 문서에서 제공해주는 예시 코드가 있다. (/echo..

공부/nodejs 2023.04.30

[자료구조] 덱(Deque)

Double-Ended Queue 큐의 front와 rear에서 모두 삽입 삭제가 가능한 큐 연산 create : 덱을 생성한다 init : 덱을 초기화한다. is_empty(dq) : 덱이 비어있는지 검사한다. is_full(dq) : 덱이 가득찼는지 검사한다. add_front(dq, e) : 덱의 앞에 요소를 추가한다. add_rear(dq, e) : 덱의 뒤에 요소를 추가한다. delete_front(dq) : 덱의 앞에 요소를 반환하고 삭제한다. delete_rear(dq) : 덱의 뒤에 요소를 반환하고삭제한다. get_front(dq) : 덱의 앞에 요소를 반환한다. get_rear(dq) : 덱의 뒤에 요소를 반환한다. 이중연결리스트를 이용한 구현 #include typedef int ele..

공부/자료구조 2023.04.30

[자료구조] 큐(Queue)

선입선출(FIFO : First-In First-Out) 먼저 들어온 데이터가 먼저 나가는 것. 맛집 웨이팅처럼! 연산 create : 큐를 생성한다 init : 큐를 초기화한다. is_empty(q) : 큐가 비어있는지 검사한다. is_full(q) : 큐가 가득찼는지 검사한다. enqueue(q, e) : 큐의 뒤에 요소를 추가한다. dequeue(q) : 큐의 앞에 있는 요소를 반환한 다음 삭제한다. peek(q) : 큐에서 삭제하지 않고 앞에 있는 요소를 반환한다. 배열을 이용한 선형큐 front : 첫번째 요소 하나 앞의 인덱스 rear : 마지막 요소의 인덱스 #include #define MAX_QUEUE_SIZE 3 typedef int element; typedef struct { ele..

공부/자료구조 2023.04.30

[c++] ios::sync_with_stdio, cin.tie, cout.tie

백준을 풀다가 시간제한이 발생했는데 해결 방법을 찾다가 아래 코드를 넣어주니까 해결됐었다. tie? sync? 가 뭐길래!! ios::sync_with_stdio(false) cin.tie(nullptr) cout.tie(nullptr) sync_with_stdio(bool) C와 C++ 표준 stream의 동기화 여부를 설정한다. stream이란 프로그램과 입출력을 하는 단말기 사이에 연결된 통로이다. 일반적으로 C와 C++의 stream은 동기화되어 있다. 한 코드 안에서 C와 C++ 스타일을 혼용하더라도 정상적으로 입출력이 가능한 이유이다. 동기화를 해제한다면 C와 C++은 각각 독립적인 버퍼를 가지게 된다. 동기화를 한하기 때문에 연산이 줄어들게 된다. 이게 바로 ios::sync_with_std..

공부/c++ 2023.04.27

[자료구조] 스택(Stack)

후입선출(LIFO : Last-In First-Out) 가장 최근에 들어온 데이터가 가장 먼저 나가는 것. 각티슈에서 가장 위에 있는 것부터 뽑아 쓰는 것처럼! 입력과 출력이 역순으로 필요한 경우 사용한다. (ex. undo, 함수 호출 스택) 연산 init(stack) : 스택을 초기화한다. create() : 스택을 생성한다. push(stack, data) : 데이터를 스택 가장 위에 삽입한다. pop(stack) : 스택 가장 위의 데이터를 삭제한다. is_empty(stack) : 스택이 비어있는지 검사한다. is_full(stack) : 스택이 가득 찼는지 검사한다. peek(stack) : 스택의 맨 위에 있는 요소를 삭제하지 않고 반환한다. 배열을 이용한 스택 #include #define..

공부/자료구조 2023.04.26