분류 전체보기

    [자료구조] 그래프

    1. 그래프란? 그래프란 노드와 연결이 있는 집합체를 말한다. 트리, 연결리스트 등 대부분의 자료구조는 그래프로 이루어져있다고 해도 무방하다. vertex(정점) : 노드를 가리킨다 edge(간선) : 노드들을 연결하는 선 그래프는 SNS, 지도기능, 라우팅 알고리즘 등 많은곳에서 쓰인다. 어디에서나 사용하고 있다고 봐도 될만큼 쓰임새가 다양하다. 2. 그래프 종류 (1) 무방향 그래프 정점끼리의 간선에 방향이 없는것을 말한다. 방향이 없다는건 양쪽으로 연결되어 있다는 것이다. (2) 방향 그래프 간선에 방향이 부여되어 있다. 간선은 양쪽을 가리킬수도 있고 한 방향만 가리킬수도 있다. (3) 비가중 그래프 각 간선에 부여된 값이 없다. (4) 가중그래프 각 간선에 값이 부여되어 있으며 이를 활용하여 여러..

    [자료구조] 해시테이블

    1. 해시테이블이란 js의 객체와 같다고 생각하면된다. 해시테이블은 객체와 마찬가지로 키-값 쌍을 저장하는데 사용한다. 배열과는 다르게 해시테이블은 순서를 가지지 않는다. 값을 찾거나, 새로운 값을 찾거나, 값을 제거하는데 매우 빠르다. 모든 언어들은 해시테이블의 구조를 가지고 있다. 2. 해시함수 조건 (1) 속도 무언가를 찾아내거나 바꾸거나 제거하기 위해 접근할때마다 해시 함수를 실행시켜야 하기 때문에 해시함수는 빨라야 한다. (2) 일관성 일관된 방식으로 분배를 해서 다른 값들과 겹치지 않게 해야 한다. (3) 결정론적 특정 입력값을 입력할때마다 같은 출력값이 나와야 한다. 3. 해시함수 구현 function hash(key, arrayLen) { let total = 0; let WEIRD_PRI..

    [자료구조] 우선순위큐

    [자료구조] 이진힙 - BinaryHeap 1. 이진힙이란? 힙이란 모양은 트리와 같다. 트리와는 다르게 힙은 부모와 자식간의 규칙이 있다는 것이다. 최대 이진힙에서는 부모노드가 항상 자식노드보다 큰 값을 가진다. 왼쪽이나 오른쪽 diary-blockchain.tistory.com 1. 우선순위큐 리스트 또는 구조 즉 우리가 데이터를 저장한곳에서 한번에 하나씩 요소를 가지고 온다. 한번에 하나씩 처리를 한 다음에 그 다음것을 처리하게 되는데 병원에 있는 응급실과 비슷하다. 많은 사람들이 대기하고 있고 모두에게는 어느정도의 우선순위가 부여된다. 그러면 간호사나 의사가 와서 한번에 한사람을 그 우선순위에 따라 데려가는것이다. 서로 다른 우선순위를 가지는 데이터나 정보를 관리할 필요가 있거나 무언가를 입력하는..

    [BlockChain] NFT 만들기 (goerliETH)

    1. 초기설정 코드는 Remix툴을 이용하여 작성한다. NFT는 ERC721토큰으로 ERC20과 마찬가지로 표준 규격이 정해져 있다. 오픈제플린 설치 후 표준 규격을 가져다 쓸것이다. ERC721 구조 {"토큰아이디" : "주소"} 토큰에 고유값이 있고 그 토큰의 주인이 누구인지 나타내는 객체형식이다. 이 토큰은 대체불가토큰으로 NFT이다. 오픈제플린 설치 npm install openzeppelin-solidity 2. goerli 테스트넷 이더 받기 https://goerlifaucet.com 홈페이지에서 로그인후 메타마스크 주소를 입력하면 테스트이더를 받을수 있다. 3. Pinata Pinata Effortless IPFS File Management app.pinata.cloud Pinata 홈페..

    [BlockChain] localhost에서 remix 연동

    1. Remix remix는 스마트컨트랙트 작성, 배포, 테스트 등을 편하게 할수 있게끔 만들어 놓은 툴이다. Remix - Ethereum IDE remix.ethereum.org 컨트랙트의 함수, 상태변수등을 별다른 코드 없이 바로 테스트 할수 있다는 장점이 있다. 2. vscode와 remix 연동 remix라이브러리 설치 npm install -g @remix-project/remixd contracts 폴더 이동해서 remixd -s . --remix-ide https://remix.ethereum.org 실행 시킨 후 remix홈페이지에 들어가서 localhost와 연결을 시키면 연동할수 있다.

    [BlockChain] ERC20 Token - openzeppelin 사용

    1. openzeppelin 오픈제플린은 토큰의 표준 인터페이스를 모아놓은 라이브러리다. 이 라이브러리를 통해 토큰을 편하게 만들수 있다. npm install openzeppelin-solidity 오픈제플린을 설치하면 node_modules/openzeppelin-solidity/contracts/token 폴더 안에 표준 컨트랙트들이 있다. 2. 초기 설정 트러플 초기설정 npx truffle init truffle-config.js module.exports = { networks: { development: { host: "127.0.0.1", port: 8545, network_id: 7722, }, }, compilers: { solc: { version: "0.8.17", }, }, }; ..