diff --git a/.github/workflows/update-README.yml b/.github/workflows/update-README.yml new file mode 100644 index 0000000..71f8e28 --- /dev/null +++ b/.github/workflows/update-README.yml @@ -0,0 +1,37 @@ +# This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node +# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions + +name: update README.md + +on: + push: + branches: + - main + - cruelladevil-readme-test + pull_request: + branches: + - main + - cruelladevil-readme-test +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - name: Use Node.js 16.14.0 + uses: actions/setup-node@v3 + with: + node-version: 16.14.0 + cache: 'npm' + - name: install package + run: npm install + - name: build README.md + run: npm run build + - name: update README.md + run: | + git add . + git config user.name github-actions + git config user.email github-actions@github.com + git commit -m "Automatic Update README.md" + git push diff --git a/.gitignore b/.gitignore index 61ba7c9..9ef0fc6 100644 --- a/.gitignore +++ b/.gitignore @@ -147,6 +147,4 @@ fabric.properties # End of https://www.toptal.com/developers/gitignore/api/macos,webstorm /references/ -/package.json -/package-lock.json /node_modules/ diff --git a/README.md b/README.md index 47a1246..79d684d 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,35 @@ # 프로그래머스 모든 문제 풀이 - [![방문자수](https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https://github.com/codeisneverodd/programmers-coding-test&count_bg=%2379C83D&title_bg=%23555555&icon=&icon_color=%23E7E7E7&title=방문자수(Today/Total)&edge_flat=true)](https://github.com/codeisneverodd) 🌱 프로그래머스의 [코딩테스트 문제](https://programmers.co.kr/learn/challenges?tab=all_challenges)의 문제 풀이를 찾으실 수 있습니다. -🌱 모든 문제는 JavaScript로 풀이되며, 원하는 풀이는 아래에서 검색을 통해 찾으실 수 있습니다 +🌱 모든 문제는 JavaScript로 풀이되며, 원하는 풀이는 **아래에서 검색 🔎**을 통해 찾으실 수 있습니다 [![thumbnail-coding-test-no-id](https://user-images.githubusercontent.com/54318460/158711288-5fbd903f-d3b6-4d56-bd1f-9e5946d67d0a.png) ](https://github.com/codeisneverodd/programmers-coding-test/) +## 🌟 Contributors + +### 🧪 기능 구현 + +| Main Contributors | Contribute Lists | About Me | +| ----------------------------------------------- | --------------------------- | -------- | +| [cruelladevil](https://github.com/cruelladevil) | - README 자동 업데이트 구현 | 🚧 | + + + +### 🔥 문제 풀이 + +| Main Contributors | Commits | About Me | +| --------------------------------------------------- | ------- | -------- | +| [codeisneverodd](https://github.com/codeisneverodd) | 🚧 | 🚧 | +| [chaerin-dev](https://github.com/chaerin-dev) | 🚧 | 🚧 | +| [jaewon1676](https://github.com/jaewon1676) | 🚧 | 🚧 | +| [prove-ability](https://github.com/prove-ability) | 🚧 | 🚧 | +| [yongchanson](https://github.com/yongchanson) | 🚧 | 🚧 | + +| Contributors | Commits | +| ------------------------------------------- | ------- | +| [createhb21](https://github.com/createhb21) | 🚧 | ## 😁 **도움이 되셨다면** 오른쪽 상단 ↗ 의 ⭐️ **Star를 클릭**해 이 프로젝트를 응원해주세요! @@ -19,90 +41,157 @@ - 풀이 문제 수: 55문제 - 풀이 완료 시점: 2022년 1월 -| | 문제 출처 | 풀이 | -| ---- | ------------------------------------------------------------ | ------------------------------------------------------------ | -| 1 | [2016년](https://programmers.co.kr/learn/courses/30/lessons/12901) | [2016년.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/2016년.js) | -| 2 | [3진법 뒤집기](https://programmers.co.kr/learn/courses/30/lessons/68935) | [3진법-뒤집기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/3진법-뒤집기.js) | -| 3 | [K번째수](https://programmers.co.kr/learn/courses/30/lessons/42748) | [K번째수.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/K번째수.js) | -| 4 | [[1차] 다트 게임](https://programmers.co.kr/learn/courses/30/lessons/17682) | [[1차]-다트-게임.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/[1차]-다트-게임.js) | -| 5 | [[1차] 비밀지도](https://programmers.co.kr/learn/courses/30/lessons/17681) | [[1차]-비밀지도.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/[1차]-비밀지도.js) | -| 6 | [x만큼 간격이 있는 n개의 숫자](https://programmers.co.kr/learn/courses/30/lessons/12954) | [x만큼-간격이-있는-n개의-숫자.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/x만큼-간격이-있는-n개의-숫자.js) | -| 7 | [가운데 글자 가져오기](https://programmers.co.kr/learn/courses/30/lessons/12903) | [가운데-글자-가져오기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/가운데-글자-가져오기.js) | -| 8 | [같은 숫자는 싫어](https://programmers.co.kr/learn/courses/30/lessons/12906) | [같은-숫자는-싫어.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/같은-숫자는-싫어.js) | -| 9 | [나누어 떨어지는 숫자 배열](https://programmers.co.kr/learn/courses/30/lessons/12910) | [나누어-떨어지는-숫자-배열.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/나누어-떨어지는-숫자-배열.js) | -| 10 | [나머지가 1이 되는 수 찾기](https://programmers.co.kr/learn/courses/30/lessons/87389) | [나머지가-1이-되는-수-찾기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/나머지가-1이-되는-수-찾기.js) | -| 11 | [내적](https://programmers.co.kr/learn/courses/30/lessons/70128) | [내적.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/내적.js) | -| 12 | [두 개 뽑아서 더하기](https://programmers.co.kr/learn/courses/30/lessons/68644) | [두-개-뽑아서-더하기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/두-개-뽑아서-더하기.js) | -| 13 | [두 정수 사이의 합](https://programmers.co.kr/learn/courses/30/lessons/12912) | [두-정수-사이의-합.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/두-정수-사이의-합.js) | -| 14 | [로또의 최고 순위와 최저 순위](https://programmers.co.kr/learn/courses/30/lessons/77484) | [로또의-최고-순위와-최저-순위.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/로또의-최고-순위와-최저-순위.js) | -| 15 | [모의고사](https://programmers.co.kr/learn/courses/30/lessons/42840) | [모의고사.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/모의고사.js) | -| 16 | [문자열 내 p와 y의 개수](https://programmers.co.kr/learn/courses/30/lessons/12916) | [문자열-내-p와-y의-개수.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/문자열-내-p와-y의-개수.js) | -| 17 | [문자열 내 마음대로 정렬하기](https://programmers.co.kr/learn/courses/30/lessons/12915) | [문자열-내-마음대로-정렬하기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/문자열-내-마음대로-정렬하기.js) | -| 18 | [문자열 내림차순으로 배치하기](https://programmers.co.kr/learn/courses/30/lessons/12917) | [문자열-내림차순으로-배치하기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/문자열-내림차순으로-배치하기.js) | -| 19 | [문자열 다루기 기본](https://programmers.co.kr/learn/courses/30/lessons/12918) | [문자열-다루기-기본.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/문자열-다루기-기본.js) | -| 20 | [문자열을 정수로 바꾸기](https://programmers.co.kr/learn/courses/30/lessons/12925) | [문자열을-정수로-바꾸기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/문자열을-정수로-바꾸기.js) | -| 21 | [부족한 금액 계산하기](https://programmers.co.kr/learn/courses/30/lessons/82612) | [부족한-금액-계산하기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/부족한-금액-계산하기.js) | -| 22 | [서울에서 김서방 찾기](https://programmers.co.kr/learn/courses/30/lessons/12919) | [서울에서-김서방-찾기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/서울에서-김서방-찾기.js) | -| 23 | [소수 만들기](https://programmers.co.kr/learn/courses/30/lessons/12977) | [소수-만들기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/소수-만들기.js) | -| 24 | [소수 찾기](https://programmers.co.kr/learn/courses/30/lessons/12921) | [소수-찾기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/소수-찾기.js) | -| 25 | [수박수박수박수박수박수?](https://programmers.co.kr/learn/courses/30/lessons/12922) | [수박수박수박수박수박수.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/수박수박수박수박수박수.js) | -| 26 | [숫자 문자열과 영단어](https://programmers.co.kr/learn/courses/30/lessons/81301) | [숫자-문자열과-영단어.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/숫자-문자열과-영단어.js) | -| 27 | [시저 암호](https://programmers.co.kr/learn/courses/30/lessons/12926) | [시저-암호.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/시저-암호.js) | -| 28 | [신고 결과 받기](https://programmers.co.kr/learn/courses/30/lessons/92334) | [신고-결과-받기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/신고-결과-받기.js) | -| 29 | [신규 아이디 추천](https://programmers.co.kr/learn/courses/30/lessons/72410) | [신규-아이디-추천.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/신규-아이디-추천.js) | -| 30 | [실패율](https://programmers.co.kr/learn/courses/30/lessons/42889) | [실패율.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/실패율.js) | -| 31 | [약수의 개수와 덧셈](https://programmers.co.kr/learn/courses/30/lessons/77884) | [약수의-개수와-덧셈.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/약수의-개수와-덧셈.js) | -| 32 | [약수의 합](https://programmers.co.kr/learn/courses/30/lessons/12928) | [약수의-합.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/약수의-합.js) | -| 33 | [없는 숫자 더하기](https://programmers.co.kr/learn/courses/30/lessons/86051) | [없는-숫자-더하기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/없는-숫자-더하기.js) | -| 34 | [예산](https://programmers.co.kr/learn/courses/30/lessons/12982) | [예산.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/예산.js) | -| 35 | [완주하지 못한 선수](https://programmers.co.kr/learn/courses/30/lessons/42576) | [완주하지-못한-선수.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/완주하지-못한-선수.js) | -| 36 | [음양 더하기](https://programmers.co.kr/learn/courses/30/lessons/76501) | [음양-더하기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/음양-더하기.js) | -| 37 | [이상한 문자 만들기](https://programmers.co.kr/learn/courses/30/lessons/12930) | [이상한-문자-만들기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/이상한-문자-만들기.js) | -| 38 | [자릿수 더하기](https://programmers.co.kr/learn/courses/30/lessons/12931) | [자릿수-더하기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/자릿수-더하기.js) | -| 39 | [자연수 뒤집어 배열로 만들기](https://programmers.co.kr/learn/courses/30/lessons/12932) | [자연수-뒤집어-배열로-만들기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/자연수-뒤집어-배열로-만들기.js) | -| 40 | [정수 내림차순으로 배치하기](https://programmers.co.kr/learn/courses/30/lessons/12933) | [정수-내림차순으로-배치하기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/정수-내림차순으로-배치하기.js) | -| 41 | [정수 제곱근 판별](https://programmers.co.kr/learn/courses/30/lessons/12934) | [정수-제곱근-판별.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/정수-제곱근-판별.js) | -| 42 | [제일 작은 수 제거하기연습문제](https://programmers.co.kr/learn/courses/30/lessons/12935) | [제일-작은-수-제거하기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/제일-작은-수-제거하기.js) | -| 43 | [직사각형 별찍기](https://programmers.co.kr/learn/courses/30/lessons/12969) | [직사각형-별찍기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/직사각형-별찍기.js) | -| 44 | [짝수와 홀수](https://programmers.co.kr/learn/courses/30/lessons/12937) | [짝수와-홀수.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/짝수와-홀수.js) | -| 45 | [체육복](https://programmers.co.kr/learn/courses/30/lessons/42862) | [체육복.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/체육복.js) | -| 46 | [최대공약수와 최소공배수](https://programmers.co.kr/learn/courses/30/lessons/12940) | [최대공약수와-최소공배수.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/최대공약수와-최소공배수.js) | -| 47 | [최소직사각형](https://programmers.co.kr/learn/courses/30/lessons/86491) | [최소직사각형.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/최소직사각형.js) | -| 48 | [콜라츠 추측](https://programmers.co.kr/learn/courses/30/lessons/12943) | [콜라츠-추측.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/콜라츠-추측.js) | -| 49 | [크레인 인형뽑기 게임](https://programmers.co.kr/learn/courses/30/lessons/64061) | [크레인-인형뽑기-게임.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/크레인-인형뽑기-게임.js) | -| 50 | [키패드 누르기](https://programmers.co.kr/learn/courses/30/lessons/67256) | [키패드-누르기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/키패드-누르기.js) | -| 51 | [평균 구하기](https://programmers.co.kr/learn/courses/30/lessons/12944) | [평균-구하기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/평균-구하기.js) | -| 52 | [폰켓몬](https://programmers.co.kr/learn/courses/30/lessons/1845) | [폰켓몬.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/폰켓몬.js) | -| 53 | [핸드폰 번호 가리기](https://programmers.co.kr/learn/courses/30/lessons/12948) | [핸드폰-번호-가리기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/핸드폰-번호-가리기.js) | -| 54 | [행렬의 덧셈](https://programmers.co.kr/learn/courses/30/lessons/12950) | [행렬의-덧셈.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/행렬의-덧셈.js) | -| 55 | [하샤드 수](https://programmers.co.kr/learn/courses/30/lessons/12947) | [하샤드-수.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/히샤드-수.js) | +| 번호 | 문제 출처 | 풀이 | +| --- | ------- | --- | +| 1 | [2016년](https://programmers.co.kr/learn/courses/30/lessons/12901) | [2016년.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/2016년.js) | +| 2 | [3진법 뒤집기](https://programmers.co.kr/learn/courses/30/lessons/68935) | [3진법-뒤집기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/3진법-뒤집기.js) | +| 3 | [K번째수](https://programmers.co.kr/learn/courses/30/lessons/42748) | [K번째수.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/K번째수.js) | +| 4 | [[1차] 다트 게임](https://programmers.co.kr/learn/courses/30/lessons/17682) | [[1차]-다트-게임.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/[1차]-다트-게임.js) | +| 5 | [[1차] 비밀지도](https://programmers.co.kr/learn/courses/30/lessons/17681) | [[1차]-비밀지도.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/[1차]-비밀지도.js) | +| 6 | [x만큼 간격이 있는 n개의 숫자](https://programmers.co.kr/learn/courses/30/lessons/12954) | [x만큼-간격이-있는-n개의-숫자.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/x만큼-간격이-있는-n개의-숫자.js) | +| 7 | [가운데 글자 가져오기](https://programmers.co.kr/learn/courses/30/lessons/12903) | [가운데-글자-가져오기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/가운데-글자-가져오기.js) | +| 8 | [같은 숫자는 싫어](https://programmers.co.kr/learn/courses/30/lessons/12906) | [같은-숫자는-싫어.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/같은-숫자는-싫어.js) | +| 9 | [나누어 떨어지는 숫자 배열](https://programmers.co.kr/learn/courses/30/lessons/12910) | [나누어-떨어지는-숫자-배열.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/나누어-떨어지는-숫자-배열.js) | +| 10 | [나머지가 1이 되는 수 찾기](https://programmers.co.kr/learn/courses/30/lessons/87389) | [나머지가-1이-되는-수-찾기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/나머지가-1이-되는-수-찾기.js) | +| 11 | [내적](https://programmers.co.kr/learn/courses/30/lessons/70128) | [내적.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/내적.js) | +| 12 | [두 개 뽑아서 더하기](https://programmers.co.kr/learn/courses/30/lessons/68644) | [두-개-뽑아서-더하기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/두-개-뽑아서-더하기.js) | +| 13 | [두 정수 사이의 합](https://programmers.co.kr/learn/courses/30/lessons/12912) | [두-정수-사이의-합.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/두-정수-사이의-합.js) | +| 14 | [로또의 최고 순위와 최저 순위](https://programmers.co.kr/learn/courses/30/lessons/77484) | [로또의-최고-순위와-최저-순위.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/로또의-최고-순위와-최저-순위.js) | +| 15 | [모의고사](https://programmers.co.kr/learn/courses/30/lessons/42840) | [모의고사.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/모의고사.js) | +| 16 | [문자열 내 p와 y의 개수](https://programmers.co.kr/learn/courses/30/lessons/12916) | [문자열-내-p와-y의-개수.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/문자열-내-p와-y의-개수.js) | +| 17 | [문자열 내 마음대로 정렬하기](https://programmers.co.kr/learn/courses/30/lessons/12915) | [문자열-내-마음대로-정렬하기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/문자열-내-마음대로-정렬하기.js) | +| 18 | [문자열 내림차순으로 배치하기](https://programmers.co.kr/learn/courses/30/lessons/12917) | [문자열-내림차순으로-배치하기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/문자열-내림차순으로-배치하기.js) | +| 19 | [문자열 다루기 기본](https://programmers.co.kr/learn/courses/30/lessons/12918) | [문자열-다루기-기본.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/문자열-다루기-기본.js) | +| 20 | [문자열을 정수로 바꾸기](https://programmers.co.kr/learn/courses/30/lessons/12925) | [문자열을-정수로-바꾸기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/문자열을-정수로-바꾸기.js) | +| 21 | [부족한 금액 계산하기](https://programmers.co.kr/learn/courses/30/lessons/82612) | [부족한-금액-계산하기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/부족한-금액-계산하기.js) | +| 22 | [서울에서 김서방 찾기](https://programmers.co.kr/learn/courses/30/lessons/12919) | [서울에서-김서방-찾기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/서울에서-김서방-찾기.js) | +| 23 | [소수 만들기](https://programmers.co.kr/learn/courses/30/lessons/12977) | [소수-만들기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/소수-만들기.js) | +| 24 | [소수 찾기](https://programmers.co.kr/learn/courses/30/lessons/42839) | [소수-찾기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/소수-찾기.js) | +| 25 | [수박수박수박수박수박수?](https://programmers.co.kr/learn/courses/30/lessons/12922) | [수박수박수박수박수박수.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/수박수박수박수박수박수.js) | +| 26 | [숫자 문자열과 영단어](https://programmers.co.kr/learn/courses/30/lessons/81301) | [숫자-문자열과-영단어.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/숫자-문자열과-영단어.js) | +| 27 | [시저 암호](https://programmers.co.kr/learn/courses/30/lessons/12926) | [시저-암호.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/시저-암호.js) | +| 28 | [신고 결과 받기](https://programmers.co.kr/learn/courses/30/lessons/92334) | [신고-결과-받기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/신고-결과-받기.js) | +| 29 | [신규 아이디 추천](https://programmers.co.kr/learn/courses/30/lessons/72410) | [신규-아이디-추천.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/신규-아이디-추천.js) | +| 30 | [실패율](https://programmers.co.kr/learn/courses/30/lessons/42889) | [실패율.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/실패율.js) | +| 31 | [약수의 개수와 덧셈](https://programmers.co.kr/learn/courses/30/lessons/77884) | [약수의-개수와-덧셈.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/약수의-개수와-덧셈.js) | +| 32 | [약수의 합](https://programmers.co.kr/learn/courses/30/lessons/12928) | [약수의-합.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/약수의-합.js) | +| 33 | [없는 숫자 더하기](https://programmers.co.kr/learn/courses/30/lessons/86051) | [없는-숫자-더하기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/없는-숫자-더하기.js) | +| 34 | [예산](https://programmers.co.kr/learn/courses/30/lessons/12982) | [예산.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/예산.js) | +| 35 | [완주하지 못한 선수](https://programmers.co.kr/learn/courses/30/lessons/42576) | [완주하지-못한-선수.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/완주하지-못한-선수.js) | +| 36 | [음양 더하기](https://programmers.co.kr/learn/courses/30/lessons/76501) | [음양-더하기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/음양-더하기.js) | +| 37 | [이상한 문자 만들기](https://programmers.co.kr/learn/courses/30/lessons/12930) | [이상한-문자-만들기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/이상한-문자-만들기.js) | +| 38 | [자릿수 더하기](https://programmers.co.kr/learn/courses/30/lessons/12931) | [자릿수-더하기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/자릿수-더하기.js) | +| 39 | [자연수 뒤집어 배열로 만들기](https://programmers.co.kr/learn/courses/30/lessons/12932) | [자연수-뒤집어-배열로-만들기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/자연수-뒤집어-배열로-만들기.js) | +| 40 | [정수 내림차순으로 배치하기](https://programmers.co.kr/learn/courses/30/lessons/12933) | [정수-내림차순으로-배치하기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/정수-내림차순으로-배치하기.js) | +| 41 | [정수 제곱근 판별](https://programmers.co.kr/learn/courses/30/lessons/12934) | [정수-제곱근-판별.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/정수-제곱근-판별.js) | +| 42 | [제일 작은 수 제거하기](https://programmers.co.kr/learn/courses/30/lessons/12935) | [제일-작은-수-제거하기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/제일-작은-수-제거하기.js) | +| 43 | [직사각형 별찍기](https://programmers.co.kr/learn/courses/30/lessons/12969) | [직사각형-별찍기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/직사각형-별찍기.js) | +| 44 | [짝수와 홀수](https://programmers.co.kr/learn/courses/30/lessons/12937) | [짝수와-홀수.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/짝수와-홀수.js) | +| 45 | [체육복](https://programmers.co.kr/learn/courses/30/lessons/42862) | [체육복.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/체육복.js) | +| 46 | [최대공약수와 최소공배수](https://programmers.co.kr/learn/courses/30/lessons/12940) | [최대공약수와-최소공배수.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/최대공약수와-최소공배수.js) | +| 47 | [최소직사각형](https://programmers.co.kr/learn/courses/30/lessons/86491) | [최소직사각형.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/최소직사각형.js) | +| 48 | [콜라츠 추측](https://programmers.co.kr/learn/courses/30/lessons/12943) | [콜라츠-추측.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/콜라츠-추측.js) | +| 49 | [크레인 인형뽑기 게임](https://programmers.co.kr/learn/courses/30/lessons/64061) | [크레인-인형뽑기-게임.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/크레인-인형뽑기-게임.js) | +| 50 | [키패드 누르기](https://programmers.co.kr/learn/courses/30/lessons/67256) | [키패드-누르기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/키패드-누르기.js) | +| 51 | [평균 구하기](https://programmers.co.kr/learn/courses/30/lessons/12944) | [평균-구하기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/평균-구하기.js) | +| 52 | [폰켓몬](https://programmers.co.kr/learn/courses/30/lessons/1845) | [폰켓몬.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/폰켓몬.js) | +| 53 | [하샤드 수](https://programmers.co.kr/learn/courses/30/lessons/12947) | [하샤드-수.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/하샤드-수.js) | +| 54 | [핸드폰 번호 가리기](https://programmers.co.kr/learn/courses/30/lessons/12948) | [핸드폰-번호-가리기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/핸드폰-번호-가리기.js) | +| 55 | [행렬의 덧셈](https://programmers.co.kr/learn/courses/30/lessons/12950) | [행렬의-덧셈.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-1/행렬의-덧셈.js) | ### Level 2 👨🏻‍💻(풀이 중..) -> 풀이가 완료되는대로 표가 추가됩니다. 표가 없더라도 해당 레벨 폴더에서 현재까지 풀어진 풀이를 검색하실 수 있습니다. - - 전체 문제 수: 64문제 -- 풀이 문제 수: 46문제(2022.04.14) +- 풀이 문제 수: 45문제 - 풀이 완료 예상 시점: 2022년 4월 중 +| 번호 | 문제 출처 | 풀이 | +| --- | ------- | --- | +| 1 | [124 나라의 숫자](https://programmers.co.kr/learn/courses/30/lessons/12899) | [124-나라의-숫자.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-2/124-나라의-숫자.js) | +| 2 | [H-Index](https://programmers.co.kr/learn/courses/30/lessons/42747) | [H-Index.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-2/H-Index.js) | +| 3 | [JadenCase 문자열 만들기](https://programmers.co.kr/learn/courses/30/lessons/12951) | [JadenCase-문자열-만들기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-2/JadenCase-문자열-만들기.js) | +| 4 | [N개의 최소공배수](https://programmers.co.kr/learn/courses/30/lessons/12953) | [N개의-최소공배수.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-2/N개의-최소공배수.js) | +| 5 | [[1차] 뉴스 클러스터링](https://programmers.co.kr/learn/courses/30/lessons/17677) | [[1차]-뉴스-클러스터링.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-2/[1차]-뉴스-클러스터링.js) | +| 6 | [[1차] 캐시](https://programmers.co.kr/learn/courses/30/lessons/17680) | [[1차]-캐시.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-2/[1차]-캐시.js) | +| 7 | [[3차] n진수 게임](https://programmers.co.kr/learn/courses/30/lessons/17687) | [[3차]-n진수-게임.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-2/[3차]-n진수-게임.js) | +| 8 | [[3차] 파일명 정렬](https://programmers.co.kr/learn/courses/30/lessons/17686) | [[3차]-파일명-정렬.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-2/[3차]-파일명-정렬.js) | +| 9 | [가장 큰 수](https://programmers.co.kr/learn/courses/30/lessons/42746) | [가장-큰-수.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-2/가장-큰-수.js) | +| 10 | [가장 큰 정사각형 찾기](https://programmers.co.kr/learn/courses/30/lessons/12905) | [가장-큰-정사각형-찾기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-2/가장-큰-정사각형-찾기.js) | +| 11 | [거리두기 확인하기](https://programmers.co.kr/learn/courses/30/lessons/81302) | [거리두기-확인하기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-2/거리두기-확인하기.js) | +| 12 | [괄호 변환](https://programmers.co.kr/learn/courses/30/lessons/60058) | [괄호-변환.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-2/괄호-변환.js) | +| 13 | [괄호 회전하기](https://programmers.co.kr/learn/courses/30/lessons/76502) | [괄호-회전하기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-2/괄호-회전하기.js) | +| 14 | [구명보트](https://programmers.co.kr/learn/courses/30/lessons/42885) | [구명보트.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-2/구명보트.js) | +| 15 | [기능개발](https://programmers.co.kr/learn/courses/30/lessons/42586) | [기능개발.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-2/기능개발.js) | +| 16 | [다리를 지나는 트럭](https://programmers.co.kr/learn/courses/30/lessons/42583) | [다리를-지나는-트럭.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-2/다리를-지나는-트럭.js) | +| 17 | [다음 큰 숫자](https://programmers.co.kr/learn/courses/30/lessons/12911) | [다음-큰-숫자.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-2/다음-큰-숫자.js) | +| 18 | [땅따먹기](https://programmers.co.kr/learn/courses/30/lessons/12913) | [땅따먹기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-2/땅따먹기.js) | +| 19 | [멀쩡한 사각형](https://programmers.co.kr/learn/courses/30/lessons/62048) | [멀쩡한-사각형.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-2/멀쩡한-사각형.js) | +| 20 | [메뉴 리뉴얼](https://programmers.co.kr/learn/courses/30/lessons/72411) | [메뉴-리뉴얼.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-2/메뉴-리뉴얼.js) | +| 21 | [문자열 압축](https://programmers.co.kr/learn/courses/30/lessons/60057) | [문자열-압축.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-2/문자열-압축.js) | +| 22 | [삼각 달팽이](https://programmers.co.kr/learn/courses/30/lessons/68645) | [삼각-달팽이.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-2/삼각-달팽이.js) | +| 23 | [소수 찾기](https://programmers.co.kr/learn/courses/30/lessons/42839) | [소수-찾기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-2/소수-찾기.js) | +| 24 | [수식 최대화](https://programmers.co.kr/learn/courses/30/lessons/67257) | [수식-최대화.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-2/수식-최대화.js) | +| 25 | [숫자의 표현](https://programmers.co.kr/learn/courses/30/lessons/12924) | [숫자의-표현.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-2/숫자의-표현.js) | +| 26 | [스킬트리](https://programmers.co.kr/learn/courses/30/lessons/49993) | [스킬트리.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-2/스킬트리.js) | +| 27 | [영어 끝말잇기](https://programmers.co.kr/learn/courses/30/lessons/12981) | [영어-끝말잇기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-2/영어-끝말잇기.js) | +| 28 | [예상 대진표](https://programmers.co.kr/learn/courses/30/lessons/12985) | [예상-대진표.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-2/예상-대진표.js) | +| 29 | [오픈채팅방 ](https://programmers.co.kr/learn/courses/30/lessons/42888) | [오픈채팅방.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-2/오픈채팅방.js) | +| 30 | [올바른 괄호](https://programmers.co.kr/learn/courses/30/lessons/12909) | [올바른-괄호.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-2/올바른-괄호.js) | +| 31 | [위장](https://programmers.co.kr/learn/courses/30/lessons/42578) | [위장.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-2/위장.js) | +| 32 | [점프와 순간 이동](https://programmers.co.kr/learn/courses/30/lessons/12980) | [점프와-순간-이동.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-2/점프와-순간-이동.js) | +| 33 | [조이스틱](https://programmers.co.kr/learn/courses/30/lessons/42860) | [조이스틱.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-2/조이스틱.js) | +| 34 | [짝지어 제거하기](https://programmers.co.kr/learn/courses/30/lessons/12973) | [짝지어-제거하기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-2/짝지어-제거하기.js) | +| 35 | [최댓값과 최솟값](https://programmers.co.kr/learn/courses/30/lessons/12939) | [최댓값과-최솟값.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-2/최댓값과-최솟값.js) | +| 36 | [최솟값 만들기](https://programmers.co.kr/learn/courses/30/lessons/12941) | [최솟값-만들기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-2/최솟값-만들기.js) | +| 37 | [카펫](https://programmers.co.kr/learn/courses/30/lessons/42842) | [카펫.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-2/카펫.js) | +| 38 | [큰 수 만들기](https://programmers.co.kr/learn/courses/30/lessons/42883) | [큰-수-만들기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-2/큰-수-만들기.js) | +| 39 | [타겟 넘버](https://programmers.co.kr/learn/courses/30/lessons/43165) | [타겟-넘버.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-2/타겟-넘버.js) | +| 40 | [튜플](https://programmers.co.kr/learn/courses/30/lessons/64065) | [튜플.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-2/튜플.js) | +| 41 | [프린터](https://programmers.co.kr/learn/courses/30/lessons/42587) | [프린터.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-2/프린터.js) | +| 42 | [피보나치 수](https://programmers.co.kr/learn/courses/30/lessons/12945) | [피보나치-수.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-2/피보나치-수.js) | +| 43 | [행렬 테두리 회전하기](https://programmers.co.kr/learn/courses/30/lessons/77485) | [행렬-테두리-회전하기.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-2/행렬-테두리-회전하기.js) | +| 44 | [행렬의 곱셈](https://programmers.co.kr/learn/courses/30/lessons/12949) | [행렬의-곱셈.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-2/행렬의-곱셈.js) | +| 45 | [후보키](https://programmers.co.kr/learn/courses/30/lessons/42890) | [후보키.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-2/후보키.js) | + ### Level 3 👨🏻‍💻(풀이 중..) - 전체 문제 수: 52문제 -- 풀이 문제 수: 5문제(2022.03.30) +- 풀이 문제 수: 8문제 - 풀이 완료 예상 시점: 2022년 8월 중 +| 번호 | 문제 출처 | 풀이 | +| --- | ------- | --- | +| 1 | [2 x n 타일링](https://programmers.co.kr/learn/courses/30/lessons/12900) | [2-x-n-타일링.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-3/2-x-n-타일링.js) | +| 2 | [N-Queen](https://programmers.co.kr/learn/courses/30/lessons/12952) | [N-Queen.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-3/N-Queen.js) | +| 3 | [가장 먼 노드](https://programmers.co.kr/learn/courses/30/lessons/49189) | [가장-먼-노드.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-3/가장-먼-노드.js) | +| 4 | [네트워크](https://programmers.co.kr/learn/courses/30/lessons/43162) | [네트워크.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-3/네트워크.js) | +| 5 | [베스트앨범](https://programmers.co.kr/learn/courses/30/lessons/42579) | [베스트앨범.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-3/베스트앨범.js) | +| 6 | [여행경로](https://programmers.co.kr/learn/courses/30/lessons/43164) | [여행경로.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-3/여행경로.js) | +| 7 | [이중우선순위큐](https://programmers.co.kr/learn/courses/30/lessons/42628) | [이중우선순위큐.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-3/이중우선순위큐.js) | +| 8 | [입국심사](https://programmers.co.kr/learn/courses/30/lessons/43238) | [입국심사.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-3/입국심사.js) | + ### Level 4 -풀이 완료 예상 시점 : 예정 없음 +- 전체 문제 수: 22문제 +- 풀이 문제 수: 1문제 +- 풀이 완료 예상 시점: 예정 없음 + +| 번호 | 문제 출처 | 풀이 | +| --- | ------- | --- | +| 1 | [단어 퍼즐](https://programmers.co.kr/learn/courses/30/lessons/12983) | [단어-퍼즐.js](https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-4/단어-퍼즐.js) | ### Level 5 -풀이 완료 예상 시점: 예정 없음 +- 전체 문제 수: 6문제 +- 풀이 문제 수: 0문제 +- 풀이 완료 예상 시점: 예정 없음 -## 🙏🏻 아직 풀리지 않은 문제의 해답을 추가해 주세요! +| 번호 | 문제 출처 | 풀이 | +| --- | ------- | --- | -### 커밋 컨벤션 +## 🙏🏻 아직 풀리지 않은 문제의 해답을 추가해 주세요! +### 커밋 컨벤션 | 접두어 | 작업 내용 | | ------- | -------------------------------------------------- | | Create | 새로운 파일 생성 후 문제풀이 코드를 추가 할 경우 | @@ -125,4 +214,3 @@ 해당 Repository의 해답을 자신의 저작물에 추가할 수 있지만 **반드시** 본 Repository의 주소 `https://github.com/codeisneverodd/programmers-coding-test` 를 명시하여야합니다. - diff --git "a/level-4/\353\213\250\354\226\264-\355\215\274\354\246\220.js" "b/level-4/\353\213\250\354\226\264-\355\215\274\354\246\220.js" index 475cc45..c09bf5d 100644 --- "a/level-4/\353\213\250\354\226\264-\355\215\274\354\246\220.js" +++ "b/level-4/\353\213\250\354\226\264-\355\215\274\354\246\220.js" @@ -32,3 +32,5 @@ function solution(strs, t) { ? -1 : minCountToIndex[tLength - 1]; } + +//리드미 테스트용 코멘트 diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..231da30 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,440 @@ +{ + "name": "programmers-coding-test", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "programmers-coding-test", + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "cheerio": "^1.0.0-rc.10", + "node-fetch": "^3.2.3" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" + }, + "node_modules/cheerio": { + "version": "1.0.0-rc.10", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz", + "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==", + "dependencies": { + "cheerio-select": "^1.5.0", + "dom-serializer": "^1.3.2", + "domhandler": "^4.2.0", + "htmlparser2": "^6.1.0", + "parse5": "^6.0.1", + "parse5-htmlparser2-tree-adapter": "^6.0.1", + "tslib": "^2.2.0" + }, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/cheerio-select": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.6.0.tgz", + "integrity": "sha512-eq0GdBvxVFbqWgmCm7M3XGs1I8oLy/nExUnh6oLqmBditPO9AqQJrkslDpMun/hZ0yyTs8L0m85OHp4ho6Qm9g==", + "dependencies": { + "css-select": "^4.3.0", + "css-what": "^6.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.3.1", + "domutils": "^2.8.0" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/data-uri-to-buffer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz", + "integrity": "sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==", + "engines": { + "node": ">= 12" + } + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/fetch-blob": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.1.5.tgz", + "integrity": "sha512-N64ZpKqoLejlrwkIAnb9iLSA3Vx/kjgzpcDhygcqJ2KKjky8nCgUQ+dzXtbrLaWZGZNmNfQTsiQ0weZ1svglHg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "engines": { + "node": ">=10.5.0" + } + }, + "node_modules/node-fetch": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.2.3.tgz", + "integrity": "sha512-AXP18u4pidSZ1xYXRDPY/8jdv3RAozIt/WLNR/MBGZAz+xjtlr90RvCnsvHQRiXyWliZF/CpytExp32UU67/SA==", + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, + "node_modules/nth-check": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "dependencies": { + "parse5": "^6.0.1" + } + }, + "node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + }, + "node_modules/web-streams-polyfill": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", + "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", + "engines": { + "node": ">= 8" + } + } + }, + "dependencies": { + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" + }, + "cheerio": { + "version": "1.0.0-rc.10", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz", + "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==", + "requires": { + "cheerio-select": "^1.5.0", + "dom-serializer": "^1.3.2", + "domhandler": "^4.2.0", + "htmlparser2": "^6.1.0", + "parse5": "^6.0.1", + "parse5-htmlparser2-tree-adapter": "^6.0.1", + "tslib": "^2.2.0" + } + }, + "cheerio-select": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.6.0.tgz", + "integrity": "sha512-eq0GdBvxVFbqWgmCm7M3XGs1I8oLy/nExUnh6oLqmBditPO9AqQJrkslDpMun/hZ0yyTs8L0m85OHp4ho6Qm9g==", + "requires": { + "css-select": "^4.3.0", + "css-what": "^6.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.3.1", + "domutils": "^2.8.0" + } + }, + "css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "requires": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + } + }, + "css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==" + }, + "data-uri-to-buffer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz", + "integrity": "sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==" + }, + "dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" + }, + "domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "requires": { + "domelementtype": "^2.2.0" + } + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" + }, + "fetch-blob": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.1.5.tgz", + "integrity": "sha512-N64ZpKqoLejlrwkIAnb9iLSA3Vx/kjgzpcDhygcqJ2KKjky8nCgUQ+dzXtbrLaWZGZNmNfQTsiQ0weZ1svglHg==", + "requires": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + } + }, + "formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "requires": { + "fetch-blob": "^3.1.2" + } + }, + "htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==" + }, + "node-fetch": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.2.3.tgz", + "integrity": "sha512-AXP18u4pidSZ1xYXRDPY/8jdv3RAozIt/WLNR/MBGZAz+xjtlr90RvCnsvHQRiXyWliZF/CpytExp32UU67/SA==", + "requires": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + } + }, + "nth-check": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "requires": { + "boolbase": "^1.0.0" + } + }, + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + }, + "parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "requires": { + "parse5": "^6.0.1" + } + }, + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + }, + "web-streams-polyfill": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", + "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..1eb001e --- /dev/null +++ b/package.json @@ -0,0 +1,23 @@ +{ + "name": "programmers-coding-test", + "version": "1.0.0", + "description": "🌱 프로그래머스의 [코딩테스트 문제]", + "type": "module", + "scripts": { + "build": "node ./utils/build.js" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/codeisneverodd/programmers-coding-test.git" + }, + "author": "cruelladevil ", + "license": "MIT", + "bugs": { + "url": "https://github.com/codeisneverodd/programmers-coding-test/issues" + }, + "homepage": "https://github.com/codeisneverodd/programmers-coding-test#readme", + "dependencies": { + "cheerio": "^1.0.0-rc.10", + "node-fetch": "^3.2.3" + } +} diff --git a/utils/build.js b/utils/build.js new file mode 100644 index 0000000..0cd2983 --- /dev/null +++ b/utils/build.js @@ -0,0 +1,120 @@ +import * as fs from "fs"; +import path from "path"; +import { getTableStr, getInfoList } from "./string.js"; + +const __dirname = path.resolve(); +const FILE_TO_UPDATE = path.resolve(__dirname, "./README.md"); +const updateData = `# 프로그래머스 모든 문제 풀이 +[![방문자수](https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https://github.com/codeisneverodd/programmers-coding-test&count_bg=%2379C83D&title_bg=%23555555&icon=&icon_color=%23E7E7E7&title=방문자수(Today/Total)&edge_flat=true)](https://github.com/codeisneverodd) + +🌱 프로그래머스의 [코딩테스트 문제](https://programmers.co.kr/learn/challenges?tab=all_challenges)의 문제 풀이를 찾으실 수 있습니다. + +🌱 모든 문제는 JavaScript로 풀이되며, 원하는 풀이는 **아래에서 검색 🔎**을 통해 찾으실 수 있습니다 + +[![thumbnail-coding-test-no-id](https://user-images.githubusercontent.com/54318460/158711288-5fbd903f-d3b6-4d56-bd1f-9e5946d67d0a.png) +](https://github.com/codeisneverodd/programmers-coding-test/) +## 🌟 Contributors + +### 🧪 기능 구현 + +| Main Contributors | Contribute Lists | About Me | +| ----------------------------------------------- | --------------------------- | -------- | +| [cruelladevil](https://github.com/cruelladevil) | - README 자동 업데이트 구현 | 🚧 | + + + +### 🔥 문제 풀이 + +| Main Contributors | Commits | About Me | +| --------------------------------------------------- | ------- | -------- | +| [codeisneverodd](https://github.com/codeisneverodd) | 🚧 | 🚧 | +| [chaerin-dev](https://github.com/chaerin-dev) | 🚧 | 🚧 | +| [jaewon1676](https://github.com/jaewon1676) | 🚧 | 🚧 | +| [prove-ability](https://github.com/prove-ability) | 🚧 | 🚧 | +| [yongchanson](https://github.com/yongchanson) | 🚧 | 🚧 | + +| Contributors | Commits | +| ------------------------------------------- | ------- | +| [createhb21](https://github.com/createhb21) | 🚧 | + +## 😁 **도움이 되셨다면** 오른쪽 상단 ↗ 의 ⭐️ **Star를 클릭**해 이 프로젝트를 응원해주세요! + +## Control + F 혹은 Cmd + F 를 통해 원하는 문제의 풀이를 찾아보세요! + +### Level 1 ✅ + +- 전체 문제 수: 55문제 +- 풀이 문제 수: ${getInfoList(1).length}문제 +- 풀이 완료 시점: 2022년 1월 + +| 번호 | 문제 출처 | 풀이 | +| --- | ------- | --- | +${getTableStr(1)} + +### Level 2 👨🏻‍💻(풀이 중..) + +- 전체 문제 수: 64문제 +- 풀이 문제 수: ${getInfoList(2).length}문제 +- 풀이 완료 예상 시점: 2022년 4월 중 + +| 번호 | 문제 출처 | 풀이 | +| --- | ------- | --- | +${getTableStr(2)} + +### Level 3 👨🏻‍💻(풀이 중..) + +- 전체 문제 수: 52문제 +- 풀이 문제 수: ${getInfoList(3).length}문제 +- 풀이 완료 예상 시점: 2022년 8월 중 + +| 번호 | 문제 출처 | 풀이 | +| --- | ------- | --- | +${getTableStr(3)} + +### Level 4 + +- 전체 문제 수: 22문제 +- 풀이 문제 수: ${getInfoList(4).length}문제 +- 풀이 완료 예상 시점: 예정 없음 + +| 번호 | 문제 출처 | 풀이 | +| --- | ------- | --- | +${getTableStr(4)} + +### Level 5 + +- 전체 문제 수: 6문제 +- 풀이 문제 수: ${getInfoList(5).length}문제 +- 풀이 완료 예상 시점: 예정 없음 + +| 번호 | 문제 출처 | 풀이 | +| --- | ------- | --- | +${getTableStr(5)} + +## 🙏🏻 아직 풀리지 않은 문제의 해답을 추가해 주세요! +### 커밋 컨벤션 +| 접두어 | 작업 내용 | +| ------- | -------------------------------------------------- | +| Create | 새로운 파일 생성 후 문제풀이 코드를 추가 할 경우 | +| Add | 기존 파일에 문제풀이 코드를 추가 할 경우 | +| Update | 파일의 기존 코드를 수정 할 경우 | +| Rename | 파일 혹은 폴더명을 수정하거나 옮기는 작업만일 경우 | +| Remove | 파일을 삭제하는 작업만 수행한 경우 | +| Comment | 주석 추가 및 수정의 경우 | + +### 추가 방법 + +1. 우측 상단의 Fork를 눌러 본인의 GitHub로 이동합니다. +2. Fork한 Repository를 \`git clone 자신이-Fork한-자신의-Repository-주소\` 를 통해 다운받습니다. +3. 해답을 해당하는 Level의 폴더에 \`00-해답-예시.js\`에 따라 생성합니다. 이때, **반드시 공백은\`-\` 바꾸어** 파일 이름을 짓습니다. +4. 자신이 Fork한 자신의 Repository에 push를 한 후, GitHub에서 Create pull request를 통해 기여합니다. +5. 해설은 검수자들의 확인이 끝나는대로 본 Repository에 반영됩니다. + +## 저작권 + +해당 Repository의 해답을 자신의 저작물에 추가할 수 있지만 **반드시** 본 Repository의 +주소 \`https://github.com/codeisneverodd/programmers-coding-test\` +를 명시하여야합니다. +`; + +fs.writeFileSync(FILE_TO_UPDATE, updateData, "utf-8"); diff --git a/utils/fetch.js b/utils/fetch.js new file mode 100644 index 0000000..6de38d1 --- /dev/null +++ b/utils/fetch.js @@ -0,0 +1,22 @@ +import fetch from 'node-fetch'; +import * as cheerio from 'cheerio'; + +async function fetchBody() { + const COURSE_URL = 'https://programmers.co.kr/learn/courses/30'; + const response = await fetch(COURSE_URL); + const body = await response.text(); + return body; +} + +export default async function fetchTitleLink() { + const body = await fetchBody(); + const $ = cheerio.load(body); + const lesson = {}; + + $('.lesson-title').each(function (index, el) { + const title = $(el).children('span').text(); + const link = $(el).attr('href'); + lesson[title] = link; + }); + return lesson; +} diff --git a/utils/string.js b/utils/string.js new file mode 100644 index 0000000..d2f0966 --- /dev/null +++ b/utils/string.js @@ -0,0 +1,63 @@ +import * as fs from 'fs'; +import path from 'path'; +import fetchTitleLink from './fetch.js'; + +const __dirname = path.resolve(); +const titleLinkObject = await fetchTitleLink(); + +function getFileNameList(dir) { + try { + return fs + .readdirSync(dir) + .map(fileName => fileName.normalize('NFC')) + .filter(fileName => fileName !== '00-해답-예시.js') + .sort(); + } catch (err) { + return []; + } +} + +function checkException(title) { + switch (title) { + case '수박수박수박수박수박수': + return '수박수박수박수박수박수?'; + case 'H Index': + return 'H-Index'; + case 'N Queen': + return 'N-Queen'; + case '오픈채팅방': + return '오픈채팅방 '; + default: + return title; + } +} + +function getTitle(fileName) { + const title = fileName.split('-').join(' ').slice(0, -3); + return checkException(title); +} + +export function getInfoList(levelNumber) { + const levelDir = path.resolve(__dirname, `./level-${levelNumber}`); + const fileNameList = getFileNameList(levelDir); + const infoList = fileNameList.map(fileName => { + const title = getTitle(fileName); + const link = titleLinkObject[title]; + return { title, link, fileName, levelNumber }; + }); + return infoList; +} + +function makeReadmeStr(infoItem, index) { + const { title, link, fileName, levelNumber } = infoItem; + const codeLink = `https://github.com/codeisneverodd/programmers-coding-test/blob/main/level-${levelNumber}/${fileName}`; + return `| ${index + 1} | [${title}](${link}) | [${fileName}](${codeLink}) |`; +} + +export function getTableStr(levelNumber) { + if (getInfoList(levelNumber).length === 0) return ''; + + return getInfoList(levelNumber) + .map((item, index) => makeReadmeStr(item, index)) + .join('\n'); +}