[자료구조] 이진힙 - BinaryHeap
·
개발/자료구조
1. 이진힙이란? 힙이란 모양은 트리와 같다. 트리와는 다르게 힙은 부모와 자식간의 규칙이 있다는 것이다. 최대 이진힙에서는 부모노드가 항상 자식노드보다 큰 값을 가진다. 왼쪽이나 오른쪽 상관없이 한 레벨 아래에 있는 자식 노드보다 항상 부모 노드가 크다. 형제들 사이에는 특별한 규칙이 없다. 최소 이진힙에서는 그 반대이다. 부모 노드가 언제나 양쪽의 자식보다 작다. 이진힙은 언제나 가장 적은 공간을 차지한다. 2. 최대 이진힙 구현 (1) 클래스 class MaxBinaryHeap { constructor() { this.values = []; } } (2) insert insert(element) { this.values.push(element); this.bubbleUp(); } (3) bubble..
[ethFruitShop] how to return mapping
·
개인프로젝트/ethFruitShop
solidity에서 함수를 통해 mapping 자체를 return 하고 싶었다. 결과적으론 mapping을 return할수 없었다. 내가 얻고 싶은건 객체였으나 mapping을 return할수 없었기 때문에 mapping과 비슷하게 return 할수 있는 방법을 찾아봤다. 그래서 key값과 value값을 따로 뽑아 프론트에서 객체를 만들어주는 방법을 선택했다. const hasFruit = await deployed.methods .hasFruit() .call({ from: account }); const fruitWallet = await deployed.methods .getFruitWallet() .call({ from: account }); let temp = {}; for (let i = 0;..
[Solidity Errror] uncaught (in promise) Error: Please pass numbers as strings or BN objects to avoid precision errors
·
개인프로젝트/ethFruitShop
uncaught (in promise) Error: Please pass numbers as strings or BN objects to avoid precision errors 라는 에러가 난 코드는 프론트(리액트)에서 아래와 같다. const buy = async () => { await deployed.methods.buyFruit(name, count).send({ from: account, to: CA, value: web3.utils.toWei(count * price, "ether"), }); }; 이유를 구글링 해보니 web3.utils.toWei 함수의 첫번째 매개변수의 타입이 string 타입이였다. 그래서 코드를 아래와 같이 type을 추가해줬다. const buy = async ()..
[Solidity Error] Member "push" is not available in string[] memory outside of storage
·
개인프로젝트/ethFruitShop
function getFruitList() public returns(string[] memory){ string[] memory temp; for(uint i=0; i
[자료구조] 너비 우선 탐색(BFS), 깊이 우선 탐색(DFS)
·
개발/자료구조
1. 너비 우선 탐색(Breadth-first-Search)[BFS] 너비우선 탐색은 트리를 가로질러서 순회한다. 예시) 루트 -> 루트의 자식들 -> 루트의 자식들의 자식들 아래로 내려가기전에 같은 레벨에 있는 모든 노드들을 거쳐가는것이고 큐를 이용한다. 2. 깊이 우선 탐색(Depth-first-Search)[DFS] 형제 노드로 넘어가기전에 수직으로 트리의 끝까지 내려간다. (1) 전위 탐색 : 왼쪽을 모두 순회한 다음 오른쪽 순회 (2) 후위 탐색 : 루트가 가장 마지막에 순회한다 -> 거꾸로 순회한다. (3) 중위 탐색 : 먼저 왼쪽 전체를 순회하고 노드를 방문하고 그다음 오른쪽 순회 3. 너비우선과 깊이우선 사용 시간 복잡도는 둘다 같지만 트리에 따라 공간복잡도가 다르다. 완전히 펼쳐져서 넓게..