[알고리즘] 기수정렬
·
개발/알고리즘
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
[BlockChain] RPC web3 테스트 1. RPC 개념 분산 네트워크를 프로그래밍으로 어떻게 쉽게할지 고민하다가 나온 개념이다. 일반적으로 통신 패턴은 서버를 켜고 클라이언트에서 서버에 요청, 서버에서 반환, 클라이언트는 반환 diary-blockchain.tistory.com 1. 프론트와 메타마스크 연결 (1) 네트워크 추가 메타마스크에서 네트워크 수동추가를 누른후 아래와 같이 입력한다. 현재 ganache를 켜놨기 때문에 사용중이라고 뜨지만 상관없다. 계정 가져오기를 누른후 ganache 에 있는 개인키를 입력하면 test넷에 test용 이더가 들어가 있는걸 확인 할 수 있다. (2) 프론트와 연결 트랜잭션을 보낼때 사용자의 개인키를 사용해서 서명을 만드는 과정을 거친다. 개인키를 이용하면..
[BlockChain] RPC web3 테스트
·
개발/BlockChain
1. RPC 개념 분산 네트워크를 프로그래밍으로 어떻게 쉽게할지 고민하다가 나온 개념이다. 일반적으로 통신 패턴은 서버를 켜고 클라이언트에서 서버에 요청, 서버에서 반환, 클라이언트는 반환 받는 구조로 되어있다. 예) http, socket RPC는 원격 프로시저 호출이라는 뜻으로 별도의 원격제어를 위한 코딩없이 다른 주소공간에서 함수나 프로시저를 실행할수 있게하는 프로세스간 통신 기술이다. 원격 프로시저를 호출하면 위치가 어디있든 동일한 코드를 이용할 수 있다. 참고 페이지 : RPC란? 분산 네트워크 컴퓨터 환경에서 프로그래밍을 쉽게 할 수 있는 방법을 찾다가...Client to Server 패턴Server를 켬Client는 Server에 데이터 혹은 행동을 요청Server는 요청 받은 내용에 대한..