개발

    [BlockChain] 스마트 컨트랙트 배포

    1. controll/client.js, controll/compile.js 작성 (1) client.js // npm i web3 const Web3 = require("web3"); let instance; class Client { constructor(_url) { // instance의 내용이 있으면 내용이 이미 있는 instance 반환 if (instance) return instance; // instance 내용이 없으면 동적 할당으로 생성한 Client 클래스 객체에 web3 생성 this.web3 = new Web3(_url); // 생성후에 instance 변수에 Client 클래스 객체 할당 instance = this; } } module.exports = { Client }; ..

    [BlockChain] solidity 컴파일

    1. solc solc 설치 npm i solc 컴파일 명령어 // npx solc --bin --abi (파일경로) npx solc --bin --abi test.sol 작성한 test.sol 파일 /* 솔리디티 버전 */ pragma solidity ^0.8.15; // HelloWorld 컨트랙트 contract HelloWorld { string text; constructor(){ text = "Hellooooo World~~~~~"; } function getText() public view returns(string memory){ return text; } function setText(string memory value) public{ text = value; } } 2. abi,bin ..

    [자료구조] 이진힙 - BinaryHeap

    1. 이진힙이란? 힙이란 모양은 트리와 같다. 트리와는 다르게 힙은 부모와 자식간의 규칙이 있다는 것이다. 최대 이진힙에서는 부모노드가 항상 자식노드보다 큰 값을 가진다. 왼쪽이나 오른쪽 상관없이 한 레벨 아래에 있는 자식 노드보다 항상 부모 노드가 크다. 형제들 사이에는 특별한 규칙이 없다. 최소 이진힙에서는 그 반대이다. 부모 노드가 언제나 양쪽의 자식보다 작다. 이진힙은 언제나 가장 적은 공간을 차지한다. 2. 최대 이진힙 구현 (1) 클래스 class MaxBinaryHeap { constructor() { this.values = []; } } (2) insert insert(element) { this.values.push(element); this.bubbleUp(); } (3) bubble..

    [자료구조] 너비 우선 탐색(BFS), 깊이 우선 탐색(DFS)

    1. 너비 우선 탐색(Breadth-first-Search)[BFS] 너비우선 탐색은 트리를 가로질러서 순회한다. 예시) 루트 -> 루트의 자식들 -> 루트의 자식들의 자식들 아래로 내려가기전에 같은 레벨에 있는 모든 노드들을 거쳐가는것이고 큐를 이용한다. 2. 깊이 우선 탐색(Depth-first-Search)[DFS] 형제 노드로 넘어가기전에 수직으로 트리의 끝까지 내려간다. (1) 전위 탐색 : 왼쪽을 모두 순회한 다음 오른쪽 순회 (2) 후위 탐색 : 루트가 가장 마지막에 순회한다 -> 거꾸로 순회한다. (3) 중위 탐색 : 먼저 왼쪽 전체를 순회하고 노드를 방문하고 그다음 오른쪽 순회 3. 너비우선과 깊이우선 사용 시간 복잡도는 둘다 같지만 트리에 따라 공간복잡도가 다르다. 완전히 펼쳐져서 넓게..

    [자료구조] 이진트리

    1. 트리 연결리스트는 선형으로 한가지를 선택한다. 반면에 트리는 비선형으로 여러가지 선택을 할수 있다. 트리는 무조건 자식 노드만 가리켜야 하고 부모나 형제를 가리킬수 없다는 규칙이 있다. 2. 이진트리 트리중 이진 트리는 부모가 가질수 있는 최대 자식노드는 2개이다. 따라서 노드는 2개 이하의 자식노드를 가질 수 있다. 또한 이진트리는 자기보다 작은수는 왼쪽, 큰수는 오른쪽에 배치한다는 특징을 가지고 있다. 3. 트리 용어 root : 꼭대기 노드 child : 자식 노드 parent : 부모 노드 siblings : 부모가 같은 자식들 leaf : 자식이 없는 노드 edge : 노드에서 다른 노드로 향하는 화살표 4. 이진트리 클래스 (1) 클래스 및 노드 class Node { constructo..

    [자료구조] 스택-큐

    1. 스택과 큐 스택 : 후입선출 - 나중에 들어온것이 먼저 나간다. 큐 : 선입선출 - 먼저 들어온것이 먼저 나간다. 배열을 이용하여 구현한다면 스택은 배열의 기본 메소드 push와 pop을 이용하면 시간 복잡도 O(1)로 처리할 수 있지만 큐는 push, shift 또는 unshift, pop 을 이용하기 때문에 시간복잡도 O(n)이다. 자료구조를 직접 만들어 사용한다면 큐의 시간복잡도를 O(1)로 낮출수 있다. 2. 스택 (1) 클래스 및 노드 class Node { constructor(val) { this.val = val; this.next = null; } } class Stack { constructor() { this.first = null; this.last = null; this.si..