LeetCode Challenge w/ JavaScript - 로컬에서 릿코드 테스트 환경 설정하기

Wonkook Lee·2022년 5월 19일
0

LeetCode w/JavaScript

목록 보기
1/1
post-thumbnail

LeetCode Challenge w/ JavaScript - Setup


LeetCode

국내에서 알고리즘 같은 코딩테스트 문제풀이 사이트로 프로그래머스, 백준이 유명한 것 처럼, 해외에선 LeetCode가 가장 잘 알려져있습니다. FAANG 같은 손에 꼽는 해외 유명 IT 기업의 SW 엔지니어가 되기 위한 테크니컬 인터뷰도 여기서 준비할 만큼 높은 기출 확률로 유명합니다.

실제 업무와 동떨어졌다는 불만이 종종 들리지만, 프로그래밍적 사고와 능력을 검증할 수 있는 보편적인 방법입니다. 저는 긴장을 놓지 않고 늘 대비해야겠다고 생각해서 짬이 날 때마다 종종 문제를 풀려고 노력합니다. 문제가 잘 풀린 날은 기분이 참 좋습니다.

테크니컬 인터뷰나 알고리즘 문제 플랫폼에 대한 좋은글이 많으니 아래 링크를 참조하세요.


Setup Test Environment

저는 JS로 문제를 풀것이기 떄문에 NodeJS와 Jest로 테스트 환경을 셋업합니다.

OSX를 사용하며 자바스크립트로 문제를 푸시는 분만 참조하세요.

NodeJS 설치

NodeJS는 공식 사이트에 들어가 자신의 환경에 맞춰서 다운 받으시면 됩니다. https://nodejs.org/en/

벌써 LTS 버전이 16이 되었네요. 저는 그냥 v14.18.1을 사용하고 있습니다. 여러 노드 버전을 관리하고 싶으시면 nvm을 사용하세요.

HomeBrew를 사용하시는 분은 아래 명령어로 node를 설치합니다.

$ brew install node

완료되면 버전을 확인하여 제대로 설치되었는지 확인합니다.

$ node -v
$ npm -v

Jest 글로벌 설치

sudo 명령을 사용해서 전역에 jest를 설치합니다.

$ sudo npm install -g jest

버전 확인

$ jest --version

디렉토리 설정 및 npm init

적당한 디렉토리에 폴더를 만들어 npm init으로 새로운 프로젝트를 만듭니다. -y 옵션을 붙이길 권장합니다.

$ npm init -y

새로 생성된 package.json에 다음 코드를 넣어줍니다.

"jest": {
  "testEnvironment": "node"
},

테스트 단위별 폴더 내 index.js와 test.js 생성

문제 풀이 코드가 작성될 index.js와 이를 검증하는 테스트 코드가 작성된 test.js를 생성합니다.

index.js

function isPalindrome(s) {
  // 여기서 문제 풀이
}

module.exports = isPalindrome;

test.js

const isPalindrome = require("./index"); // require 문법으로 모듈 가져오고

test("'A man, a plan, a canal: Panama' returns true", () => {
  expect(isPalindrome("A man, a plan, a canal: Panama")).toEqual(true);
}); // 테스트 코드 작성

jest command로 테스트 시험해보기

루트 디렉토리에서 terminal에 다음과 같이 입력합니다.

jest DIRECTORY_PATH/test.js --watch

—watch 명령을 사용하면 번거롭게 다시 테스트 실행 커맨드를 입력하지 않고 코드 수정 후 저장만 하면 자동으로 테스트가 수행됩니다.

거꾸로해도 똑같은 단어를 “Palindrome”이라고 합니다. (e.g. 동교동)

Palindrome 문제를 풀면 결과가 어떻게 나오는지 확인해보겠습니다.

문제에 보통 예시(IO)가 나와있고, IDE 모듈 아래에 Testcase라는 탭에서 케이스를 확이날 수 있으니, jest로 테스트코드를 짜면서, 콘솔도 찍어가면서 풀면 되겠군요.

자, 이제 시작합시다.



🙏🏻

Wonkook Lee
Frontend Developer
LinkedIn

profile
© 가치 지향 프론트엔드 개발자

1개의 댓글

comment-user-thumbnail
2022년 6월 17일

감사히 잘 읽었습니다 😘
'탭에서 케이스를 ▶︎확이날◀︎ 수 있으니' 오타발견! 😇

답글 달기