본문 바로가기

JavaScript

(3)
Next.js 사용하기 Nextjs를 사용하면 서버사이드 랜더링을 쉽게 해준다고 알려져있어서 이번 토이프로젝트에 적용하기 위해서 공식 문서를 찾아보면서 정리한 것들을 적어보려고 한다. 1. 프로젝트 만들기 및 실행 npx create-next-app nextjs-app cd nextjs-app npm run dev npm run dev로 서버를 실행할 수 있으며, localhost:3000에 접속하여 구동되는 서버를 확인할 수 있다. 2. 기본 기능 Pages pages 디렉토리 하위에 있는 react component들이 page이다. 각 page는 file name으로 라우팅되어서, pages/about.js 로 파일을 생성하면 /about 이라는 경로로 접근이 가능하다. Dynaimic Routes pages/posts/..
JavaScript Priority Queue 구현 JavaScript에는 Priority Queue가 없다. 참으로 슬프다. Priority Queue는 코딩테스트에서 자주 쓰이는 자료 구조이므로 직접 구현해보기로 했다. Priority Queue는 Heap이라는 자료구조를 바탕으로 구현이된다. 그래서 Heap의 구현과 Priority Queue를 따로 클래스를 만들어서 분리를 하는 것이 맞지만, 알고리즘 문제풀이를 위해서만 사용하므로 간단하게 둘을 합쳐서 구현하였다. Heap은 Binary트리의 일종으로 2가지 특징이 있다. 1. Root 노드는 가장 작거나 큰 노드가 오도록 저장이 되는 것이다. 이는 Comparator 구현에 따라서 다르며 원하는 값을 Root노드에 위치 시킬 수 있다. 2. 두번째는 Complete Binary Tree라는 것이다..
JavaScript Queue 구현 JavaScript로 Queue를 사용하기 위해 찾아다녔는데, Array의 Shift를 이용해 Array를 Queue처럼 사용할 수 있다는 사실을 알았다. Push와 Shift로 쉽게 큐를 만들어서 쓸 수도 있었지만, 시간복잡도가 내가 생각하는 Queue와 동일한지 살짝 의심이 되었다. 일반적으로 Queue는 Push와 Pop을 할 때 시간복잡도가 O(1)이 걸리게 된다. 보통 Linked List로 구현하기에 당연한 결과이다. 하지만, JavaScript로 push와 shift 연산이 동일하게 시간이 걸리는지 비교해보니 shift가 더 오래걸리는 것으로 확인이 되었다. 뭔가 수상하다...? let start = new Date(); let maxNum = 100000; let arr = []; for ..