본문 바로가기

분류 전체보기

(894)
[알고리즘] ch 6 우선순위 큐와 힙 6.1 우선순위 큐 우선순위 큐(Priority Queue) - 우선순위 속성을 갖는 데이터의 삽입(Enqueue)과 제거(Dequeue)연산을 지원하는 ADT - 큐는 먼저 들어온 요소가 무조건 먼저 나오게 하지만, 우선순위 큐는 새로운 요소에 우선순위를 부여해서 큐에 삽입하고 가장 높은 우선순위를 가진 요소부터 빠져나오게 함 6.1.1 우선순위 큐의 삽입/제거 연산 - 우선순위 큐의 각 요소는 '우선순위'를 가짐 1) 노드 삽입 연산 ex) 우선순위가 20인 요소 삽입 - 우선순위 큐의 첫 요소부터 순차적으로 우선순위를 비교 - 20은 2와 17보다 크고 22보다 작으므로 17과 22사이에 삽입 2) 노드 제거 연산 - 전단만 제거해서 반환 6.2 힙 힙(Heap) - 힙 순서 속성(Heap Orde..
[알고리즘] ch 5. 탐색(3) - 레드 블랙 트리 5.5 레드 블랙 트리 레드 블랙 트리 (Red Black Tree) - 레드 블랙 트리에서 노드의 색은 트리 전체의 균형을 유지할 수 있게 함 레드 블랙 트리의 노드 구조체 typedef int ElementType; typedef struct tagRBTNode { struct tagRBTNode* Parent; struct tagRBTNode* Left; struct tagRBTNode* Right; //노드의 색을 나타내는 Color 필드로, RED 아니면 BLACK 값을 저장 가능 enum { RED, BLACK }Color; ElementType Data; }RBTNode; 6.5.1 레드 블랙 트리의 구현 규칙 1) 모든 노드는 빨간색이거나 검은색이다 2) 뿌리 노드는 검은색이다 3) 잎 노..
[코드잇] 초간단 웹서버 만들기 1. 서버와 클라이언트 - 서비스에 관한 요청을 보내는 프로그램 또는 컴퓨터를 클라이언트라고 함 - 클라이언트는 원하는 서비스를 제공해 주는 서버에 요청을 보냄 - 요청을 받은 서버는 그에 알맞은 응답을 해줌 - 클라이언트는 서버로부터 받은 응답을 바탕으로 사용자에게 적절한 화면을 보여줌 서버-클라이언트 구조 2. 웹 서버 만들기 시작 - http는 클라이언트인 웹 브라우저가 서버와 통신을 할 때 지켜야 할 프로토콜 - http 코어 모듈을 쓰면 http 프로토콜로 클라이언트와 통신하는 서버를 만들 수 있음 const http = require('http'); let server = http.createServer(); server.listen(3000); - server에서 외부의 요청을 기다리며 실행..
[코드잇] Node.js 기본 개념 1. 모듈이란? 모듈(module) - 전체를 이루는 부품 하나하나 - JavaScript 파일 하나 - 다른 모듈에 있는 함수를 사용하려면 그 모듈을 가져와야 함 = 모듈을 로드(load) - require는 모듈을 로드해서 객체 하나를 리턴 - require 함수가 리턴하는 객체를 가져다 쓸 수 있도록 변수에 대입 2. 모듈 내부의 함수 공개하기 - 모듈 내부의 것들을 외부로 공개해줘야 다른 모듈에서도 그것을 사용할 수 있음 math-tools.js function add(a,b) { return a+b; } exports.add = add; main.js let m = require('./math-tools.js'); console.log(m.add(1,2)); 3. 모듈 더 알아보기 1) 모듈의 ..
[java] 문제 풀이 1. class Ref { int a; Ref(int x) { a=x; } int sum (Ref obj) { int k; k = obj.a -a; a = 10; obj.a =20; return k; } } class passRef { public static void main(String[] args) { Ref obj1 = new Ref(3); Ref obj2 = new Ref(4); int k1 = obj2.sum(obj1); System.out.print("k1=" +k1); System.out.print("obj1.a=" + obj1.a); System.out.print("obj2.a=" + obj2.a); } } 답 : k1 = -1, obj1.a = 20, obj2.a =10 풀이 : Ref..
자료구조 homework 6 반복적 노드 추가 1. 삽입할 노드 생성 2. 두 개의 포인터 초기화 curr은 root를 가리키고 prev는 null을 가리킴 3. curr!= NULL동안 다음 수행 3.1 이전을 curr로 업데이트하여 탐색을 유지 3.2 curr->data > key 인 경우 curr를 curr->left로 설정하고 오른쪽 하위 트리 삭제 3.3 curr->data right로 설정하고 왼쪽 사위 트리 삭제 4. prev == NULL이면 트리가 비어있음을 의미. root 노드 만들기 5. 그렇지 않으면 prev->data > key이면 prev의 왼쪽에 toinsert를 삽입 prev->left = toinsert 6. 그렇지 않으면 prev->data < key인 경우 ..
[c언어] 문제 풀이 1. #include void main() { int a = (10,20); printf("%d", a); int b = (10,20,30); printf("%d", b); int c = (10,(20,30),40); printf("%d", c); } 답 : 20,30,40 풀이 : 콤마 연산자는 맨 오른쪽의 값을 참조하게 됨 2. #include void main() { int a = 16; printf("%d", a); printf("%o", a); printf("%x", a); int b = 17; printf("\n%d", b); printf("%o", b); printf("%x", b); } 답 : 16, 20, 10 17,21,11 풀이 : 16진수를 2진수로 바꾸면 10000 8진수로 출력하..
[코드잇] 리액트로 웹 사이트 만들기 - 리액트에서는 웹사이트도 컴포넌트로 만들 수 있음 - 리액트 라우터(React Router) 사용 1. 리액트 라우터 v6 소개 리액트 라우터 - 리액트 컴포넌트로 페이지를 나누고 이동하게 해주는 라이브러리 - 페이지 나누기 - 페이지 이동 - 핵심 컴포넌트 -> 라우터(Router), 라우츠(Routes), 라우트(Route), 링크 (link) 라우터 (Rounter) - 리액트 라우터에서 사용하는 데이터들을 모두 갖고 있음 - 현재 주소, 페이지 기록같은 데이터를 가지고 있음 - Router 컴포넌트도 내부적으로는 context provider임 라우츠(Routes), 라우트(Route) - Routes 컴포넌트 안에서 Route 컴포넌트로 페이지의 경로랑 보여줄 컴포넌트를 지정 링크(link) ..