전체 글(112)
-
[JS] 힙/우선 순위 큐 새로 짜봤습니다.
Javascript에서 힙이 필요하면 매번 구현을 해줘야하는 정말.. 험난한 여정이 있는데요. 저번에 제가 대략적으로 공유한 코드가 모든 상황에서 쓰이기 힘들더라구요. 특히 pop에서 최상단 노드부터 왼쪽 노드, 오른쪽 노드를 비교해줘야하는데, 이 과정에서 undefined와 관련해서 많은 오류가 있는 걸 확인했습니다. 새로 짠 코드를 공유해드릴게요. Heap.js class MinHeap { constructor() { this.heap = [null]; } push(val) { this.heap.push(val); let currentIndex = this.heap.length - 1; let parentIndex = Math.floor(currentIndex / 2); while (parentInd..
2022.08.30 -
[JS] 금과 은 운반하기 - 파라메트릭 서치 접근법 심화
이 문제는 뭔가 이진 탐색을 써야할 것 같은 느낌이 딱 오는데.. 뭔가 어떻게 최댓값을 설정해야할 지 감이 안옵니다. 어떻게 이렇게 이해했는지 천천히 설명해보겠습니다 문제 요약 어느 왕국에 하나 이상의 도시들이 있습니다. 왕국의 왕은 새 도시를 짓기로 결정하였습니다. 해당 도시를 짓기 위해서는 도시를 짓는 장소에 금 a kg과 은 b kg이 전달되어야 합니다. 각 도시에는 번호가 매겨져 있는데, i번 도시에는 금 g[i] kg, 은 s[i] kg, 그리고 트럭 한 대가 있습니다. i번 도시의 트럭은 오직 새 도시를 짓는 건설 장소와 i번 도시만을 왕복할 수 있으며, 편도로 이동하는 데 t[i] 시간이 걸리고, 최대 w[i] kg 광물을 운반할 수 있습니다. (광물은 금과 은입니다. 즉, 금과 은을 동시에..
2022.08.29 -
solidity 적응기 - 3. 이젠 진짜 민팅해볼 시간!
드디어 이 시리즈의 끝인 실제로 민팅 함수를 구현해 볼 시간이 왔네요. 일단 먼저 메타마스크 설정을 만져줘야합니다. 당연한 이야기지만, 우리 메인넷으로 가스비 내면 너무 아깝잖아요..ㅠㅠ 컨트랙트 한 번 바꾸면 4, 5만원 씩 그냥 나갑니다. 1. 메타 마스크 테스트넷 설정 메타 마스크의 [설정 탭] - [고급] - [테스트 네트워크 보기]를 켜기를 꼭 눌러주세요. 그렇게 되면 메인 넷이 아니라 다양한 테스트 네트워크를 사용해 볼 수 있습니다. https://rinkebyfaucet.com/ 이 사이트에서 하루에 0.1 이더 씩 테스트 이더를 받아 볼 수 있습니다. 가운데 있는 input 창에 메타마스크 지갑 주소를 입력하시면 받을 수 있습니다. 이 사이트는 ip 기준으로 하루에 한 번 이더를 받아 볼 ..
2022.08.28 -
[JS] 불량 사용자: 정규 표현식을 내 맘대로 써보자!
정규 표현식을 물어보는 문제가 가끔씩 있더라구요.매번 검색해서 어떻게 어떻게 해내긴 했는데 한 번 다뤄보는게 좋을 것 같습니다. 이 문제가 딱 그렇게 다루기 좋아보여서 가져와봤습니다. 정규 표현식 Javascript에선 주로 string 형식의 문자열에서 원하는 값이 있는지 찾기 위해서 사용합니다. 일반적으로 웹에서 이메일 형식의 input을 받는다던가, password에 특정 규칙을 만족하는지 등에서 쓰입니다. 다만, 코딩테스트에서 다루는 정규 표현식의 성격은 약간 다를 수 있을 것 같습니다. 보통 이런 식으로 묻는 경우가 많습니다. 어떤 특정 자리에 이 문자가 들어가는지? 이 자리에 모든 문자가 올 수 있을 때 만족하는 문자는? 이스케이프 문자를 다 외우는 건 약간 비효율적인 것 같습니다. 검색하면 ..
2022.08.27 -
solidity 적응기 - 2. ipfs에 대해서(개념 아님 실습위주임!)🥫
안녕하세요 Russel입니다. 저번 포스트에서 ERC-721 프로토콜이 나온 배경과 어떤 인터페이스 규악이 있는지 간단히 설명드렸었죠! NFT asset의 원본 파일을 어딘가에 저장을 해놔야하는데 그 어디가 바로 ipfs입니다. [프로그래밍 반] solidity 입문기 - 1. smart contract, NFT 민팅, 그리고 ERC-721 프로토콜의 삼각 관계👪 1. 왜 NFT를 발행할 때 smart contract가 필요할까? solidity 적응기 1. 어렵지 않아요 헤치지 않아요.(기초 구조) 대망의 solidity를 처음으로 해봤습니다. 자료형을 쭉 읊어봤자 의미 없는 것 같고 일단 구 dev-russel.tistory.com 언제나처럼 약간은 말랑말랑하게 약간의 비약을 넣어서 이해를 도와드릴까..
2022.08.26 -
[JS] 보석 쇼핑: 효율성을 어거지로 통과하는 방법
어제 했던 등산 코스 문제를 보고나니 이문제.. 정말 선녀네요. 길게 말할 것도 없습니다. 그냥 가볼까요? 문제 요약 어피치는 너무 부자라서 보석을 사러가면 진열대의 특정 구간의 모든 보석을 싹쓸이합니다. 이 때 진열된 모든 종류의 보석을 적어도 1개 이상 포함하는 가장 짧은 구간을 찾아서 구매합니다. 가장 짧은 구간을 찾아 return해주세요. 예를 들어 아래 진열대는 4종류의 보석(RUBY, DIA, EMERALD, SAPPHIRE) 8개가 진열된 예시입니다. 진열대 번호 1 2 3 4 5 6 7 8 보석 이름 DIA RUBY RUBY DIA DIA EMERALD SAPPHIRE DIA 진열대의 3번부터 7번까지 5개의 보석을 구매하면 모든 종류의 보석을 적어도 하나 이상씩 포함하게 됩니다. 테스트케..
2022.08.25