분류 전체보기

    [자료구조] 양방향 연결리스트

    1. 양방향 연결리스트 [자료구조] 단방향 연결리스트 1. 자료구조 자료구조는 스택, 큐, 이진트리, 이진힙, 해시테이블 등 다양한 자료의 구조를 말한다. 자료구조가 많은 이유는 데이터에 따라 특정한 자료구조가 효율적이기 때문이다. 따라서 일부 diary-blockchain.tistory.com 단방향 연결리스트의 노드들에 next 뿐만 아니라 앞의 노드도 표시해주는 prev도 포함한다. 양방향이기 때문에 더 많은 메모리가 사용된다. 하지만 그만큼 제거, 삽입 할때 이전과 다음 노드를 알고 있으니 단방향 연결리스트보다 빠르게 처리 할 수 있다. 2. 양방향 연결리스트 클래스 (1) 클래스 및 노드 class Node { constructor(val) { this.val = val; this.next = ..

    [자료구조] 단방향 연결리스트

    1. 자료구조 자료구조는 스택, 큐, 이진트리, 이진힙, 해시테이블 등 다양한 자료의 구조를 말한다. 자료구조가 많은 이유는 데이터에 따라 특정한 자료구조가 효율적이기 때문이다. 따라서 일부 자료구조는 매우 특화되어있는 반면 배열 객체와 같이 자주 사용되고 있는 일부 자료구조들은 매우 일반적이다. 2. 연결리스트 연결리스트란 데이터 요소들을 가리키는 인덱스 없이 그냥 다수의 데이터 요소들로 구성된다. 마치 객체들이 연속으로 연결되어 있는 기차와 같다고 보면 된다. 여기서 각각의 요소들을 노드라고 부른다. 따라서 연결리스트들은 다수의 노드들로 구성되고 각각의 노드는 문자열 혹은 숫자와 같은 하나의 데이터 요소들을 저장한다. 각 노드들은 다음 노드를 가리키는 정보 역시 저장하고 있어야 하며 다음 노드가 없을..

    [알고리즘] 기수정렬

    1. 기수정렬 방법 기존 정렬과는 다르게 숫자의 크기를 비교하지 않는다. 하지만 정렬할때 사용할 실제 데이터는 숫자여야 한다. 비교하는 대신 숫자크기에 대한 정보를 자릿수로 인코딩한다는 사실을 이용한다. 이 말의 의미는 자릿수가 더 큰수가 더 크다는 것이다. 2. 헬퍼 메소드 자릿수 알아내기, 수와 위치를 가져온 다음 그 위치의 숫자를 반환한다. function getDigit(num, i) { return Math.floor(Math.abs(num) / Math.pow(10, i)) % 10; } function digitCount(num) { if (num === 0) return 1; return Math.floor(Math.log10(Math.abs(num))) + 1; } function mos..

    [알고리즘] 퀵정렬

    1. 퀵정렬 데이터를 분할하여 배열에 0개 또는 1개의 항목이 남을때까지 분할하여 개별적으로 정렬되는 방식 피벗포인트라 부르는 단일 요소를 선택하여 수행한다. 그러니 어떤 배열에서 어떤 요소를 선택하든 사실상 문제가 되지 않는다. 2. 퀵정렬 순서 선택한 숫자보다 작은숫자를 왼쪽으로 옮긴다 선택한 숫자보다 큰숫자를 오른쪽으로 옮긴다. 이 때 선택한 숫자는 올바른 위치이다. 이 과정을 왼쪽과 오른쪽에 반복한다. 예시) [5,2,1,8,4,7,6,3] 5선택 3,2,1,4 5 7,6,8 왼쪽 다루기 1,2,3,4 5 7,6,8 오른쪽 다루기 1,2,3,4,5,6,7,8 3. 구현 (1) pivot 함수 function pivot(arr, start = 0, end = arr.length - 1) { cons..

    [알고리즘] 합병정렬

    1. 합병정렬 기존 버블, 선택, 삽입정렬은 O(N^2)의 시간복잡도를 가진다. 합병정렬을 통해 o(NlogN)으로 향상시킬 수 있다. 합병 정렬은 분해와 합병 2가지 순서로 나눌수 있다. 예시 ) [8,3,5,4,7,6,1,2] 반으로 분할하여 시작 [8,3,5,4] [7,6,1,2] 다시 나눔 [8,3] [5,4] [7,6] [1,2] 다시 나눔 [8] [3] [5] [4] [7] [6] [1] [2] 정렬하면서 합친다. [3,8] [4,5] [6,7] [1,2] [3,4,5,8] [1,2,6,7] [1,2,3,4,5,6,7,8] 2. 합병정렬 순서 (1) 빈배열 만들기, 입력 두개를 취하는 함수를 정의하여 마지막에 반환할 빈 뱅열 만들기 (2) i와 j가 각각 배열끝에 도달하지 않았다면 첫번째 배열..

    [BlockChain] React 메타마스크 연결하기

    [BlockChain] RPC web3 테스트 1. RPC 개념 분산 네트워크를 프로그래밍으로 어떻게 쉽게할지 고민하다가 나온 개념이다. 일반적으로 통신 패턴은 서버를 켜고 클라이언트에서 서버에 요청, 서버에서 반환, 클라이언트는 반환 diary-blockchain.tistory.com 1. 프론트와 메타마스크 연결 (1) 네트워크 추가 메타마스크에서 네트워크 수동추가를 누른후 아래와 같이 입력한다. 현재 ganache를 켜놨기 때문에 사용중이라고 뜨지만 상관없다. 계정 가져오기를 누른후 ganache 에 있는 개인키를 입력하면 test넷에 test용 이더가 들어가 있는걸 확인 할 수 있다. (2) 프론트와 연결 트랜잭션을 보낼때 사용자의 개인키를 사용해서 서명을 만드는 과정을 거친다. 개인키를 이용하면..