diff --git a/Challenge/2doo/expDivOdd/README.md b/Challenge/2doo/expDivOdd/README.md deleted file mode 100644 index 2d5e0676..00000000 --- a/Challenge/2doo/expDivOdd/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# 문제제목 - -## 설명 - -제곱한 후 3으로 나눈 나머지가 홀수인 것의 총 합을 구하세요. - -## Expected Output diff --git a/Challenge/2doo/expDivOdd/solve.js b/Challenge/2doo/expDivOdd/solve.js deleted file mode 100644 index 102382c8..00000000 --- a/Challenge/2doo/expDivOdd/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -const inputArray = [1, 7, 3, 4, 6]; - -// write your codes - -const answer = inputArray - .filter((n) => ((n * n) % 3) % 2 == 1) - .reduce((acc, n) => acc + n, 0); -console.log(answer); diff --git a/Challenge/2doo/figureSkating/README.md b/Challenge/2doo/figureSkating/README.md deleted file mode 100644 index bfaa0743..00000000 --- a/Challenge/2doo/figureSkating/README.md +++ /dev/null @@ -1,41 +0,0 @@ -# 문제제목 - -## 설명 - -점수를 계산해서 점수가 높은 순으로 name과 score를 가진 객체의 배열을 출력하세요. -단 실격자는 출력하지 않습니다. - -### 피겨 점수 기준 - -피겨 점수는 ‘기술점수(TES)+예술점수(PCS)-감점’으로 구성된다. - -기술점수(TES·Total Element Score)는 기본점수에 수행점수(GOE·Grade Of Execution)를 합산해 도출한다. - -심판은 선수들이 점프와 스핀의 기술을 제대로 수행하는지 살핀다. 점프에선 회전수를 제대로 지켰는지, 에지를 제대로 사용했는지에 따라 ‘롱 에지’(잘못된 에지 사용)나 ‘다운그레이드’(난이도 하락), ‘어텐션’(주의) 등의 판정을 내린다. 스핀과 스텝시퀀스에 붙는 레벨(1~4)도 이들이 결정한다. - -9명의 심판은 선수들이 미리 제출한 연기 구성표를 기준으로 과제별 기본점수에서 가·감점을 한다. 이른바 ‘GOE’라 불리는 수행점수다. - -쇼트프로그램은 점프 3개, 스핀 3개, 스텝 1개의 수행과제가 반드시 포함돼야 한다. - -예술점수(PCS·Total Program Component Score)는 프로그램의 완성도에 영향을 미치는 스케이팅 기술·동작의 연결·연기·안무·곡 해석 등 5가지를 평가한다. - -마지막으로 감점이 반영된다. 감점 항목이 발생할 때마다 1점씩 감점된다. - -원문보기: -http://news.khan.co.kr/kh_news/khan_art_view.html?art_id=201402172146545#csidx6329aebb6a02152bca884614a7f0544 - -### 판정 기준 - -* 점수가 가장 높은 사람이 1등이다. -* 점수는 기술점수(TES) + 예술점수(PCS) - 감점 으로 구성된다. -* 기술점수(TES)는 기본점수 * 수행점수(GOE)를 합산해 도출한다. -* 필수 수행과제를 수행하지 못했을 시 실격이다. - -### 필수 수행과제 - -* 쇼트프로그램은 점프 3개, 스핀 3개, 스텝 1개의 수행과제가 반드시 포함돼야 한다. -* 점프와 스핀을 4번 이상 수행했을 시 가장 잘한 3개를 기준으로 한다. - -## Expected Output - -[ { name: '김연아', score: 1055 }, { name: '아사다 마오', score: 999 } ] diff --git a/Challenge/2doo/figureSkating/solve.js b/Challenge/2doo/figureSkating/solve.js deleted file mode 100644 index 8a9aa033..00000000 --- a/Challenge/2doo/figureSkating/solve.js +++ /dev/null @@ -1,89 +0,0 @@ -// 기본 점수 -const baseScore = { - jump: 10, - spin: 20, - step: 15, -}; - -const baseAssignment = { - jump: 3, - spin: 3, - step: 1, -}; - -const inputArray = [ - { - name: "김연아", - goe: { - jump: [10, 9, 10], - spin: [10, 10, 10], - step: [9], - }, - pcs: 30, - penalty: 0, - }, - { - name: "피겨의 신", - goe: { - jump: [10000, 10000], - spin: [10000, 10000, 10000], - step: [10000], - }, - pcs: 100000, - penalty: 0, - }, - { - name: "아사다 마오", - goe: { - jump: [9, 6, 8, 9], - spin: [9, 9, 9], - step: [8], - }, - pcs: 29, - penalty: 10, - }, -]; - -// write your codes - -const isQualifiedAct = (act) => - Object.entries(baseAssignment).every((entry) => { - const [goeKey, goeRequiredCount] = entry; - const goeTries = act.goe[goeKey]; - - return goeTries.length >= goeRequiredCount; - }); - -const leaveMaxThree = (act) => ({ - ...act, - goe: { - ...act.goe, - jump: act.goe.jump.sort().slice(-3), - spin: act.goe.spin.sort().slice(-3), - }, -}); - -const getActResult = (act) => { - const tesScore = Object.entries(baseScore).reduce((acc, entry) => { - const [goeKey, goeBaseScore] = entry; - const goeTries = act.goe[goeKey]; - const goeScore = goeTries.reduce((acc, n) => acc + n, 0); - - return acc + goeBaseScore * goeScore; - }, 0); - - return { - name: act.name, - score: tesScore + act.pcs - act.penalty, - }; -}; - -const descendingCompareByScore = (a, b) => b.score - a.score; - -const answer = inputArray - .filter(isQualifiedAct) - .map(leaveMaxThree) - .map(getActResult) - .sort(descendingCompareByScore); - -console.log(answer); diff --git a/Challenge/2doo/filterAge/README.md b/Challenge/2doo/filterAge/README.md deleted file mode 100644 index 1c73138e..00000000 --- a/Challenge/2doo/filterAge/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소의 age가 30이상 50미만인 사람만 있는 객체의 배열을 만드세요 - -## Expected Output - -[ { name: '일미', age: 35 }, { name: '이미', age: 45 } ] diff --git a/Challenge/2doo/filterAge/solve.js b/Challenge/2doo/filterAge/solve.js deleted file mode 100644 index b73a877d..00000000 --- a/Challenge/2doo/filterAge/solve.js +++ /dev/null @@ -1,24 +0,0 @@ -const inputArray = [ - { - name: "영미", - age: 25, - }, - { - name: "일미", - age: 35, - }, - { - name: "이미", - age: 45, - }, - { - name: "삼미", - age: 55, - }, -]; -// write your codes - -const answer = inputArray.filter( - (person) => person.age >= 30 && person.age < 50 -); -console.log(answer); diff --git a/Challenge/2doo/filterIntersection/README.md b/Challenge/2doo/filterIntersection/README.md deleted file mode 100644 index 56c8d04a..00000000 --- a/Challenge/2doo/filterIntersection/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -두 배열의 교집합을 출력하세요! - -## Expected Output - -[3, 4, 5] \ No newline at end of file diff --git a/Challenge/2doo/filterIntersection/solve.js b/Challenge/2doo/filterIntersection/solve.js deleted file mode 100644 index 9f1455da..00000000 --- a/Challenge/2doo/filterIntersection/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -const A = [1, 2, 3, 4, 5]; -const B = [3, 4, 5, 6, 7]; -// write your codes - -const answer = A.filter((n) => B.includes(n)); -console.log(answer); diff --git a/Challenge/2doo/filterOdd/README.md b/Challenge/2doo/filterOdd/README.md deleted file mode 100644 index 9bf99a18..00000000 --- a/Challenge/2doo/filterOdd/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -홀수만 뽑아 배열로 만드세요 - -## Expected Output - -[5, 1, 3] diff --git a/Challenge/2doo/filterOdd/solve.js b/Challenge/2doo/filterOdd/solve.js deleted file mode 100644 index 4c50aec7..00000000 --- a/Challenge/2doo/filterOdd/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -const inputArray = [4, 2, 5, 1, 3]; - -// write your codes - -const answer = inputArray.filter((n) => n % 2 == 1); -console.log(answer); diff --git a/Challenge/2doo/findWord/README.md b/Challenge/2doo/findWord/README.md deleted file mode 100644 index 8ef123f4..00000000 --- a/Challenge/2doo/findWord/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -용가리라는 단어가 있으면 true 없으면 false를 출력 - -## Expected Output - -true diff --git a/Challenge/2doo/findWord/solve.js b/Challenge/2doo/findWord/solve.js deleted file mode 100644 index 15d15f45..00000000 --- a/Challenge/2doo/findWord/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -const inputArray = ["잠", "자", "고", "싶", "다", "용가리"]; - -// write your codes - -const answer = inputArray.includes("용가리"); -console.log(answer); diff --git a/Challenge/2doo/forEachFilter/README.md b/Challenge/2doo/forEachFilter/README.md deleted file mode 100644 index d826e8e6..00000000 --- a/Challenge/2doo/forEachFilter/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소중 40 이상인 수만 뽑아 배열을 만드세요. - -## Expected Output - -[ 100, 40 ] diff --git a/Challenge/2doo/forEachFilter/solve.js b/Challenge/2doo/forEachFilter/solve.js deleted file mode 100644 index 099c9e8f..00000000 --- a/Challenge/2doo/forEachFilter/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes - -const answer = inputArray.filter((n) => n >= 40); -console.log(answer); diff --git a/Challenge/2doo/forEachFilterIsNaN/README.md b/Challenge/2doo/forEachFilterIsNaN/README.md deleted file mode 100644 index ba71774d..00000000 --- a/Challenge/2doo/forEachFilterIsNaN/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소중 숫자인 원소만 뽑아 배열을 만드세요. - -## Expected Output - -[ 1, 40, 51.5, 88 ] diff --git a/Challenge/2doo/forEachFilterIsNaN/solve.js b/Challenge/2doo/forEachFilterIsNaN/solve.js deleted file mode 100644 index f2962283..00000000 --- a/Challenge/2doo/forEachFilterIsNaN/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -const inputArray = [1, 40, "라매", "개발자", 51.5, "a", 88]; - -// write your codes - -const answer = inputArray.filter((n) => !isNaN(n)); -console.log(answer); diff --git a/Challenge/2doo/forEachMap/README.md b/Challenge/2doo/forEachMap/README.md deleted file mode 100644 index d0e84215..00000000 --- a/Challenge/2doo/forEachMap/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# forEachReduce - -## 설명 - -forEach 메소드를 사용해서 배열의 각 원소 끝에 '%'를 붙인 문자열 배열을 출력하세요 - -## Expected Output - -[ '100%', '10%', '20%', '40%' ] diff --git a/Challenge/2doo/forEachMap/solve.js b/Challenge/2doo/forEachMap/solve.js deleted file mode 100644 index 3a8f5409..00000000 --- a/Challenge/2doo/forEachMap/solve.js +++ /dev/null @@ -1,10 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes - -let answer = []; -inputArray.forEach((n) => { - answer.push(`${n}%`); -}); - -console.log(answer); diff --git a/Challenge/2doo/forEachReduce/README.md b/Challenge/2doo/forEachReduce/README.md deleted file mode 100644 index 8f369ed9..00000000 --- a/Challenge/2doo/forEachReduce/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# forEachReduce - -## 설명 - -forEach 메소드를 사용해서 배열의 총 합을 출력하는 코드를 작성하세요 - -## Expected Output - -170 diff --git a/Challenge/2doo/forEachReduce/solve.js b/Challenge/2doo/forEachReduce/solve.js deleted file mode 100644 index a6d87a98..00000000 --- a/Challenge/2doo/forEachReduce/solve.js +++ /dev/null @@ -1,11 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes - -let answer = 0; - -inputArray.forEach((n) => { - answer += n; -}); - -console.log(answer); diff --git a/Challenge/2doo/mapAddPercent/README.md b/Challenge/2doo/mapAddPercent/README.md deleted file mode 100644 index 4156a2f9..00000000 --- a/Challenge/2doo/mapAddPercent/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -map 메소드를 사용해 배열 각각 숫자 뒤에 %를 붙인 문자열을 만드세요 - -## Expected Output - -['100%', '10%', '20%', '40%'] diff --git a/Challenge/2doo/mapAddPercent/solve.js b/Challenge/2doo/mapAddPercent/solve.js deleted file mode 100644 index 06841059..00000000 --- a/Challenge/2doo/mapAddPercent/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes - -const answer = inputArray.map((n) => `${n}%`); -console.log(answer); diff --git a/Challenge/2doo/mapAppendOrder/README.md b/Challenge/2doo/mapAppendOrder/README.md deleted file mode 100644 index fccb0d1a..00000000 --- a/Challenge/2doo/mapAppendOrder/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# 문제제목 - -## 설명 - -배열의 값을 name 프로퍼티에 넣고 몇번째 원소인지를 order에 넣은 객체의 배열을 출력하세요 - -## Expected Output - -[ - { name: '홍길동', order: 1 }, - { name: '둘리', order: 2 }, - { name: '루피', order: 3 } -] diff --git a/Challenge/2doo/mapAppendOrder/solve.js b/Challenge/2doo/mapAppendOrder/solve.js deleted file mode 100644 index 118d0aa0..00000000 --- a/Challenge/2doo/mapAppendOrder/solve.js +++ /dev/null @@ -1,10 +0,0 @@ -const inputArray = ["홍길동", "둘리", "루피"]; - -// write your codes - -const answer = inputArray.map((name, idx) => ({ - name, - order: idx + 1, -})); - -console.log(answer); diff --git a/Challenge/2doo/reduceMaxValueNIndex/README.md b/Challenge/2doo/reduceMaxValueNIndex/README.md deleted file mode 100644 index 02a22b52..00000000 --- a/Challenge/2doo/reduceMaxValueNIndex/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -reduce 메소드를 사용해 최댓값의 값을 maxValue에, 해당 값의 index를 idx에 넣은 객체를 출력하세요 - -## Expected Output - -{ maxValue: 85, idx: 7 }. diff --git a/Challenge/2doo/reduceMaxValueNIndex/solve.js b/Challenge/2doo/reduceMaxValueNIndex/solve.js deleted file mode 100644 index 3f74e449..00000000 --- a/Challenge/2doo/reduceMaxValueNIndex/solve.js +++ /dev/null @@ -1,16 +0,0 @@ -const inputArray = [3, 29, 38, 12, 57, 74, 40, 85, 61]; - -// write your codes - -const answer = inputArray.reduce( - (acc, n, idx) => { - if (n < acc.maxValue) { - return acc; - } - - return { maxValue: n, idx }; - }, - { maxValue: -1, idx: -1 } -); - -console.log(answer); diff --git a/Challenge/2doo/reduceNameNickname/README.md b/Challenge/2doo/reduceNameNickname/README.md deleted file mode 100644 index aeaf5b31..00000000 --- a/Challenge/2doo/reduceNameNickname/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -입력받은 객채배열의 nickname을 key, name을 value로 하는 객체를 출력하세요 - -## Expected Output - -{ hong: '홍길동', '2li': '둘리', '1Cin': '오스트랄로피테쿠스' } diff --git a/Challenge/2doo/reduceNameNickname/solve.js b/Challenge/2doo/reduceNameNickname/solve.js deleted file mode 100644 index 761a0842..00000000 --- a/Challenge/2doo/reduceNameNickname/solve.js +++ /dev/null @@ -1,26 +0,0 @@ -const inputArray = [ - { - name: "홍길동", - nickname: "hong", - }, - { - name: "둘리", - nickname: "2li", - }, - { - name: "오스트랄로피테쿠스", - nickname: "1Cin", - }, -]; - -// write your codes - -const answer = inputArray.reduce( - (acc, obj) => ({ - ...acc, - [obj.nickname]: obj.name, - }), - {} -); - -console.log(answer); diff --git a/Challenge/2doo/reduceSum/README.md b/Challenge/2doo/reduceSum/README.md deleted file mode 100644 index 8c607eb2..00000000 --- a/Challenge/2doo/reduceSum/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -reduce 메소드를 사용해서 배열의 모든 수의 합을 구하세요. - -## Expected Output - -106 diff --git a/Challenge/2doo/reduceSum/solve.js b/Challenge/2doo/reduceSum/solve.js deleted file mode 100644 index 809151e2..00000000 --- a/Challenge/2doo/reduceSum/solve.js +++ /dev/null @@ -1,7 +0,0 @@ -const inputArray = [10, 3, 20, 5, 8, 60]; - -// write your codes - -const answer = inputArray.reduce((acc, n) => acc + n, 0); - -console.log(answer); diff --git a/Challenge/2doo/sortByPrice/README.md b/Challenge/2doo/sortByPrice/README.md deleted file mode 100644 index b1ccf70e..00000000 --- a/Challenge/2doo/sortByPrice/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 - -## Expected Output - -[ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 } -] diff --git a/Challenge/2doo/sortByPrice/solve.js b/Challenge/2doo/sortByPrice/solve.js deleted file mode 100644 index 5cf055b7..00000000 --- a/Challenge/2doo/sortByPrice/solve.js +++ /dev/null @@ -1,24 +0,0 @@ -const inputArray = [ - { - name: "사과", - price: 1000, - }, - { - name: "수박", - price: 5000, - }, - { - name: "당근", - price: 2000, - }, - { - name: "참외", - price: 10000, - }, -]; - -// write your codes - -const answer = inputArray.sort((a, b) => a.price - b.price); - -console.log(answer); diff --git a/Challenge/2doo/sortByPriceAndQuantity/README.md b/Challenge/2doo/sortByPriceAndQuantity/README.md deleted file mode 100644 index 41cd5c95..00000000 --- a/Challenge/2doo/sortByPriceAndQuantity/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 -만약 price가 같다면 quantity기준으로 오름차순 정렬하세요 - -## Expected Output - -[ - { name: '사과', price: 1000, quantity: 2 }, - { name: '오이', price: 2000, quantity: 49 }, - { name: '당근', price: 2000, quantity: 50 }, - { name: '참외', price: 5000, quantity: 10 }, - { name: '수박', price: 5000, quantity: 20 } -] diff --git a/Challenge/2doo/sortByPriceAndQuantity/solve.js b/Challenge/2doo/sortByPriceAndQuantity/solve.js deleted file mode 100644 index 70de4680..00000000 --- a/Challenge/2doo/sortByPriceAndQuantity/solve.js +++ /dev/null @@ -1,35 +0,0 @@ -const inputArray = [ - { - name: "사과", - price: 1000, - quantity: 2, - }, - { - name: "수박", - price: 5000, - quantity: 20, - }, - { - name: "당근", - price: 2000, - quantity: 50, - }, - { - name: "참외", - price: 5000, - quantity: 10, - }, - { - name: "오이", - price: 2000, - quantity: 49, - }, -]; - -// write your codes - -const answer = inputArray.sort( - (a, b) => a.price - b.price || a.quantity - b.quantity -); - -console.log(answer); diff --git a/Challenge/2o1da/forEachFilter/README.md b/Challenge/2o1da/forEachFilter/README.md deleted file mode 100644 index d826e8e6..00000000 --- a/Challenge/2o1da/forEachFilter/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소중 40 이상인 수만 뽑아 배열을 만드세요. - -## Expected Output - -[ 100, 40 ] diff --git a/Challenge/2o1da/forEachFilter/solve.js b/Challenge/2o1da/forEachFilter/solve.js deleted file mode 100644 index 960d8e36..00000000 --- a/Challenge/2o1da/forEachFilter/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes - -const answer = inputArray.filter(function (element) { - return element >= 40; -}); - -console.log(answer); diff --git a/Challenge/BB-choi/everyArray/solve.js b/Challenge/BB-choi/everyArray/solve.js deleted file mode 100644 index e601c63e..00000000 --- a/Challenge/BB-choi/everyArray/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -function solution(inputArray) { - let result = inputArray.every((cur) => cur % 2 === 0); - return result; -} - -exports.solution = solution; diff --git a/Challenge/BB-choi/everyArray/solve.test.js b/Challenge/BB-choi/everyArray/solve.test.js deleted file mode 100644 index b03e4791..00000000 --- a/Challenge/BB-choi/everyArray/solve.test.js +++ /dev/null @@ -1,21 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [2, 4, 6, 8, 10], - answer: true, -}; - -const test2 = { - input: [2, 3, 6, 8, 10], - answer: false, -}; - -describe('everyArray', () => { - test('모두 짝수면 true여야 한다.', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - - test('홀수가 있으면 false여야 한다.', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); -}); diff --git a/Challenge/BB-choi/expDivOdd/README.md b/Challenge/BB-choi/expDivOdd/README.md deleted file mode 100644 index c07ab10b..00000000 --- a/Challenge/BB-choi/expDivOdd/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -제곱한 후 3으로 나눈 나머지가 홀수인 것 을 뽑은 배열의 총 합을 구하세요. diff --git a/Challenge/BB-choi/expDivOdd/solve.js b/Challenge/BB-choi/expDivOdd/solve.js deleted file mode 100644 index cec09094..00000000 --- a/Challenge/BB-choi/expDivOdd/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -function solution(inputArray) { - const answer = inputArray - .map((el) => el ** 2) - .filter((el) => el % 3) - .reduce((acc, cur) => acc + cur); - return answer; -} - -exports.solution = solution; diff --git a/Challenge/BB-choi/expDivOdd/solve.test.js b/Challenge/BB-choi/expDivOdd/solve.test.js deleted file mode 100644 index ca37fcc3..00000000 --- a/Challenge/BB-choi/expDivOdd/solve.test.js +++ /dev/null @@ -1,21 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 7, 3, 4, 6], - answer: 66, -}; - -const test2 = { - input: [2, 3, 6, 8, 10], - answer: 168, -}; - -describe('everyArray', () => { - test('1, 7, 3, 4, 6', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - - test('2, 3, 6, 8, 10', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); -}); diff --git a/Challenge/BB-choi/forEachFilter/README.md b/Challenge/BB-choi/forEachFilter/README.md deleted file mode 100644 index 6dcbc7c2..00000000 --- a/Challenge/BB-choi/forEachFilter/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소중 40 이상인 수만 뽑아 배열을 만드세요. diff --git a/Challenge/BB-choi/forEachFilter/solve.js b/Challenge/BB-choi/forEachFilter/solve.js deleted file mode 100644 index 5d30e2db..00000000 --- a/Challenge/BB-choi/forEachFilter/solve.js +++ /dev/null @@ -1,14 +0,0 @@ -// write your codes -function solution(inputArray) { - // let answer = inputArray.filter((el) => el >= 40); - - let answer = []; - inputArray.forEach((el) => { - if (el >= 40) { - answer.push(el); - } - }); - return answer; -} - -exports.solution = solution; diff --git a/Challenge/BB-choi/forEachFilter/solve.test.js b/Challenge/BB-choi/forEachFilter/solve.test.js deleted file mode 100644 index 3d73b25c..00000000 --- a/Challenge/BB-choi/forEachFilter/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: [100, 40], -}; - -describe('forEachFilter', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/BB-choi/forEachReduce/README.md b/Challenge/BB-choi/forEachReduce/README.md deleted file mode 100644 index a984df2d..00000000 --- a/Challenge/BB-choi/forEachReduce/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -forEach 메소드를 사용해서 배열의 총 합을 출력하는 코드를 작성하세요 diff --git a/Challenge/BB-choi/forEachReduce/solve.js b/Challenge/BB-choi/forEachReduce/solve.js deleted file mode 100644 index d0ae9941..00000000 --- a/Challenge/BB-choi/forEachReduce/solve.js +++ /dev/null @@ -1,12 +0,0 @@ -// write your codes -function solution(inputArray) { - let sum = 0; - - inputArray.forEach((cur) => { - sum += cur; - }); - - return sum; -} - -exports.solution = solution; diff --git a/Challenge/BB-choi/forEachReduce/solve.test.js b/Challenge/BB-choi/forEachReduce/solve.test.js deleted file mode 100644 index 397e4b50..00000000 --- a/Challenge/BB-choi/forEachReduce/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: 170, -}; - -const test2 = { - input: [120, -20, -30, 0, 15], - answer: 85, -}; - -const test3 = { - input: [-10, -20, -30], - answer: -60, -}; - -describe('forEachReduce', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2: 음수가 포함된 계산', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3: 음수만 존재하는 계산', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/BB-choi/reduceMaxValueNIndex/README.md b/Challenge/BB-choi/reduceMaxValueNIndex/README.md deleted file mode 100644 index 965bdec6..00000000 --- a/Challenge/BB-choi/reduceMaxValueNIndex/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -reduce 메소드를 사용해 최댓값의 값을 maxValue에, 해당 값의 index를 idx에 넣은 객체를 출력하세요 diff --git a/Challenge/BB-choi/reduceMaxValueNIndex/solve.js b/Challenge/BB-choi/reduceMaxValueNIndex/solve.js deleted file mode 100644 index 85b7112a..00000000 --- a/Challenge/BB-choi/reduceMaxValueNIndex/solve.js +++ /dev/null @@ -1,23 +0,0 @@ -// write your codes -function solution(inputArray) { - let result = inputArray.reduce( - (acc, el, idx) => { - if (acc.maxValue < el) { - return { - maxValue: el, - idx, - }; - } else { - return acc; - } - }, - { - maxValue: Number.MIN_SAFE_INTEGER, - idx: 0, - } - ); - - return result; -} - -exports.solution = solution; diff --git a/Challenge/BB-choi/reduceMaxValueNIndex/solve.test.js b/Challenge/BB-choi/reduceMaxValueNIndex/solve.test.js deleted file mode 100644 index 0daef5b8..00000000 --- a/Challenge/BB-choi/reduceMaxValueNIndex/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [3, 29, 38, 12, 57, 74, 40, 85, 61], - answer: { maxValue: 85, idx: 7 }, -}; - -const test2 = { - input: [-24, -2, -13, -49, -999999, -17], - answer: { maxValue: -2, idx: 1 }, -}; -//최댓값이 중복일 때에는 먼저 나온 최댓값의 인덱스를 유지하도록 설정하였습니다. -const test3 = { - input: [2, -20, 21, -874, 99, -16, -29, 99], - answer: { maxValue: 99, idx: 4 }, -}; - -describe('reduceMaxValueNIndex', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2 : 음수 테스트', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3 : 중복된 최대값 테스트', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/BB-choi/reduceNameNickname/README.md b/Challenge/BB-choi/reduceNameNickname/README.md deleted file mode 100644 index b6920e05..00000000 --- a/Challenge/BB-choi/reduceNameNickname/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -입력받은 객채배열의 nickname을 key, name을 value로 하는 객체를 출력하세요 diff --git a/Challenge/BB-choi/reduceNameNickname/solve.js b/Challenge/BB-choi/reduceNameNickname/solve.js deleted file mode 100644 index 74ed18a5..00000000 --- a/Challenge/BB-choi/reduceNameNickname/solve.js +++ /dev/null @@ -1,13 +0,0 @@ -// write your codes -function solution(inputArray) { - let result = inputArray.reduce((acc, cur) => { - return { - ...acc, - // key값이 동적으로 결정될때 [] - [cur.nickname]: cur.name, - }; - }, {}); - return result; -} - -exports.solution = solution; diff --git a/Challenge/BB-choi/reduceNameNickname/solve.test.js b/Challenge/BB-choi/reduceNameNickname/solve.test.js deleted file mode 100644 index 67b74529..00000000 --- a/Challenge/BB-choi/reduceNameNickname/solve.test.js +++ /dev/null @@ -1,25 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '홍길동', - nickname: 'hong', - }, - { - name: '둘리', - nickname: '2li', - }, - { - name: '오스트랄로피테쿠스', - nickname: '1Cin', - }, - ], - answer: { hong: '홍길동', '2li': '둘리', '1Cin': '오스트랄로피테쿠스' }, -}; - -describe('reduceNameNickname', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/BB-choi/reduceSum/README.md b/Challenge/BB-choi/reduceSum/README.md deleted file mode 100644 index 8c607eb2..00000000 --- a/Challenge/BB-choi/reduceSum/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -reduce 메소드를 사용해서 배열의 모든 수의 합을 구하세요. - -## Expected Output - -106 diff --git a/Challenge/BB-choi/reduceSum/solve.js b/Challenge/BB-choi/reduceSum/solve.js deleted file mode 100644 index 40e37ded..00000000 --- a/Challenge/BB-choi/reduceSum/solve.js +++ /dev/null @@ -1,7 +0,0 @@ -// write your codes -function solution(inputArray) { - let result = inputArray.reduce((acc, cur) => acc + cur, 0); - return result; -} - -exports.solution = solution; diff --git a/Challenge/BB-choi/reduceSum/solve.test.js b/Challenge/BB-choi/reduceSum/solve.test.js deleted file mode 100644 index 046c40cb..00000000 --- a/Challenge/BB-choi/reduceSum/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [10, 3, 20, 5, 8, 60], - answer: 106, -}; - -describe('reduceSum', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/JM Lim/filterOdd/solve.js b/Challenge/JM Lim/filterOdd/solve.js deleted file mode 100644 index a6895962..00000000 --- a/Challenge/JM Lim/filterOdd/solve.js +++ /dev/null @@ -1,7 +0,0 @@ -const inputArray = [1, 5, 6, 7 ,9, 3, 14]; - -const answer = inputArray.filter(e => { - return (e%2) == 1 -}) - -console.log(answer); \ No newline at end of file diff --git a/Challenge/JM Lim/forEachFilter/README.md b/Challenge/JM Lim/forEachFilter/README.md deleted file mode 100644 index 6dcbc7c2..00000000 --- a/Challenge/JM Lim/forEachFilter/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소중 40 이상인 수만 뽑아 배열을 만드세요. diff --git a/Challenge/JM Lim/forEachFilter/solve.js b/Challenge/JM Lim/forEachFilter/solve.js deleted file mode 100644 index a8f983fc..00000000 --- a/Challenge/JM Lim/forEachFilter/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -const answer = []; - -inputArray.forEach(e => { - e >= 40 ? answer.push(e) : '' -}) - -console.log(answer); \ No newline at end of file diff --git a/Challenge/JM Lim/forEachFilterIsNaN/README.md b/Challenge/JM Lim/forEachFilterIsNaN/README.md deleted file mode 100644 index 570c030e..00000000 --- a/Challenge/JM Lim/forEachFilterIsNaN/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소중 숫자인 원소만 뽑아 배열을 만드세요. diff --git a/Challenge/JM Lim/forEachFilterIsNaN/solve.js b/Challenge/JM Lim/forEachFilterIsNaN/solve.js deleted file mode 100644 index 72205624..00000000 --- a/Challenge/JM Lim/forEachFilterIsNaN/solve.js +++ /dev/null @@ -1,11 +0,0 @@ -const inputArray = [-3, -2, -1, 0, 1, 2, 3, '1', 'jmjmjm']; - -const answer = []; - -inputArray.forEach(e => { - if (Number.isInteger(e)) { - answer.push(e) - } -}) -console.log(answer); - diff --git a/Challenge/JM Lim/forEachMap/README.md b/Challenge/JM Lim/forEachMap/README.md deleted file mode 100644 index 1e8e03c8..00000000 --- a/Challenge/JM Lim/forEachMap/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -forEach 메소드를 사용해서 배열의 각 원소 끝에 '%'를 붙인 문자열 배열을 출력하세요 diff --git a/Challenge/JM Lim/forEachMap/solve.js b/Challenge/JM Lim/forEachMap/solve.js deleted file mode 100644 index 09fc7b9c..00000000 --- a/Challenge/JM Lim/forEachMap/solve.js +++ /dev/null @@ -1,10 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -const answer = []; - -inputArray.forEach(e => { - let val = e+''; - answer.push(val.concat('%')) -}) - -console.log(answer); \ No newline at end of file diff --git a/Challenge/JM Lim/forEachReduce/README.md b/Challenge/JM Lim/forEachReduce/README.md deleted file mode 100644 index a984df2d..00000000 --- a/Challenge/JM Lim/forEachReduce/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -forEach 메소드를 사용해서 배열의 총 합을 출력하는 코드를 작성하세요 diff --git a/Challenge/JM Lim/forEachReduce/solve.js b/Challenge/JM Lim/forEachReduce/solve.js deleted file mode 100644 index 41d75ad5..00000000 --- a/Challenge/JM Lim/forEachReduce/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -const inputArray = [120, -20, -30, 0, 15]; - -let answer = ''; - -answer = inputArray.reduce((a, c) => { - return a+c -}, 0) - -console.log(answer); diff --git a/Challenge/JongHoonSon/everyArray/README.md b/Challenge/JongHoonSon/everyArray/README.md deleted file mode 100644 index 442558f6..00000000 --- a/Challenge/JongHoonSon/everyArray/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -every를 이용해서 모든 원소가 짝수인지 아닌지를 판별하세요 - -## Expected Output - -true \ No newline at end of file diff --git a/Challenge/JongHoonSon/everyArray/solve.js b/Challenge/JongHoonSon/everyArray/solve.js deleted file mode 100644 index 02c30320..00000000 --- a/Challenge/JongHoonSon/everyArray/solve.js +++ /dev/null @@ -1,7 +0,0 @@ -function solution(inputArray) { - const isEven = (el) => el % 2 === 0; - - return inputArray.every(isEven); -} - -exports.solution = solution; diff --git a/Challenge/JongHoonSon/everyArray/solve.test.js b/Challenge/JongHoonSon/everyArray/solve.test.js deleted file mode 100644 index b03e4791..00000000 --- a/Challenge/JongHoonSon/everyArray/solve.test.js +++ /dev/null @@ -1,21 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [2, 4, 6, 8, 10], - answer: true, -}; - -const test2 = { - input: [2, 3, 6, 8, 10], - answer: false, -}; - -describe('everyArray', () => { - test('모두 짝수면 true여야 한다.', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - - test('홀수가 있으면 false여야 한다.', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); -}); diff --git a/Challenge/JongHoonSon/expDivOdd/README.md b/Challenge/JongHoonSon/expDivOdd/README.md deleted file mode 100644 index c07ab10b..00000000 --- a/Challenge/JongHoonSon/expDivOdd/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -제곱한 후 3으로 나눈 나머지가 홀수인 것 을 뽑은 배열의 총 합을 구하세요. diff --git a/Challenge/JongHoonSon/expDivOdd/solve.js b/Challenge/JongHoonSon/expDivOdd/solve.js deleted file mode 100644 index ad016efb..00000000 --- a/Challenge/JongHoonSon/expDivOdd/solve.js +++ /dev/null @@ -1,11 +0,0 @@ -function solution(inputArray) { - - const pow = inputArray.map(el => Math.pow(el, 2)); - - const result = pow.filter((el) => (el%3)%2 === 1); - - return result.reduce((prev, curr) => prev + curr); -} - -exports.solution = solution; - diff --git a/Challenge/JongHoonSon/expDivOdd/solve.test.js b/Challenge/JongHoonSon/expDivOdd/solve.test.js deleted file mode 100644 index ca37fcc3..00000000 --- a/Challenge/JongHoonSon/expDivOdd/solve.test.js +++ /dev/null @@ -1,21 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 7, 3, 4, 6], - answer: 66, -}; - -const test2 = { - input: [2, 3, 6, 8, 10], - answer: 168, -}; - -describe('everyArray', () => { - test('1, 7, 3, 4, 6', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - - test('2, 3, 6, 8, 10', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); -}); diff --git a/Challenge/JongHoonSon/figureSkating/README.md b/Challenge/JongHoonSon/figureSkating/README.md deleted file mode 100644 index 54b85fbd..00000000 --- a/Challenge/JongHoonSon/figureSkating/README.md +++ /dev/null @@ -1,35 +0,0 @@ -## 설명 - -점수를 계산해서 점수가 높은 순으로 name과 score를 가진 객체의 배열을 출력하세요. -단 실격자는 출력하지 않습니다. - -### 피겨 점수 기준 - -피겨 점수는 ‘기술점수(TES)+예술점수(PCS)-감점’으로 구성된다. - -기술점수(TES·Total Element Score)는 기본점수에 수행점수(GOE·Grade Of Execution)를 합산해 도출한다. - -심판은 선수들이 점프와 스핀의 기술을 제대로 수행하는지 살핀다. 점프에선 회전수를 제대로 지켰는지, 에지를 제대로 사용했는지에 따라 ‘롱 에지’(잘못된 에지 사용)나 ‘다운그레이드’(난이도 하락), ‘어텐션’(주의) 등의 판정을 내린다. 스핀과 스텝시퀀스에 붙는 레벨(1~4)도 이들이 결정한다. - -9명의 심판은 선수들이 미리 제출한 연기 구성표를 기준으로 과제별 기본점수에서 가·감점을 한다. 이른바 ‘GOE’라 불리는 수행점수다. - -쇼트프로그램은 점프 3개, 스핀 3개, 스텝 1개의 수행과제가 반드시 포함돼야 한다. - -예술점수(PCS·Total Program Component Score)는 프로그램의 완성도에 영향을 미치는 스케이팅 기술·동작의 연결·연기·안무·곡 해석 등 5가지를 평가한다. - -마지막으로 감점이 반영된다. 감점 항목이 발생할 때마다 1점씩 감점된다. - -원문보기: -http://news.khan.co.kr/kh_news/khan_art_view.html?art_id=201402172146545#csidx6329aebb6a02152bca884614a7f0544 - -### 판정 기준 - -- 점수가 가장 높은 사람이 1등이다. -- 점수는 기술점수(TES) + 예술점수(PCS) - 감점 으로 구성된다. -- 기술점수(TES)는 기본점수 \* 수행점수(GOE)를 합산해 도출한다. -- 필수 수행과제를 수행하지 못했을 시 실격이다. - -### 필수 수행과제 - -- 쇼트프로그램은 점프 3개, 스핀 3개, 스텝 1개의 수행과제가 반드시 포함돼야 한다. -- 점프와 스핀을 4번 이상 수행했을 시 가장 잘한 3개를 기준으로 한다. diff --git a/Challenge/JongHoonSon/figureSkating/solve.js b/Challenge/JongHoonSon/figureSkating/solve.js deleted file mode 100644 index 632d77bd..00000000 --- a/Challenge/JongHoonSon/figureSkating/solve.js +++ /dev/null @@ -1,58 +0,0 @@ -// 기본 점수 -const baseScore = { - jump: 10, - spin: 20, - step: 15, -}; - -const baseAssignment = { - jump: 3, - spin: 3, - step: 1, -}; - -// write your codes - -function solution(inputArray) { - - resultArray = []; - - inputArray.forEach((obj) => { - - // 수행과제 수행 여부 판단 - const jumpCondition = (obj.goe.jump.length >= baseAssignment.jump); - const spinCondition = (obj.goe.spin.length >= baseAssignment.spin); - const stepCondition = (obj.goe.step.length >= baseAssignment.step); - - if (jumpCondition && spinCondition && stepCondition) { - // 점수 정렬 - obj.goe.jump.sort((a,b) => b-a); - obj.goe.spin.sort((a,b) => b-a); - obj.goe.step.sort((a,b) => b-a); - - // 기술점수(TES)는 기본점수 \* 수행점수(GOE)를 합산 출력 - let tes = 0; - for(let i=0; i { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/JongHoonSon/filterAge/README.md b/Challenge/JongHoonSon/filterAge/README.md deleted file mode 100644 index 873a15c1..00000000 --- a/Challenge/JongHoonSon/filterAge/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소의 age가 30이상 50미만인 사람만 있는 객체의 배열을 만드세요 diff --git a/Challenge/JongHoonSon/filterAge/solve.js b/Challenge/JongHoonSon/filterAge/solve.js deleted file mode 100644 index 2fcaeeb9..00000000 --- a/Challenge/JongHoonSon/filterAge/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -// write your codes -function solution(inputArray) { - - const result = inputArray.filter(input => input.age >= 30 && input.age < 50) - - return result; -} - -exports.solution = solution; diff --git a/Challenge/JongHoonSon/filterAge/solve.test.js b/Challenge/JongHoonSon/filterAge/solve.test.js deleted file mode 100644 index b9081601..00000000 --- a/Challenge/JongHoonSon/filterAge/solve.test.js +++ /dev/null @@ -1,32 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '영미', - age: 25, - }, - { - name: '일미', - age: 35, - }, - { - name: '이미', - age: 45, - }, - { - name: '삼미', - age: 55, - }, - ], - answer: [ - { name: '일미', age: 35 }, - { name: '이미', age: 45 }, - ], -}; - -describe('filterAge', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/JongHoonSon/filterIntersection/README.md b/Challenge/JongHoonSon/filterIntersection/README.md deleted file mode 100644 index d7c9ad39..00000000 --- a/Challenge/JongHoonSon/filterIntersection/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# 문제제목 - -## 설명 - -두 배열의 교집합을 출력하세요! diff --git a/Challenge/JongHoonSon/filterIntersection/solve.js b/Challenge/JongHoonSon/filterIntersection/solve.js deleted file mode 100644 index 875e1494..00000000 --- a/Challenge/JongHoonSon/filterIntersection/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -function solution(inputArray1, inputArray2) { - - const result = inputArray1.filter(el => inputArray2.indexOf(el) !== -1); - - return result; -} - -exports.solution = solution; diff --git a/Challenge/JongHoonSon/filterIntersection/solve.test.js b/Challenge/JongHoonSon/filterIntersection/solve.test.js deleted file mode 100644 index 576cbc86..00000000 --- a/Challenge/JongHoonSon/filterIntersection/solve.test.js +++ /dev/null @@ -1,15 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: { - A: [1, 2, 3, 4, 5], - B: [3, 4, 5, 6, 7], - }, - answer: [3, 4, 5], -}; - -describe('filterIntersection', () => { - test('test1', () => { - expect(solution(test1.input.A, test1.input.B)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/JongHoonSon/filterOdd/README.md b/Challenge/JongHoonSon/filterOdd/README.md deleted file mode 100644 index cf9eda79..00000000 --- a/Challenge/JongHoonSon/filterOdd/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -홀수만 뽑아 배열로 만드세요 diff --git a/Challenge/JongHoonSon/filterOdd/solve.js b/Challenge/JongHoonSon/filterOdd/solve.js deleted file mode 100644 index 4d0711ee..00000000 --- a/Challenge/JongHoonSon/filterOdd/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -// write your codes -function solution(inputArray) { - - const result = inputArray.filter(el => el %2 === 1); - - return result; -} - -exports.solution = solution; diff --git a/Challenge/JongHoonSon/findWord/README.md b/Challenge/JongHoonSon/findWord/README.md deleted file mode 100644 index 8ef123f4..00000000 --- a/Challenge/JongHoonSon/findWord/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -용가리라는 단어가 있으면 true 없으면 false를 출력 - -## Expected Output - -true diff --git a/Challenge/JongHoonSon/findWord/solve.js b/Challenge/JongHoonSon/findWord/solve.js deleted file mode 100644 index 45a0c1cd..00000000 --- a/Challenge/JongHoonSon/findWord/solve.js +++ /dev/null @@ -1,14 +0,0 @@ -// write your codes -function solution(inputArray) { - let isIn = false; - - inputArray.forEach(el => { - if (el === '용가리') { - isIn = true; - } - }); - - return isIn; -} - -exports.solution = solution; diff --git a/Challenge/JongHoonSon/findWord/solve.test.js b/Challenge/JongHoonSon/findWord/solve.test.js deleted file mode 100644 index 804114f6..00000000 --- a/Challenge/JongHoonSon/findWord/solve.test.js +++ /dev/null @@ -1,26 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: ['잠', '자', '고', '싶', '다', '용가리'], - answer: true, -}; -const test2 = { - input: ['맛있는', '용가리치킨'], - answer: false, -}; -const test3 = { - input: ['고질라', '용가리 ', '울트라맨'], - answer: false, -}; - -describe('findWord', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); \ No newline at end of file diff --git a/Challenge/JongHoonSon/forEachFilter/README.md b/Challenge/JongHoonSon/forEachFilter/README.md deleted file mode 100644 index 6dcbc7c2..00000000 --- a/Challenge/JongHoonSon/forEachFilter/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소중 40 이상인 수만 뽑아 배열을 만드세요. diff --git a/Challenge/JongHoonSon/forEachFilter/solve.js b/Challenge/JongHoonSon/forEachFilter/solve.js deleted file mode 100644 index 79608f05..00000000 --- a/Challenge/JongHoonSon/forEachFilter/solve.js +++ /dev/null @@ -1,13 +0,0 @@ -// write your codes -function solution(inputArray) { - const result = []; - inputArray.forEach(el => { - if(el >= 30) { - result.push(el); - } - }); - - return result; -} - -exports.solution = solution; diff --git a/Challenge/JongHoonSon/forEachFilter/solve.test.js b/Challenge/JongHoonSon/forEachFilter/solve.test.js deleted file mode 100644 index 3d73b25c..00000000 --- a/Challenge/JongHoonSon/forEachFilter/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: [100, 40], -}; - -describe('forEachFilter', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/JongHoonSon/forEachFilterIsNaN/README.md b/Challenge/JongHoonSon/forEachFilterIsNaN/README.md deleted file mode 100644 index 570c030e..00000000 --- a/Challenge/JongHoonSon/forEachFilterIsNaN/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소중 숫자인 원소만 뽑아 배열을 만드세요. diff --git a/Challenge/JongHoonSon/forEachFilterIsNaN/solve.js b/Challenge/JongHoonSon/forEachFilterIsNaN/solve.js deleted file mode 100644 index 9a72787e..00000000 --- a/Challenge/JongHoonSon/forEachFilterIsNaN/solve.js +++ /dev/null @@ -1,14 +0,0 @@ -// write your codes -function solution(inputArray) { - const result = []; - - inputArray.forEach(el => { - if(typeof(el) === 'number') { - result.push(el); - } - }) - - return result; -} - -exports.solution = solution; diff --git a/Challenge/JongHoonSon/forEachFilterIsNaN/solve.test.js b/Challenge/JongHoonSon/forEachFilterIsNaN/solve.test.js deleted file mode 100644 index d6e118bb..00000000 --- a/Challenge/JongHoonSon/forEachFilterIsNaN/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 40, '라매', '개발자', 51.5, 'a', 88], - answer: [1, 40, 51.5, 88], -}; - -const test2 = { - input: [1, 2, 3, '4', 5, '6'], - answer: [1, 2, 3, 5], -}; - -const test3 = { - input: [-3, -2, -1, 0, 1, 2, 3], - answer: [-3, -2, -1, 0, 1, 2, 3], -}; - -describe('forEachFilterIsNaN', () => { - test('test1: 숫자,문자 판별', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2: 문자로된 숫자 판별', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3: 음수 양수 포함', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); \ No newline at end of file diff --git a/Challenge/JongHoonSon/forEachMap/README.md b/Challenge/JongHoonSon/forEachMap/README.md deleted file mode 100644 index 1e8e03c8..00000000 --- a/Challenge/JongHoonSon/forEachMap/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -forEach 메소드를 사용해서 배열의 각 원소 끝에 '%'를 붙인 문자열 배열을 출력하세요 diff --git a/Challenge/JongHoonSon/forEachMap/solve.js b/Challenge/JongHoonSon/forEachMap/solve.js deleted file mode 100644 index 37bf2b35..00000000 --- a/Challenge/JongHoonSon/forEachMap/solve.js +++ /dev/null @@ -1,13 +0,0 @@ -// write your codes -function solution(inputArray) { - - const result = []; - - inputArray.forEach(el => { - result.push(el+'%'); - }); - - return result; -} - -exports.solution = solution; diff --git a/Challenge/JongHoonSon/forEachMap/solve.test.js b/Challenge/JongHoonSon/forEachMap/solve.test.js deleted file mode 100644 index de4868c6..00000000 --- a/Challenge/JongHoonSon/forEachMap/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: ['100%', '10%', '20%', '40%'], -}; - -describe('forEachMap', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/JongHoonSon/forEachReduce/README.md b/Challenge/JongHoonSon/forEachReduce/README.md deleted file mode 100644 index a984df2d..00000000 --- a/Challenge/JongHoonSon/forEachReduce/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -forEach 메소드를 사용해서 배열의 총 합을 출력하는 코드를 작성하세요 diff --git a/Challenge/JongHoonSon/forEachReduce/solve.js b/Challenge/JongHoonSon/forEachReduce/solve.js deleted file mode 100644 index 89473dbb..00000000 --- a/Challenge/JongHoonSon/forEachReduce/solve.js +++ /dev/null @@ -1,12 +0,0 @@ -// write your codes -function solution(inputArray) { - let sum = 0; - - inputArray.forEach(el => { - sum = sum+el; - }); - - return sum; -} - -exports.solution = solution; diff --git a/Challenge/JongHoonSon/forEachReduce/solve.test.js b/Challenge/JongHoonSon/forEachReduce/solve.test.js deleted file mode 100644 index 397e4b50..00000000 --- a/Challenge/JongHoonSon/forEachReduce/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: 170, -}; - -const test2 = { - input: [120, -20, -30, 0, 15], - answer: 85, -}; - -const test3 = { - input: [-10, -20, -30], - answer: -60, -}; - -describe('forEachReduce', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2: 음수가 포함된 계산', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3: 음수만 존재하는 계산', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/JongHoonSon/mapAddPercent/README.md b/Challenge/JongHoonSon/mapAddPercent/README.md deleted file mode 100644 index 75e73042..00000000 --- a/Challenge/JongHoonSon/mapAddPercent/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -map 메소드를 사용해 배열 각각 숫자 뒤에 %를 붙인 문자열을 만드세요 diff --git a/Challenge/JongHoonSon/mapAddPercent/solve.js b/Challenge/JongHoonSon/mapAddPercent/solve.js deleted file mode 100644 index f975c5c5..00000000 --- a/Challenge/JongHoonSon/mapAddPercent/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -// write your codes -function solution(inputArray) { - const result = inputArray.map(el => el+'%'); - - return result; -} - -exports.solution = solution; diff --git a/Challenge/JongHoonSon/mapAddPercent/solve.test.js b/Challenge/JongHoonSon/mapAddPercent/solve.test.js deleted file mode 100644 index dac1b3cc..00000000 --- a/Challenge/JongHoonSon/mapAddPercent/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: ['100%', '10%', '20%', '40%'], -}; - -describe('mapAddPercent', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/JongHoonSon/mapAppendOrder/README.md b/Challenge/JongHoonSon/mapAppendOrder/README.md deleted file mode 100644 index 1435623a..00000000 --- a/Challenge/JongHoonSon/mapAppendOrder/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열의 값을 name 프로퍼티에 넣고 몇번째 원소인지를 order에 넣은 객체의 배열을 출력하세요 diff --git a/Challenge/JongHoonSon/mapAppendOrder/solve.js b/Challenge/JongHoonSon/mapAppendOrder/solve.js deleted file mode 100644 index 768c1e6e..00000000 --- a/Challenge/JongHoonSon/mapAppendOrder/solve.js +++ /dev/null @@ -1,13 +0,0 @@ -// write your codes -function solution(inputArray) { - let count = 1; - const newArray = []; - - inputArray.forEach(element => { - newArray.push({name: element, order: count++}) - }); - - return newArray; -} - -exports.solution = solution; diff --git a/Challenge/JongHoonSon/mapAppendOrder/solve.test.js b/Challenge/JongHoonSon/mapAppendOrder/solve.test.js deleted file mode 100644 index e08db10c..00000000 --- a/Challenge/JongHoonSon/mapAppendOrder/solve.test.js +++ /dev/null @@ -1,16 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: ['홍길동', '둘리', '루피'], - answer: [ - { name: '홍길동', order: 1 }, - { name: '둘리', order: 2 }, - { name: '루피', order: 3 }, - ], -}; - -describe('mapAppendOrder', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/JongHoonSon/recommendAd/README.md b/Challenge/JongHoonSon/recommendAd/README.md deleted file mode 100644 index 132e8800..00000000 --- a/Challenge/JongHoonSon/recommendAd/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# 문제제목 - -사용자가 안 본 광고는? - -## 설명 - -유튜브는 사용자가 프리미엄 회원이 아닌 경우 영상 시작이나 중간에 광고가 나오도록 설정되어 있습니다. - -[2020년 유튜브 인기 광고](https://www.thinkwithgoogle.com/intl/ko-kr/marketing-strategies/video/%EB%8C%80%ED%95%9C%EB%AF%BC%EA%B5%AD-youtube-%EC%9D%B8%EA%B8%B0-%EA%B4%91%EA%B3%A0%EC%98%81%EC%83%81-2020%EB%85%84-%EC%97%B0%EB%A7%90%EA%B2%B0%EC%82%B0/)는 총 열 편으로, 사용자의 일주일간 광고 시청 이력을 통해 해당 사용자가 일주일 동안 안 본 광고를 그 다음주에 노출함으로써 광고들이 사용자에게 골고루 노출되길 원합니다. - -유저가 매일 유튜브에 접속하여 하루 한 편 이상의 광고를 보았다고 가정할 때, 이 유저가 안 본 광고는 무엇인지 출력해주세요. - -## Expected Output - -[ '동원F&B' ] diff --git a/Challenge/JongHoonSon/recommendAd/solve.js b/Challenge/JongHoonSon/recommendAd/solve.js deleted file mode 100644 index bb980bfb..00000000 --- a/Challenge/JongHoonSon/recommendAd/solve.js +++ /dev/null @@ -1,27 +0,0 @@ -const userHistory = [ - { date: '2020-11-03', watched: ['KT', 'BBQ'] }, - { date: '2020-11-04', watched: ['정관장', 'KT', '딱좋은데이'] }, - { date: '2020-11-05', watched: ['그랑사가', '농심'] }, - { date: '2020-11-06', watched: ['BBQ'] }, - { date: '2020-11-07', watched: ['쌍용자동차', 'BBQ', 'KT'] }, - { date: '2020-11-08', watched: ['켈로그코리아', '빙그레'] }, - { date: '2020-11-09', watched: ['KT', '그랑사가', '빙그레'] }, -]; - -// write your codes -function solution(inputArray) { - inputArrayCopy = [...inputArray]; - userHistory.forEach(element => { - element.watched.forEach(ad => { - let index; - if(inputArray.includes(ad)) { - index = inputArray.indexOf(ad); - inputArrayCopy[index] = ''; - } - }) - }); - - return inputArrayCopy.filter(el => el); -} - -exports.solution = solution; diff --git a/Challenge/JongHoonSon/recommendAd/solve.test.js b/Challenge/JongHoonSon/recommendAd/solve.test.js deleted file mode 100644 index 8a0f6464..00000000 --- a/Challenge/JongHoonSon/recommendAd/solve.test.js +++ /dev/null @@ -1,23 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - '동원F&B', - '정관장', - 'KT', - 'BBQ', - '그랑사가', - '농심', - '딱좋은데이', - '빙그레', - '쌍용자동차', - '켈로그코리아', - ], - answer: ['동원F&B'], -}; - -describe('recommendAd', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/JongHoonSon/reduceMaxValueNIndex/README.md b/Challenge/JongHoonSon/reduceMaxValueNIndex/README.md deleted file mode 100644 index 965bdec6..00000000 --- a/Challenge/JongHoonSon/reduceMaxValueNIndex/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -reduce 메소드를 사용해 최댓값의 값을 maxValue에, 해당 값의 index를 idx에 넣은 객체를 출력하세요 diff --git a/Challenge/JongHoonSon/reduceMaxValueNIndex/solve.js b/Challenge/JongHoonSon/reduceMaxValueNIndex/solve.js deleted file mode 100644 index 5b93fb19..00000000 --- a/Challenge/JongHoonSon/reduceMaxValueNIndex/solve.js +++ /dev/null @@ -1,17 +0,0 @@ -// write your codes -function solution(inputArray) { - - let max = -1000; - let index = 0; - - inputArray.reduce((prev, curr, idx) => { - if(curr > max) { - max = curr; - index = idx; - } - }) - - return {maxValue: max, idx: index}; -} - -exports.solution = solution; diff --git a/Challenge/JongHoonSon/reduceMaxValueNIndex/solve.test.js b/Challenge/JongHoonSon/reduceMaxValueNIndex/solve.test.js deleted file mode 100644 index 0daef5b8..00000000 --- a/Challenge/JongHoonSon/reduceMaxValueNIndex/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [3, 29, 38, 12, 57, 74, 40, 85, 61], - answer: { maxValue: 85, idx: 7 }, -}; - -const test2 = { - input: [-24, -2, -13, -49, -999999, -17], - answer: { maxValue: -2, idx: 1 }, -}; -//최댓값이 중복일 때에는 먼저 나온 최댓값의 인덱스를 유지하도록 설정하였습니다. -const test3 = { - input: [2, -20, 21, -874, 99, -16, -29, 99], - answer: { maxValue: 99, idx: 4 }, -}; - -describe('reduceMaxValueNIndex', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2 : 음수 테스트', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3 : 중복된 최대값 테스트', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/JongHoonSon/reduceNameNickname/README.md b/Challenge/JongHoonSon/reduceNameNickname/README.md deleted file mode 100644 index b6920e05..00000000 --- a/Challenge/JongHoonSon/reduceNameNickname/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -입력받은 객채배열의 nickname을 key, name을 value로 하는 객체를 출력하세요 diff --git a/Challenge/JongHoonSon/reduceNameNickname/solve.js b/Challenge/JongHoonSon/reduceNameNickname/solve.js deleted file mode 100644 index fef7073d..00000000 --- a/Challenge/JongHoonSon/reduceNameNickname/solve.js +++ /dev/null @@ -1,12 +0,0 @@ -// write your codes -function solution(inputArray) { - answer = {}; - - inputArray.forEach(({nickname, name}) => { - answer[nickname] = name; - }); - - return answer; -} - -exports.solution = solution; diff --git a/Challenge/JongHoonSon/reduceNameNickname/solve.test.js b/Challenge/JongHoonSon/reduceNameNickname/solve.test.js deleted file mode 100644 index 67b74529..00000000 --- a/Challenge/JongHoonSon/reduceNameNickname/solve.test.js +++ /dev/null @@ -1,25 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '홍길동', - nickname: 'hong', - }, - { - name: '둘리', - nickname: '2li', - }, - { - name: '오스트랄로피테쿠스', - nickname: '1Cin', - }, - ], - answer: { hong: '홍길동', '2li': '둘리', '1Cin': '오스트랄로피테쿠스' }, -}; - -describe('reduceNameNickname', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/JongHoonSon/reduceSum/README.md b/Challenge/JongHoonSon/reduceSum/README.md deleted file mode 100644 index 8c607eb2..00000000 --- a/Challenge/JongHoonSon/reduceSum/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -reduce 메소드를 사용해서 배열의 모든 수의 합을 구하세요. - -## Expected Output - -106 diff --git a/Challenge/JongHoonSon/reduceSum/solve.js b/Challenge/JongHoonSon/reduceSum/solve.js deleted file mode 100644 index f66f3beb..00000000 --- a/Challenge/JongHoonSon/reduceSum/solve.js +++ /dev/null @@ -1,10 +0,0 @@ -// write your codes -function solution(inputArray) { - let sum = inputArray.reduce((acc, el) => { - return acc + el; - }, 0); - - return sum; -} - -exports.solution = solution; diff --git a/Challenge/JongHoonSon/reduceSum/solve.test.js b/Challenge/JongHoonSon/reduceSum/solve.test.js deleted file mode 100644 index 046c40cb..00000000 --- a/Challenge/JongHoonSon/reduceSum/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [10, 3, 20, 5, 8, 60], - answer: 106, -}; - -describe('reduceSum', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/JongHoonSon/sortByPrice/README.md b/Challenge/JongHoonSon/sortByPrice/README.md deleted file mode 100644 index b1ccf70e..00000000 --- a/Challenge/JongHoonSon/sortByPrice/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 - -## Expected Output - -[ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 } -] diff --git a/Challenge/JongHoonSon/sortByPrice/solve.js b/Challenge/JongHoonSon/sortByPrice/solve.js deleted file mode 100644 index 85b3cdb4..00000000 --- a/Challenge/JongHoonSon/sortByPrice/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -// write your codes -function solution(inputArray) { - inputArray.sort((a, b) => a.price - b.price); - - return inputArray; -} - - -exports.solution = solution; diff --git a/Challenge/JongHoonSon/sortByPrice/solve.test.js b/Challenge/JongHoonSon/sortByPrice/solve.test.js deleted file mode 100644 index 3d6a3431..00000000 --- a/Challenge/JongHoonSon/sortByPrice/solve.test.js +++ /dev/null @@ -1,34 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '사과', - price: 1000, - }, - { - name: '수박', - price: 5000, - }, - { - name: '당근', - price: 2000, - }, - { - name: '참외', - price: 10000, - }, - ], - answer: [ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 }, - ], -}; - -describe('sortByPrice', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/JongHoonSon/sortByPriceAndQuantity/README.md b/Challenge/JongHoonSon/sortByPriceAndQuantity/README.md deleted file mode 100644 index 41cd5c95..00000000 --- a/Challenge/JongHoonSon/sortByPriceAndQuantity/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 -만약 price가 같다면 quantity기준으로 오름차순 정렬하세요 - -## Expected Output - -[ - { name: '사과', price: 1000, quantity: 2 }, - { name: '오이', price: 2000, quantity: 49 }, - { name: '당근', price: 2000, quantity: 50 }, - { name: '참외', price: 5000, quantity: 10 }, - { name: '수박', price: 5000, quantity: 20 } -] diff --git a/Challenge/JongHoonSon/sortByPriceAndQuantity/solve.js b/Challenge/JongHoonSon/sortByPriceAndQuantity/solve.js deleted file mode 100644 index 768d0078..00000000 --- a/Challenge/JongHoonSon/sortByPriceAndQuantity/solve.js +++ /dev/null @@ -1,16 +0,0 @@ -// write your codes -function solution(inputArray) { - - const resultArray = inputArray.sort((a, b) => { - - if(a.price == b.price) { - return a.quantity - b.quantity; - } - - return a.price - b.price - }); - - return resultArray; -} - -exports.solution = solution; diff --git a/Challenge/JongHoonSon/sortByPriceAndQuantity/solve.test.js b/Challenge/JongHoonSon/sortByPriceAndQuantity/solve.test.js deleted file mode 100644 index 424f42b7..00000000 --- a/Challenge/JongHoonSon/sortByPriceAndQuantity/solve.test.js +++ /dev/null @@ -1,44 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '사과', - price: 1000, - quantity: 2, - }, - { - name: '수박', - price: 5000, - quantity: 20, - }, - { - name: '당근', - price: 2000, - quantity: 50, - }, - { - name: '참외', - price: 5000, - quantity: 10, - }, - { - name: '오이', - price: 2000, - quantity: 49, - }, - ], - answer: [ - { name: '사과', price: 1000, quantity: 2 }, - { name: '오이', price: 2000, quantity: 49 }, - { name: '당근', price: 2000, quantity: 50 }, - { name: '참외', price: 5000, quantity: 10 }, - { name: '수박', price: 5000, quantity: 20 }, - ], -}; - -describe('sortByPriceAndQuantity', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/JongHoonSon/spreadOperatorMaxValue/README.md b/Challenge/JongHoonSon/spreadOperatorMaxValue/README.md deleted file mode 100644 index 164b68a1..00000000 --- a/Challenge/JongHoonSon/spreadOperatorMaxValue/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -Spread Operator를 이용해서 값의 최대, 최소값을 구하세요 diff --git a/Challenge/JongHoonSon/spreadOperatorMaxValue/solve.js b/Challenge/JongHoonSon/spreadOperatorMaxValue/solve.js deleted file mode 100644 index cf4163c1..00000000 --- a/Challenge/JongHoonSon/spreadOperatorMaxValue/solve.js +++ /dev/null @@ -1,18 +0,0 @@ -// write your codes -function solution(inputArray) { - let max=inputArray[0]; - let min=inputArray[0]; - - inputArray.forEach(element => { - if(max < element) { - max = element; - } - if(min > element) { - min = element; - } - }); - - return `max : ${max}, min : ${min}` -} - -exports.solution = solution; diff --git a/Challenge/JongHoonSon/spreadOperatorMaxValue/solve.test.js b/Challenge/JongHoonSon/spreadOperatorMaxValue/solve.test.js deleted file mode 100644 index 26f2abf9..00000000 --- a/Challenge/JongHoonSon/spreadOperatorMaxValue/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], - answer: 'max : 10, min : 1', -}; - -describe('spreadOperatorMaxValue', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/amunre21/everyArray/README.md b/Challenge/amunre21/everyArray/README.md deleted file mode 100644 index 442558f6..00000000 --- a/Challenge/amunre21/everyArray/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -every를 이용해서 모든 원소가 짝수인지 아닌지를 판별하세요 - -## Expected Output - -true \ No newline at end of file diff --git a/Challenge/amunre21/everyArray/solve.js b/Challenge/amunre21/everyArray/solve.js deleted file mode 100644 index 4f23c07f..00000000 --- a/Challenge/amunre21/everyArray/solve.js +++ /dev/null @@ -1,5 +0,0 @@ -const inputArray = [2, 4, 6, 8, 10]; - -// write your codes -const answer = inputArray.every(el => el%2===0); -console.log(answer) \ No newline at end of file diff --git a/Challenge/amunre21/expDivOdd/README.md b/Challenge/amunre21/expDivOdd/README.md deleted file mode 100644 index 2d5e0676..00000000 --- a/Challenge/amunre21/expDivOdd/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# 문제제목 - -## 설명 - -제곱한 후 3으로 나눈 나머지가 홀수인 것의 총 합을 구하세요. - -## Expected Output diff --git a/Challenge/amunre21/expDivOdd/solve.js b/Challenge/amunre21/expDivOdd/solve.js deleted file mode 100644 index 1f1336a0..00000000 --- a/Challenge/amunre21/expDivOdd/solve.js +++ /dev/null @@ -1,7 +0,0 @@ -const inputArray = [ 1, 7, 3, 4, 6 ]; - -// write your codes -// 제곱한뒤 3으로 나눠서 1이 남는 값만 남깁니다 -> 남은 값들을 누산하여 반환합니다. -let answer = inputArray.filter(el => el**2%3==1).reduce((acc,cur)=>{return acc+cur;}); - -console.log(answer) \ No newline at end of file diff --git a/Challenge/amunre21/figureSkating/README.md b/Challenge/amunre21/figureSkating/README.md deleted file mode 100644 index 648eeaa4..00000000 --- a/Challenge/amunre21/figureSkating/README.md +++ /dev/null @@ -1,41 +0,0 @@ -# 문제제목 - -## 설명 - -점수를 계산해서 점수가 높은 순으로 name과 score를 가진 객체의 배열을 출력하세요. -단 실격자는 출력하지 않습니다. - -### 피겨 점수 기준 - -피겨 점수는 ‘기술점수(TES)+예술점수(PCS)-감점’으로 구성된다. - -기술점수(TES·Total Element Score)는 기본점수에 수행점수(GOE·Grade Of Execution)를 합산해 도출한다. - -심판은 선수들이 점프와 스핀의 기술을 제대로 수행하는지 살핀다. 점프에선 회전수를 제대로 지켰는지, 에지를 제대로 사용했는지에 따라 ‘롱 에지’(잘못된 에지 사용)나 ‘다운그레이드’(난이도 하락), ‘어텐션’(주의) 등의 판정을 내린다. 스핀과 스텝시퀀스에 붙는 레벨(1~4)도 이들이 결정한다. - -9명의 심판은 선수들이 미리 제출한 연기 구성표를 기준으로 과제별 기본점수에서 가·감점을 한다. 이른바 ‘GOE’라 불리는 수행점수다. - -쇼트프로그램은 점프 3개, 스핀 3개, 스텝 1개의 수행과제가 반드시 포함돼야 한다. - -예술점수(PCS·Total Program Component Score)는 프로그램의 완성도에 영향을 미치는 스케이팅 기술·동작의 연결·연기·안무·곡 해석 등 5가지를 평가한다. - -마지막으로 감점이 반영된다. 감점 항목이 발생할 때마다 1점씩 감점된다. - -원문보기: -http://news.khan.co.kr/kh_news/khan_art_view.html?art_id=201402172146545#csidx6329aebb6a02152bca884614a7f0544 - -### 판정 기준 - -* 점수가 가장 높은 사람이 1등이다. -* 점수는 기술점수(TES) + 예술점수(PCS) - 감점 으로 구성된다. -* 기술점수(TES)는 기본점수 * 수행점수(GOE)를 합산해 도출한다. -* 필수 수행과제를 수행하지 못했을 시 실격이다. - -### 필수 수행과제 - -* 쇼트프로그램은 점프 3개, 스핀 3개, 스텝 1개의 수행과제가 반드시 포함돼야 한다. -* 점프와 스핀을 4번 이상 수행했을 시 가장 잘한 3개를 기준으로 한다. - -## Expected Output - -[ { name: '김연아', score: 1055 }, { name: '아사다 마오', score: 939 } ] diff --git a/Challenge/amunre21/figureSkating/solve.js b/Challenge/amunre21/figureSkating/solve.js deleted file mode 100644 index c621df3c..00000000 --- a/Challenge/amunre21/figureSkating/solve.js +++ /dev/null @@ -1,72 +0,0 @@ -// 기본 점수 -const baseScore = { - jump: 10, - spin: 20, - step: 15, -} - -const baseAssignment = { - jump: 3, - spin: 3, - step: 1, -} - -const inputArray = [ - { - name: '김연아', - goe: { - jump: [10, 9, 10], - spin: [10, 10, 10], - step: [9], - }, - pcs: 30, - penalty: 0, - }, - { - name: '피겨의 신', - goe: { - jump: [10000, 10000], - spin: [10000, 10000, 10000], - step: [10000] - }, - pcs: 100000, - penalty: 0, - }, - { - name: '아사다 마오', - goe: { - jump: [9, 6, 8, 9], - spin: [9, 9, 9], - step: [8], - }, - pcs: 29, - penalty: 10, - }, -] - -// write your codes - -const answer = inputArray.filter((el)=>{ - return el.goe.jump.length >= baseAssignment.jump && - el.goe.spin.length >= baseAssignment.spin && - el.goe.step.length >= baseAssignment.step; -}).map((v) => { - let result = 0; - // TES 계산 - result += v.goe.jump.sort((a,b) => b-a).slice(0,baseAssignment.jump).reduce((acc,cur)=>{return acc+cur*baseScore.jump;},0); - result += v.goe.spin.sort((a,b) => b-a).slice(0,baseAssignment.spin).reduce((acc,cur)=>{return acc+cur*baseScore.spin;},0); - result += v.goe.step.sort((a,b) => b-a).slice(0,baseAssignment.step).reduce((acc,cur)=>{return acc+cur*baseScore.step;},0); - // PCS 계산 - result += v.pcs; - // penalty 계산 - result -= v.penalty; - - return { - name : v.name, - score : result - }; -}).sort((a,b)=>{ - return b.score - a.score; -}); - -console.log(answer) \ No newline at end of file diff --git a/Challenge/amunre21/filterAge/README.md b/Challenge/amunre21/filterAge/README.md deleted file mode 100644 index 1c73138e..00000000 --- a/Challenge/amunre21/filterAge/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소의 age가 30이상 50미만인 사람만 있는 객체의 배열을 만드세요 - -## Expected Output - -[ { name: '일미', age: 35 }, { name: '이미', age: 45 } ] diff --git a/Challenge/amunre21/filterAge/solve.js b/Challenge/amunre21/filterAge/solve.js deleted file mode 100644 index 27e6c061..00000000 --- a/Challenge/amunre21/filterAge/solve.js +++ /dev/null @@ -1,22 +0,0 @@ -const inputArray = [ - { - name: '영미', - age: 25, - }, - { - name: '일미', - age: 35, - }, - { - name: '이미', - age: 45, - }, - { - name: '삼미', - age: 55, - }, -] -// write your codes - -const answer = inputArray.filter(el=>el.age>=30&&el.age<50) -console.log(answer) \ No newline at end of file diff --git a/Challenge/amunre21/filterIntersection/README.md b/Challenge/amunre21/filterIntersection/README.md deleted file mode 100644 index edac1a32..00000000 --- a/Challenge/amunre21/filterIntersection/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# 문제제목 - -## 설명 - -두 배열의 교집합을 출력하세요! - -## Expected Output - -[3, 4, 5] - -## Test - -```npm test``` -- jest를 사용해서 test했습니다. -- require를 사용하는 commonJS환경입니다. \ No newline at end of file diff --git a/Challenge/amunre21/filterIntersection/solve.js b/Challenge/amunre21/filterIntersection/solve.js deleted file mode 100644 index 8557245e..00000000 --- a/Challenge/amunre21/filterIntersection/solve.js +++ /dev/null @@ -1,7 +0,0 @@ -const A4 = [1, 3, 5, 7, 12, 21, 16, 24, 17, 93, 26]; -const B4 = [3, 7, 133, 134, 25, 17, 21, 22]; -// write your codes - -exports.answer = function(A,B){ - return A.filter(el => B.includes(el)); -}; \ No newline at end of file diff --git a/Challenge/amunre21/filterIntersection/solve.test.js b/Challenge/amunre21/filterIntersection/solve.test.js deleted file mode 100644 index 60640704..00000000 --- a/Challenge/amunre21/filterIntersection/solve.test.js +++ /dev/null @@ -1,35 +0,0 @@ -const solve = require('./solve'); - -const A1 = [1, 2, 3, 4, 5]; -const B1 = [3, 4, 5, 6, 7]; -const result1 = [3, 4, 5]; - -const A2 = [1, 2, 3, 4, 5]; -const B2 = [5, 6, 7, 8, 9]; -const result2 = [5]; - -const A3 = [2, 4, 6, 8, 10, 12]; -const B3 = [3, 6, 9, 12]; -const result3 = [6, 12]; - -const A4 = [1, 3, 5, 7, 12, 21, 16, 24, 17, 93, 26]; -const B4 = [3, 7, 133, 134, 25, 17, 21, 22]; -const result4 = [3, 7, 21, 17]; - -describe("simple test",() =>{ - test("test 1",() => { - expect(solve.answer(A1,B1)).toEqual(result1); - }); - - test("test 2",() => { - expect(solve.answer(A2,B2)).toEqual(result2); - }); - - test("test 3",() => { - expect(solve.answer(A3,B3)).toEqual(result3); - }); - - test("test 4",() => { - expect(solve.answer(A4,B4)).toEqual(result4); - }); -}) \ No newline at end of file diff --git a/Challenge/amunre21/filterOdd/README.md b/Challenge/amunre21/filterOdd/README.md deleted file mode 100644 index 9bf99a18..00000000 --- a/Challenge/amunre21/filterOdd/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -홀수만 뽑아 배열로 만드세요 - -## Expected Output - -[5, 1, 3] diff --git a/Challenge/amunre21/filterOdd/solve.js b/Challenge/amunre21/filterOdd/solve.js deleted file mode 100644 index 07a84410..00000000 --- a/Challenge/amunre21/filterOdd/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -const inputArray = [4, 2, 5, 1, 3]; - -// write your codes - -exports.answer = function(arr){ - return arr.filter(el => el%2==1); -} - diff --git a/Challenge/amunre21/filterOdd/solve.test.js b/Challenge/amunre21/filterOdd/solve.test.js deleted file mode 100644 index 150a7eab..00000000 --- a/Challenge/amunre21/filterOdd/solve.test.js +++ /dev/null @@ -1,31 +0,0 @@ -const solve = require('./solve'); - -const input1 = [4, 2, 5, 1, 3]; -const result1 = [5, 1, 3]; - -const input2 = [1, 17, 5, 2, 3, 9]; -const result2 = [1, 17, 5, 3, 9]; - -const input3 = [4, 2, 6, 8, 50, 16]; -const result3 = []; - -const input4 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]; -const result4 = [1, 3, 5, 7, 9, 11]; - -describe("simple test",() =>{ - test("test 1",() => { - expect(solve.answer(input1)).toEqual(result1); - }); - - test("test 2",() => { - expect(solve.answer(input2)).toEqual(result2); - }); - - test("test 3",() => { - expect(solve.answer(input3)).toEqual(result3); - }); - - test("test 4",() => { - expect(solve.answer(input4)).toEqual(result4); - }); -}) \ No newline at end of file diff --git a/Challenge/amunre21/findWord/README.md b/Challenge/amunre21/findWord/README.md deleted file mode 100644 index 8ef123f4..00000000 --- a/Challenge/amunre21/findWord/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -용가리라는 단어가 있으면 true 없으면 false를 출력 - -## Expected Output - -true diff --git a/Challenge/amunre21/findWord/solve.js b/Challenge/amunre21/findWord/solve.js deleted file mode 100644 index fb98244e..00000000 --- a/Challenge/amunre21/findWord/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.includes('용가리'); -} - -exports.solution = solution; diff --git a/Challenge/amunre21/findWord/solve.test.js b/Challenge/amunre21/findWord/solve.test.js deleted file mode 100644 index 3e88a818..00000000 --- a/Challenge/amunre21/findWord/solve.test.js +++ /dev/null @@ -1,26 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: ['잠', '자', '고', '싶', '다', '용가리'], - answer: true, -}; -const test2 = { - input: ['맛있는', '용가리치킨'], - answer: false, -}; -const test3 = { - input: ['고질라', '용가리 ', '울트라맨'], - answer: false, -}; - -describe('findWord', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/amunre21/forEachFilter/README.md b/Challenge/amunre21/forEachFilter/README.md deleted file mode 100644 index 6dcbc7c2..00000000 --- a/Challenge/amunre21/forEachFilter/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소중 40 이상인 수만 뽑아 배열을 만드세요. diff --git a/Challenge/amunre21/forEachFilter/solve.js b/Challenge/amunre21/forEachFilter/solve.js deleted file mode 100644 index c8e6af2b..00000000 --- a/Challenge/amunre21/forEachFilter/solve.js +++ /dev/null @@ -1,19 +0,0 @@ -// write your codes - -// use filter -function solution(inputArray) { - return inputArray.filter(el => el>=40); -} - -// use forEach -function solution2(inputArray) { - let result = []; - inputArray.forEach(el => { - if(el>=40){ - result.push(el); - } - }) - return result; -} - -exports.solution = solution; diff --git a/Challenge/amunre21/forEachFilter/solve.test.js b/Challenge/amunre21/forEachFilter/solve.test.js deleted file mode 100644 index 3d73b25c..00000000 --- a/Challenge/amunre21/forEachFilter/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: [100, 40], -}; - -describe('forEachFilter', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/amunre21/forEachFilterIsNaN/README.md b/Challenge/amunre21/forEachFilterIsNaN/README.md deleted file mode 100644 index 570c030e..00000000 --- a/Challenge/amunre21/forEachFilterIsNaN/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소중 숫자인 원소만 뽑아 배열을 만드세요. diff --git a/Challenge/amunre21/forEachFilterIsNaN/solve.js b/Challenge/amunre21/forEachFilterIsNaN/solve.js deleted file mode 100644 index c7531c09..00000000 --- a/Challenge/amunre21/forEachFilterIsNaN/solve.js +++ /dev/null @@ -1,7 +0,0 @@ -// write your codes -// 유한수만 뽑는 isFinite 메서드를 사용. -function solution(inputArray) { - return inputArray.filter(el => Number.isFinite(el)) -} - -exports.solution = solution; diff --git a/Challenge/amunre21/forEachFilterIsNaN/solve.test.js b/Challenge/amunre21/forEachFilterIsNaN/solve.test.js deleted file mode 100644 index d7e56a46..00000000 --- a/Challenge/amunre21/forEachFilterIsNaN/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 40, '라매', '개발자', 51.5, 'a', 88], - answer: [1, 40, 51.5, 88], -}; - -const test2 = { - input: [1, 2, 3, '4', 5, '6'], - answer: [1, 2, 3, 5], -}; - -const test3 = { - input: [-3, -2, -1, 0, 1, 2, 3], - answer: [-3, -2, -1, 0, 1, 2, 3], -}; - -describe('forEachFilterIsNaN', () => { - test('test1: 숫자,문자 판별', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2: 문자로된 숫자 판별', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3: 음수 양수 포함', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/amunre21/forEachMap/README.md b/Challenge/amunre21/forEachMap/README.md deleted file mode 100644 index 1e8e03c8..00000000 --- a/Challenge/amunre21/forEachMap/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -forEach 메소드를 사용해서 배열의 각 원소 끝에 '%'를 붙인 문자열 배열을 출력하세요 diff --git a/Challenge/amunre21/forEachMap/solve.js b/Challenge/amunre21/forEachMap/solve.js deleted file mode 100644 index bf94e6c4..00000000 --- a/Challenge/amunre21/forEachMap/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.map(el => el+'%'); -} - -exports.solution = solution; diff --git a/Challenge/amunre21/forEachMap/solve.test.js b/Challenge/amunre21/forEachMap/solve.test.js deleted file mode 100644 index de4868c6..00000000 --- a/Challenge/amunre21/forEachMap/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: ['100%', '10%', '20%', '40%'], -}; - -describe('forEachMap', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/amunre21/forEachReduce/README.md b/Challenge/amunre21/forEachReduce/README.md deleted file mode 100644 index a984df2d..00000000 --- a/Challenge/amunre21/forEachReduce/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -forEach 메소드를 사용해서 배열의 총 합을 출력하는 코드를 작성하세요 diff --git a/Challenge/amunre21/forEachReduce/solve.js b/Challenge/amunre21/forEachReduce/solve.js deleted file mode 100644 index 0926029b..00000000 --- a/Challenge/amunre21/forEachReduce/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.reduce((acc,cur)=>{ - return acc+cur; - }) -} - -exports.solution = solution; diff --git a/Challenge/amunre21/forEachReduce/solve.test.js b/Challenge/amunre21/forEachReduce/solve.test.js deleted file mode 100644 index 397e4b50..00000000 --- a/Challenge/amunre21/forEachReduce/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: 170, -}; - -const test2 = { - input: [120, -20, -30, 0, 15], - answer: 85, -}; - -const test3 = { - input: [-10, -20, -30], - answer: -60, -}; - -describe('forEachReduce', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2: 음수가 포함된 계산', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3: 음수만 존재하는 계산', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/amunre21/mapAddPercent/README.md b/Challenge/amunre21/mapAddPercent/README.md deleted file mode 100644 index 75e73042..00000000 --- a/Challenge/amunre21/mapAddPercent/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -map 메소드를 사용해 배열 각각 숫자 뒤에 %를 붙인 문자열을 만드세요 diff --git a/Challenge/amunre21/mapAddPercent/solve.js b/Challenge/amunre21/mapAddPercent/solve.js deleted file mode 100644 index bf94e6c4..00000000 --- a/Challenge/amunre21/mapAddPercent/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.map(el => el+'%'); -} - -exports.solution = solution; diff --git a/Challenge/amunre21/mapAddPercent/solve.test.js b/Challenge/amunre21/mapAddPercent/solve.test.js deleted file mode 100644 index dac1b3cc..00000000 --- a/Challenge/amunre21/mapAddPercent/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: ['100%', '10%', '20%', '40%'], -}; - -describe('mapAddPercent', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/amunre21/mapAppendOrder/README.md b/Challenge/amunre21/mapAppendOrder/README.md deleted file mode 100644 index 1435623a..00000000 --- a/Challenge/amunre21/mapAppendOrder/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열의 값을 name 프로퍼티에 넣고 몇번째 원소인지를 order에 넣은 객체의 배열을 출력하세요 diff --git a/Challenge/amunre21/mapAppendOrder/solve.js b/Challenge/amunre21/mapAppendOrder/solve.js deleted file mode 100644 index bc799c0e..00000000 --- a/Challenge/amunre21/mapAppendOrder/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.map((el,idx)=>{return{name:el,order:idx+1}}) -} - -exports.solution = solution; diff --git a/Challenge/amunre21/mapAppendOrder/solve.test.js b/Challenge/amunre21/mapAppendOrder/solve.test.js deleted file mode 100644 index e08db10c..00000000 --- a/Challenge/amunre21/mapAppendOrder/solve.test.js +++ /dev/null @@ -1,16 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: ['홍길동', '둘리', '루피'], - answer: [ - { name: '홍길동', order: 1 }, - { name: '둘리', order: 2 }, - { name: '루피', order: 3 }, - ], -}; - -describe('mapAppendOrder', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/amunre21/recommendAd/README.md b/Challenge/amunre21/recommendAd/README.md deleted file mode 100644 index 132e8800..00000000 --- a/Challenge/amunre21/recommendAd/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# 문제제목 - -사용자가 안 본 광고는? - -## 설명 - -유튜브는 사용자가 프리미엄 회원이 아닌 경우 영상 시작이나 중간에 광고가 나오도록 설정되어 있습니다. - -[2020년 유튜브 인기 광고](https://www.thinkwithgoogle.com/intl/ko-kr/marketing-strategies/video/%EB%8C%80%ED%95%9C%EB%AF%BC%EA%B5%AD-youtube-%EC%9D%B8%EA%B8%B0-%EA%B4%91%EA%B3%A0%EC%98%81%EC%83%81-2020%EB%85%84-%EC%97%B0%EB%A7%90%EA%B2%B0%EC%82%B0/)는 총 열 편으로, 사용자의 일주일간 광고 시청 이력을 통해 해당 사용자가 일주일 동안 안 본 광고를 그 다음주에 노출함으로써 광고들이 사용자에게 골고루 노출되길 원합니다. - -유저가 매일 유튜브에 접속하여 하루 한 편 이상의 광고를 보았다고 가정할 때, 이 유저가 안 본 광고는 무엇인지 출력해주세요. - -## Expected Output - -[ '동원F&B' ] diff --git a/Challenge/amunre21/recommendAd/solve.js b/Challenge/amunre21/recommendAd/solve.js deleted file mode 100644 index 8200282f..00000000 --- a/Challenge/amunre21/recommendAd/solve.js +++ /dev/null @@ -1,19 +0,0 @@ -const userHistory = [ - { date: '2020-11-03', watched: ['KT', 'BBQ'] }, - { date: '2020-11-04', watched: ['정관장', 'KT', '딱좋은데이'] }, - { date: '2020-11-05', watched: ['그랑사가', '농심'] }, - { date: '2020-11-06', watched: ['BBQ'] }, - { date: '2020-11-07', watched: ['쌍용자동차', 'BBQ', 'KT'] }, - { date: '2020-11-08', watched: ['켈로그코리아', '빙그레'] }, - { date: '2020-11-09', watched: ['KT', '그랑사가', '빙그레'] }, -]; - -// write your codes -function solution(inputArray) { - //set도 가능한데 중복제거에 크게 의의를 두지않아서 concat을 사용함. - let watch_list = []; - userHistory.forEach(el=>watch_list = watch_list.concat(el.watched)); - return inputArray.filter(el=>!watch_list.includes(el)); -} - -exports.solution = solution; diff --git a/Challenge/amunre21/recommendAd/solve.test.js b/Challenge/amunre21/recommendAd/solve.test.js deleted file mode 100644 index 8a0f6464..00000000 --- a/Challenge/amunre21/recommendAd/solve.test.js +++ /dev/null @@ -1,23 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - '동원F&B', - '정관장', - 'KT', - 'BBQ', - '그랑사가', - '농심', - '딱좋은데이', - '빙그레', - '쌍용자동차', - '켈로그코리아', - ], - answer: ['동원F&B'], -}; - -describe('recommendAd', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/amunre21/reduceMaxValueNIndex/README.md b/Challenge/amunre21/reduceMaxValueNIndex/README.md deleted file mode 100644 index 965bdec6..00000000 --- a/Challenge/amunre21/reduceMaxValueNIndex/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -reduce 메소드를 사용해 최댓값의 값을 maxValue에, 해당 값의 index를 idx에 넣은 객체를 출력하세요 diff --git a/Challenge/amunre21/reduceMaxValueNIndex/solve.js b/Challenge/amunre21/reduceMaxValueNIndex/solve.js deleted file mode 100644 index fd192adb..00000000 --- a/Challenge/amunre21/reduceMaxValueNIndex/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.reduce((acc,cur,idx)=>{ - return (acc.maxValue >= cur) ? acc : {maxValue:cur, idx:idx}; - },{maxValue:Number.NEGATIVE_INFINITY,idx:-1}) -} - -exports.solution = solution; diff --git a/Challenge/amunre21/reduceMaxValueNIndex/solve.test.js b/Challenge/amunre21/reduceMaxValueNIndex/solve.test.js deleted file mode 100644 index 0daef5b8..00000000 --- a/Challenge/amunre21/reduceMaxValueNIndex/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [3, 29, 38, 12, 57, 74, 40, 85, 61], - answer: { maxValue: 85, idx: 7 }, -}; - -const test2 = { - input: [-24, -2, -13, -49, -999999, -17], - answer: { maxValue: -2, idx: 1 }, -}; -//최댓값이 중복일 때에는 먼저 나온 최댓값의 인덱스를 유지하도록 설정하였습니다. -const test3 = { - input: [2, -20, 21, -874, 99, -16, -29, 99], - answer: { maxValue: 99, idx: 4 }, -}; - -describe('reduceMaxValueNIndex', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2 : 음수 테스트', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3 : 중복된 최대값 테스트', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/amunre21/reduceNameNickname/README.md b/Challenge/amunre21/reduceNameNickname/README.md deleted file mode 100644 index b6920e05..00000000 --- a/Challenge/amunre21/reduceNameNickname/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -입력받은 객채배열의 nickname을 key, name을 value로 하는 객체를 출력하세요 diff --git a/Challenge/amunre21/reduceNameNickname/solve.js b/Challenge/amunre21/reduceNameNickname/solve.js deleted file mode 100644 index 7bf545f6..00000000 --- a/Challenge/amunre21/reduceNameNickname/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.reduce((acc,cur)=>{ - acc[cur.nickname] = cur.name; - return acc; - },{}); -} - -exports.solution = solution; diff --git a/Challenge/amunre21/reduceNameNickname/solve.test.js b/Challenge/amunre21/reduceNameNickname/solve.test.js deleted file mode 100644 index 67b74529..00000000 --- a/Challenge/amunre21/reduceNameNickname/solve.test.js +++ /dev/null @@ -1,25 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '홍길동', - nickname: 'hong', - }, - { - name: '둘리', - nickname: '2li', - }, - { - name: '오스트랄로피테쿠스', - nickname: '1Cin', - }, - ], - answer: { hong: '홍길동', '2li': '둘리', '1Cin': '오스트랄로피테쿠스' }, -}; - -describe('reduceNameNickname', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/amunre21/reduceSum/README.md b/Challenge/amunre21/reduceSum/README.md deleted file mode 100644 index 8c607eb2..00000000 --- a/Challenge/amunre21/reduceSum/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -reduce 메소드를 사용해서 배열의 모든 수의 합을 구하세요. - -## Expected Output - -106 diff --git a/Challenge/amunre21/reduceSum/solve.js b/Challenge/amunre21/reduceSum/solve.js deleted file mode 100644 index 0926029b..00000000 --- a/Challenge/amunre21/reduceSum/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.reduce((acc,cur)=>{ - return acc+cur; - }) -} - -exports.solution = solution; diff --git a/Challenge/amunre21/reduceSum/solve.test.js b/Challenge/amunre21/reduceSum/solve.test.js deleted file mode 100644 index e83a3db9..00000000 --- a/Challenge/amunre21/reduceSum/solve.test.js +++ /dev/null @@ -1,19 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [10, 3, 20, 5, 8, 60], - answer: 106, -}; -const test2 = { - input: [10, -50, 20, 30, -10], - answer: 0, -}; - -describe('reduceSum', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); -}); diff --git a/Challenge/amunre21/sortByPrice/README.md b/Challenge/amunre21/sortByPrice/README.md deleted file mode 100644 index b1ccf70e..00000000 --- a/Challenge/amunre21/sortByPrice/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 - -## Expected Output - -[ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 } -] diff --git a/Challenge/amunre21/sortByPrice/solve.test.js b/Challenge/amunre21/sortByPrice/solve.test.js deleted file mode 100644 index 3d6a3431..00000000 --- a/Challenge/amunre21/sortByPrice/solve.test.js +++ /dev/null @@ -1,34 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '사과', - price: 1000, - }, - { - name: '수박', - price: 5000, - }, - { - name: '당근', - price: 2000, - }, - { - name: '참외', - price: 10000, - }, - ], - answer: [ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 }, - ], -}; - -describe('sortByPrice', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/amunre21/sortByPriceAndQuantity/README.md b/Challenge/amunre21/sortByPriceAndQuantity/README.md deleted file mode 100644 index 41cd5c95..00000000 --- a/Challenge/amunre21/sortByPriceAndQuantity/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 -만약 price가 같다면 quantity기준으로 오름차순 정렬하세요 - -## Expected Output - -[ - { name: '사과', price: 1000, quantity: 2 }, - { name: '오이', price: 2000, quantity: 49 }, - { name: '당근', price: 2000, quantity: 50 }, - { name: '참외', price: 5000, quantity: 10 }, - { name: '수박', price: 5000, quantity: 20 } -] diff --git a/Challenge/amunre21/sortByPriceAndQuantity/solve.js b/Challenge/amunre21/sortByPriceAndQuantity/solve.js deleted file mode 100644 index 63b91e06..00000000 --- a/Challenge/amunre21/sortByPriceAndQuantity/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.sort((a,b)=>a.price-b.price||a.quantity-b.quantity); -} - -exports.solution = solution; \ No newline at end of file diff --git a/Challenge/amunre21/sortByPriceAndQuantity/solve.test.js b/Challenge/amunre21/sortByPriceAndQuantity/solve.test.js deleted file mode 100644 index 424f42b7..00000000 --- a/Challenge/amunre21/sortByPriceAndQuantity/solve.test.js +++ /dev/null @@ -1,44 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '사과', - price: 1000, - quantity: 2, - }, - { - name: '수박', - price: 5000, - quantity: 20, - }, - { - name: '당근', - price: 2000, - quantity: 50, - }, - { - name: '참외', - price: 5000, - quantity: 10, - }, - { - name: '오이', - price: 2000, - quantity: 49, - }, - ], - answer: [ - { name: '사과', price: 1000, quantity: 2 }, - { name: '오이', price: 2000, quantity: 49 }, - { name: '당근', price: 2000, quantity: 50 }, - { name: '참외', price: 5000, quantity: 10 }, - { name: '수박', price: 5000, quantity: 20 }, - ], -}; - -describe('sortByPriceAndQuantity', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/amunre21/spreadOperatorMaxValue/README.md b/Challenge/amunre21/spreadOperatorMaxValue/README.md deleted file mode 100644 index 164b68a1..00000000 --- a/Challenge/amunre21/spreadOperatorMaxValue/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -Spread Operator를 이용해서 값의 최대, 최소값을 구하세요 diff --git a/Challenge/amunre21/spreadOperatorMaxValue/solve.js b/Challenge/amunre21/spreadOperatorMaxValue/solve.js deleted file mode 100644 index 49c5cf13..00000000 --- a/Challenge/amunre21/spreadOperatorMaxValue/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return `max : ${Math.max(...inputArray)}, min : ${Math.min(...inputArray)}`; -} - -exports.solution = solution; diff --git a/Challenge/amunre21/spreadOperatorMaxValue/solve.test.js b/Challenge/amunre21/spreadOperatorMaxValue/solve.test.js deleted file mode 100644 index 26f2abf9..00000000 --- a/Challenge/amunre21/spreadOperatorMaxValue/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], - answer: 'max : 10, min : 1', -}; - -describe('spreadOperatorMaxValue', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/cellenar26/everyArray/README.md b/Challenge/cellenar26/everyArray/README.md deleted file mode 100644 index 442558f6..00000000 --- a/Challenge/cellenar26/everyArray/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -every를 이용해서 모든 원소가 짝수인지 아닌지를 판별하세요 - -## Expected Output - -true \ No newline at end of file diff --git a/Challenge/cellenar26/everyArray/solve.js b/Challenge/cellenar26/everyArray/solve.js deleted file mode 100644 index 869e91be..00000000 --- a/Challenge/cellenar26/everyArray/solve.js +++ /dev/null @@ -1,17 +0,0 @@ -// # 문제제목 - -// ## 설명 - -// every를 이용해서 모든 원소가 짝수인지 아닌지를 판별하세요 - -// ## Expected Output - -// true -const inputArray = [2,4,6,8] -function solution(inputArray) { - return inputArray.every(isEven) -} - -const isEven = (number) => number % 2 ===0 -console.log(solution(inputArray)) -exports.solution = solution; diff --git a/Challenge/cellenar26/everyArray/solve.test.js b/Challenge/cellenar26/everyArray/solve.test.js deleted file mode 100644 index b03e4791..00000000 --- a/Challenge/cellenar26/everyArray/solve.test.js +++ /dev/null @@ -1,21 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [2, 4, 6, 8, 10], - answer: true, -}; - -const test2 = { - input: [2, 3, 6, 8, 10], - answer: false, -}; - -describe('everyArray', () => { - test('모두 짝수면 true여야 한다.', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - - test('홀수가 있으면 false여야 한다.', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); -}); diff --git a/Challenge/cellenar26/expDivOdd/README.md b/Challenge/cellenar26/expDivOdd/README.md deleted file mode 100644 index c07ab10b..00000000 --- a/Challenge/cellenar26/expDivOdd/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -제곱한 후 3으로 나눈 나머지가 홀수인 것 을 뽑은 배열의 총 합을 구하세요. diff --git a/Challenge/cellenar26/expDivOdd/solve.js b/Challenge/cellenar26/expDivOdd/solve.js deleted file mode 100644 index ec022a4f..00000000 --- a/Challenge/cellenar26/expDivOdd/solve.js +++ /dev/null @@ -1,16 +0,0 @@ -// ## 설명 - -// 제곱한 후 3으로 나눈 나머지가 홀수인 것 을 뽑은 배열의 총 합을 구하세요. -function solution(inputArray) { - const newArr = inputArray.map(element => element*element); - - const fillterd = newArr.filter(item => (item%3) % 2 !== 0) - let sum = 0; - for(let i=0; i { - test('1, 7, 3, 4, 6', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - - test('2, 3, 6, 8, 10', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); -}); diff --git a/Challenge/cellenar26/filterAge/README.md b/Challenge/cellenar26/filterAge/README.md deleted file mode 100644 index 873a15c1..00000000 --- a/Challenge/cellenar26/filterAge/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소의 age가 30이상 50미만인 사람만 있는 객체의 배열을 만드세요 diff --git a/Challenge/cellenar26/filterAge/solve.js b/Challenge/cellenar26/filterAge/solve.js deleted file mode 100644 index a9f93651..00000000 --- a/Challenge/cellenar26/filterAge/solve.js +++ /dev/null @@ -1,31 +0,0 @@ -// write your codes -// 배열 원소의 age가 30이상 50미만인 사람만 있는 객체의 배열을 만드세요 -// const inputArray = [ -// { -// name: '영미', -// age: 25, -// }, -// { -// name: '일미', -// age: 35, -// }, -// { -// name: '이미', -// age: 45, -// }, -// { -// name: '삼미', -// age: 55, -// }, -// ]; - -function solution(inputArray) { - let result = inputArray.filter(item => item.age >= 30 && item.age <50); - // console.log(item[age]); - // console.log(result); - return result; -} -// let now = solution(inputArray); -// // console.log(solution(inputArray)); -// console.log(now); -exports.solution = solution; diff --git a/Challenge/cellenar26/filterAge/solve.test.js b/Challenge/cellenar26/filterAge/solve.test.js deleted file mode 100644 index b9081601..00000000 --- a/Challenge/cellenar26/filterAge/solve.test.js +++ /dev/null @@ -1,32 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '영미', - age: 25, - }, - { - name: '일미', - age: 35, - }, - { - name: '이미', - age: 45, - }, - { - name: '삼미', - age: 55, - }, - ], - answer: [ - { name: '일미', age: 35 }, - { name: '이미', age: 45 }, - ], -}; - -describe('filterAge', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/cellenar26/filterIntersection/README.md b/Challenge/cellenar26/filterIntersection/README.md deleted file mode 100644 index d7c9ad39..00000000 --- a/Challenge/cellenar26/filterIntersection/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# 문제제목 - -## 설명 - -두 배열의 교집합을 출력하세요! diff --git a/Challenge/cellenar26/filterIntersection/solve.js b/Challenge/cellenar26/filterIntersection/solve.js deleted file mode 100644 index 316e99a6..00000000 --- a/Challenge/cellenar26/filterIntersection/solve.js +++ /dev/null @@ -1,12 +0,0 @@ -//두 배열의 교집합을 출력하세요! -function solution(inputArray1, inputArray2) { - const result = inputArray1.filter(item=>inputArray2.includes(item)); - return result; -} - -// let inputArray1 = [1, 2, 3, 4, 5]; -// let inputArray2 = [3, 4, 5, 6, 7]; -// let now = solution(inputArray1, inputArray2); -// console.log(now); - -exports.solution = solution; diff --git a/Challenge/cellenar26/filterIntersection/solve.test.js b/Challenge/cellenar26/filterIntersection/solve.test.js deleted file mode 100644 index 576cbc86..00000000 --- a/Challenge/cellenar26/filterIntersection/solve.test.js +++ /dev/null @@ -1,15 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: { - A: [1, 2, 3, 4, 5], - B: [3, 4, 5, 6, 7], - }, - answer: [3, 4, 5], -}; - -describe('filterIntersection', () => { - test('test1', () => { - expect(solution(test1.input.A, test1.input.B)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/cellenar26/filterOdd/README.md b/Challenge/cellenar26/filterOdd/README.md deleted file mode 100644 index cf9eda79..00000000 --- a/Challenge/cellenar26/filterOdd/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -홀수만 뽑아 배열로 만드세요 diff --git a/Challenge/cellenar26/filterOdd/solve.js b/Challenge/cellenar26/filterOdd/solve.js deleted file mode 100644 index caef9037..00000000 --- a/Challenge/cellenar26/filterOdd/solve.js +++ /dev/null @@ -1,7 +0,0 @@ -// write your codes -function solution(inputArray) { - const result = inputArray.filter(item => item%2==1); - return result; -} - -exports.solution = solution; diff --git a/Challenge/cellenar26/filterOdd/solve.test.js b/Challenge/cellenar26/filterOdd/solve.test.js deleted file mode 100644 index 8cfd7f5a..00000000 --- a/Challenge/cellenar26/filterOdd/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [4, 2, 5, 1, 3], - answer: [5, 1, 3], -}; - -const test2 = { - input: [4, 2, 6, 8, 50, 16], - answer: [], -}; - -const test3 = { - input: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], - answer: [1, 3, 5, 7, 9, 11], -}; - -describe('filterOdd', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/cellenar26/findWord/README.md b/Challenge/cellenar26/findWord/README.md deleted file mode 100644 index 8ef123f4..00000000 --- a/Challenge/cellenar26/findWord/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -용가리라는 단어가 있으면 true 없으면 false를 출력 - -## Expected Output - -true diff --git a/Challenge/cellenar26/findWord/solve.js b/Challenge/cellenar26/findWord/solve.js deleted file mode 100644 index d95fdcd0..00000000 --- a/Challenge/cellenar26/findWord/solve.js +++ /dev/null @@ -1,7 +0,0 @@ -// write your codes -function solution(inputArray) { - const target = '용가리'; - return inputArray.includes(target); -} - -exports.solution = solution; diff --git a/Challenge/cellenar26/findWord/solve.test.js b/Challenge/cellenar26/findWord/solve.test.js deleted file mode 100644 index 804114f6..00000000 --- a/Challenge/cellenar26/findWord/solve.test.js +++ /dev/null @@ -1,26 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: ['잠', '자', '고', '싶', '다', '용가리'], - answer: true, -}; -const test2 = { - input: ['맛있는', '용가리치킨'], - answer: false, -}; -const test3 = { - input: ['고질라', '용가리 ', '울트라맨'], - answer: false, -}; - -describe('findWord', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); \ No newline at end of file diff --git a/Challenge/cellenar26/forEachFilter/README.md b/Challenge/cellenar26/forEachFilter/README.md deleted file mode 100644 index d826e8e6..00000000 --- a/Challenge/cellenar26/forEachFilter/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소중 40 이상인 수만 뽑아 배열을 만드세요. - -## Expected Output - -[ 100, 40 ] diff --git a/Challenge/cellenar26/forEachFilter/solve.js b/Challenge/cellenar26/forEachFilter/solve.js deleted file mode 100644 index c650fa63..00000000 --- a/Challenge/cellenar26/forEachFilter/solve.js +++ /dev/null @@ -1,14 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes - -function solution(inputArray) { - const result = inputArray.filter(i => i>=40); - return result; - // let result = [] ; - // result= inputArray.filter(i => i>=40); - // console.log(result); - // console.log(inputArray); -} -exports.solution = solution; - diff --git a/Challenge/cellenar26/forEachFilter/solve.test.js b/Challenge/cellenar26/forEachFilter/solve.test.js deleted file mode 100644 index 107e832d..00000000 --- a/Challenge/cellenar26/forEachFilter/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [10,20,39,40,100,300], - answer: [40,100,300] -}; - -describe('forEachFilter', ()=> { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); \ No newline at end of file diff --git a/Challenge/cellenar26/forEachFilterIsNaN/README.md b/Challenge/cellenar26/forEachFilterIsNaN/README.md deleted file mode 100644 index ba71774d..00000000 --- a/Challenge/cellenar26/forEachFilterIsNaN/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소중 숫자인 원소만 뽑아 배열을 만드세요. - -## Expected Output - -[ 1, 40, 51.5, 88 ] diff --git a/Challenge/cellenar26/forEachFilterIsNaN/solve.js b/Challenge/cellenar26/forEachFilterIsNaN/solve.js deleted file mode 100644 index 98b75e07..00000000 --- a/Challenge/cellenar26/forEachFilterIsNaN/solve.js +++ /dev/null @@ -1,11 +0,0 @@ -const inputArray = [ 1, 40, "라매", "개발자", 51.5, 'a', 88 ]; - -// write your codes - -function solution(inputArray) { - return inputArray.filter(item => isNaN(item) == false); -} - -// let now = solution(inputArray); -// console.log(now); -exports.solution = solution; \ No newline at end of file diff --git a/Challenge/cellenar26/forEachFilterIsNaN/solve.test.js b/Challenge/cellenar26/forEachFilterIsNaN/solve.test.js deleted file mode 100644 index 467e20a9..00000000 --- a/Challenge/cellenar26/forEachFilterIsNaN/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 40, "라매", "개발자", "유튜브",51.5, 'a', 88 ], - answer: [1,40, 51.5,88] -}; - -describe('숫자만 배열에 나아야 한다.', ()=> { - test('배열에 숫자만 남아야 한다.',()=> { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); \ No newline at end of file diff --git a/Challenge/cellenar26/forEachMap/README.md b/Challenge/cellenar26/forEachMap/README.md deleted file mode 100644 index d0e84215..00000000 --- a/Challenge/cellenar26/forEachMap/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# forEachReduce - -## 설명 - -forEach 메소드를 사용해서 배열의 각 원소 끝에 '%'를 붙인 문자열 배열을 출력하세요 - -## Expected Output - -[ '100%', '10%', '20%', '40%' ] diff --git a/Challenge/cellenar26/forEachMap/solve.js b/Challenge/cellenar26/forEachMap/solve.js deleted file mode 100644 index 031336f6..00000000 --- a/Challenge/cellenar26/forEachMap/solve.js +++ /dev/null @@ -1,10 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes - -function solution(inputArray) { - return inputArray = inputArray.map(item => item.toString()+'%'); - // console.log(inputArray); -} - -exports.solution = solution; \ No newline at end of file diff --git a/Challenge/cellenar26/forEachMap/solve.test.js b/Challenge/cellenar26/forEachMap/solve.test.js deleted file mode 100644 index fa902b60..00000000 --- a/Challenge/cellenar26/forEachMap/solve.test.js +++ /dev/null @@ -1,17 +0,0 @@ -const { solution } = require("./solve"); - -const test1 = { - input: [1,2,3,4,5], - answer: ['1%','2%','3%','4%','5%'] -}; - -describe('everyArrayWithForEachMap', () => { - test('숫자로만 된 배열이면 true이어야 한다.', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - - // 다른 테스트 케이스 - // test('숫자로만 된 배열이 아니면 false이어야 한다.', () => { - // expect(solution(test2.input)).toEqual(test2.answer); - // }); -}); \ No newline at end of file diff --git a/Challenge/cellenar26/forEachReduce/README.md b/Challenge/cellenar26/forEachReduce/README.md deleted file mode 100644 index 8f369ed9..00000000 --- a/Challenge/cellenar26/forEachReduce/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# forEachReduce - -## 설명 - -forEach 메소드를 사용해서 배열의 총 합을 출력하는 코드를 작성하세요 - -## Expected Output - -170 diff --git a/Challenge/cellenar26/forEachReduce/solve.js b/Challenge/cellenar26/forEachReduce/solve.js deleted file mode 100644 index a04069c2..00000000 --- a/Challenge/cellenar26/forEachReduce/solve.js +++ /dev/null @@ -1,11 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes -function solution(inputArray) { - let now = 0; - inputArray.forEach(i=>now = now+i); - // console.log(now); - return now; -} -// solution(inputArray); -exports.solution = solution; diff --git a/Challenge/cellenar26/forEachReduce/solve.test.js b/Challenge/cellenar26/forEachReduce/solve.test.js deleted file mode 100644 index 6d28d511..00000000 --- a/Challenge/cellenar26/forEachReduce/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const {solution} = require('./solve'); - -const test1 = { - input: [10,20,40], - answer: 70 -}; - -describe('forEachReduce', ()=> { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/cellenar26/mapAddPercent/README.md b/Challenge/cellenar26/mapAddPercent/README.md deleted file mode 100644 index 75e73042..00000000 --- a/Challenge/cellenar26/mapAddPercent/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -map 메소드를 사용해 배열 각각 숫자 뒤에 %를 붙인 문자열을 만드세요 diff --git a/Challenge/cellenar26/mapAddPercent/solve.js b/Challenge/cellenar26/mapAddPercent/solve.js deleted file mode 100644 index aebe7052..00000000 --- a/Challenge/cellenar26/mapAddPercent/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -// map 메소드를 사용해 배열 각각 숫자 뒤에 %를 붙인 문자열을 만드세요 -// write your codes -function solution(inputArray) { - const result = inputArray.map(item => item.toString()+"%"); - return result; -} - -exports.solution = solution; diff --git a/Challenge/cellenar26/mapAddPercent/solve.test.js b/Challenge/cellenar26/mapAddPercent/solve.test.js deleted file mode 100644 index dac1b3cc..00000000 --- a/Challenge/cellenar26/mapAddPercent/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: ['100%', '10%', '20%', '40%'], -}; - -describe('mapAddPercent', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/cellenar26/reduceMaxValueNIndex/README.md b/Challenge/cellenar26/reduceMaxValueNIndex/README.md deleted file mode 100644 index 965bdec6..00000000 --- a/Challenge/cellenar26/reduceMaxValueNIndex/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -reduce 메소드를 사용해 최댓값의 값을 maxValue에, 해당 값의 index를 idx에 넣은 객체를 출력하세요 diff --git a/Challenge/cellenar26/reduceMaxValueNIndex/solve.js b/Challenge/cellenar26/reduceMaxValueNIndex/solve.js deleted file mode 100644 index 415d6bd2..00000000 --- a/Challenge/cellenar26/reduceMaxValueNIndex/solve.js +++ /dev/null @@ -1,22 +0,0 @@ -// reduce 메소드를 사용해 최댓값의 값을 maxValue에, 해당 값의 index를 idx에 넣은 객체를 출력하세요 -// write your codes -const inputArray = [3, 29, 38, 12, 57, 74, 40, 85, 61]; -function solution(inputArray) { - let result; - result = inputArray.reduce(getMaxValueWithIndex); - return result; -} - -const getMaxValueWithIndex = (acc, cur, idxx, origin)=> { - let maxValue = cur; - let idx = 0; - for (let i = 0; i maxValue) { - maxValue = origin[i]; - idx = i; - } - } - return {maxValue, idx}; -} -solution(inputArray); -exports.solution = solution; diff --git a/Challenge/cellenar26/reduceMaxValueNIndex/solve.test.js b/Challenge/cellenar26/reduceMaxValueNIndex/solve.test.js deleted file mode 100644 index bbe07133..00000000 --- a/Challenge/cellenar26/reduceMaxValueNIndex/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [3, 29, 38, 12, 57, 74, 40, 85, 61], - answer: { maxValue: 85, idx: 7 }, -}; - -describe('reduceMaxValueNIndex', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/cellenar26/reduceSum/README.md b/Challenge/cellenar26/reduceSum/README.md deleted file mode 100644 index 8c607eb2..00000000 --- a/Challenge/cellenar26/reduceSum/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -reduce 메소드를 사용해서 배열의 모든 수의 합을 구하세요. - -## Expected Output - -106 diff --git a/Challenge/cellenar26/reduceSum/solve.js b/Challenge/cellenar26/reduceSum/solve.js deleted file mode 100644 index c9c9ea7c..00000000 --- a/Challenge/cellenar26/reduceSum/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -// write your codes -const inputArray = [10, 3, 20, 5, 8, 60]; -function solution(inputArray) { - return inputArray.reduce((acc, currrrrrr)=>{ - return acc+currrrrrr; - }); -} -exports.solution = solution; diff --git a/Challenge/cellenar26/reduceSum/solve.test.js b/Challenge/cellenar26/reduceSum/solve.test.js deleted file mode 100644 index 046c40cb..00000000 --- a/Challenge/cellenar26/reduceSum/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [10, 3, 20, 5, 8, 60], - answer: 106, -}; - -describe('reduceSum', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/chanwoo95/filterAge/README.md b/Challenge/chanwoo95/filterAge/README.md deleted file mode 100644 index 1c73138e..00000000 --- a/Challenge/chanwoo95/filterAge/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소의 age가 30이상 50미만인 사람만 있는 객체의 배열을 만드세요 - -## Expected Output - -[ { name: '일미', age: 35 }, { name: '이미', age: 45 } ] diff --git a/Challenge/chanwoo95/filterAge/solve.js b/Challenge/chanwoo95/filterAge/solve.js deleted file mode 100644 index ebab1c49..00000000 --- a/Challenge/chanwoo95/filterAge/solve.js +++ /dev/null @@ -1,23 +0,0 @@ -const inputArray = [ - { - name: '영미', - age: 25, - }, - { - name: '일미', - age: 35, - }, - { - name: '이미', - age: 45, - }, - { - name: '삼미', - age: 55, - }, -] -// write your codes - -const result = inputArray.filter( info => info.age >= 30 && info.age < 50); - -console.log(result); diff --git a/Challenge/chanwoo95/filterIntersection/README.md b/Challenge/chanwoo95/filterIntersection/README.md deleted file mode 100644 index 56c8d04a..00000000 --- a/Challenge/chanwoo95/filterIntersection/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -두 배열의 교집합을 출력하세요! - -## Expected Output - -[3, 4, 5] \ No newline at end of file diff --git a/Challenge/chanwoo95/filterIntersection/solve.js b/Challenge/chanwoo95/filterIntersection/solve.js deleted file mode 100644 index a69aa8d8..00000000 --- a/Challenge/chanwoo95/filterIntersection/solve.js +++ /dev/null @@ -1,7 +0,0 @@ -const A = [1, 2, 3, 4, 5]; -const B = [3, 4, 5, 6, 7]; -// write your codes - -const result = A.filter( item => B.includes(item)); - -console.log(result); \ No newline at end of file diff --git a/Challenge/chanwoo95/filterOdd/README.md b/Challenge/chanwoo95/filterOdd/README.md deleted file mode 100644 index 9bf99a18..00000000 --- a/Challenge/chanwoo95/filterOdd/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -홀수만 뽑아 배열로 만드세요 - -## Expected Output - -[5, 1, 3] diff --git a/Challenge/chanwoo95/filterOdd/solve.js b/Challenge/chanwoo95/filterOdd/solve.js deleted file mode 100644 index 5ece5348..00000000 --- a/Challenge/chanwoo95/filterOdd/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -const inputArray = [4, 2, 5, 1, 3]; - -// write your codes - - -const result = inputArray.filter( item => item % 2 === 1); - -console.log(result); - diff --git a/Challenge/chanwoo95/findWord/README.md b/Challenge/chanwoo95/findWord/README.md deleted file mode 100644 index 8ef123f4..00000000 --- a/Challenge/chanwoo95/findWord/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -용가리라는 단어가 있으면 true 없으면 false를 출력 - -## Expected Output - -true diff --git a/Challenge/chanwoo95/findWord/solve.js b/Challenge/chanwoo95/findWord/solve.js deleted file mode 100644 index 92432896..00000000 --- a/Challenge/chanwoo95/findWord/solve.js +++ /dev/null @@ -1,7 +0,0 @@ -const inputArray = ['잠', '자', '고', '싶', '다', '용가리']; - -// write your codes - -const result = inputArray.includes("용가리"); - -console.log(result); \ No newline at end of file diff --git a/Challenge/chanwoo95/forEachFilter/README.md b/Challenge/chanwoo95/forEachFilter/README.md deleted file mode 100644 index d826e8e6..00000000 --- a/Challenge/chanwoo95/forEachFilter/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소중 40 이상인 수만 뽑아 배열을 만드세요. - -## Expected Output - -[ 100, 40 ] diff --git a/Challenge/chanwoo95/forEachFilter/solve.js b/Challenge/chanwoo95/forEachFilter/solve.js deleted file mode 100644 index 91c85d22..00000000 --- a/Challenge/chanwoo95/forEachFilter/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes - -const result = inputArray.filter( item => item >= 40); -console.log(result); \ No newline at end of file diff --git a/Challenge/chanwoo95/forEachFilterIsNaN/README.md b/Challenge/chanwoo95/forEachFilterIsNaN/README.md deleted file mode 100644 index ba71774d..00000000 --- a/Challenge/chanwoo95/forEachFilterIsNaN/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소중 숫자인 원소만 뽑아 배열을 만드세요. - -## Expected Output - -[ 1, 40, 51.5, 88 ] diff --git a/Challenge/chanwoo95/forEachFilterIsNaN/solve.js b/Challenge/chanwoo95/forEachFilterIsNaN/solve.js deleted file mode 100644 index 04ffc86b..00000000 --- a/Challenge/chanwoo95/forEachFilterIsNaN/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -const inputArray = [ 1, 40, "라매", "개발자", 51.5, 'a', 88 ]; - -// write your codes - -const result = inputArray.filter( item => !isNaN(item) ); -console.log(result); \ No newline at end of file diff --git a/Challenge/chanwoo95/forEachMap/README.md b/Challenge/chanwoo95/forEachMap/README.md deleted file mode 100644 index d0e84215..00000000 --- a/Challenge/chanwoo95/forEachMap/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# forEachReduce - -## 설명 - -forEach 메소드를 사용해서 배열의 각 원소 끝에 '%'를 붙인 문자열 배열을 출력하세요 - -## Expected Output - -[ '100%', '10%', '20%', '40%' ] diff --git a/Challenge/chanwoo95/forEachMap/solve.js b/Challenge/chanwoo95/forEachMap/solve.js deleted file mode 100644 index ef7cde1b..00000000 --- a/Challenge/chanwoo95/forEachMap/solve.js +++ /dev/null @@ -1,11 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes - -const result = []; - -inputArray.forEach( item => { - result.push(`${item}%`); -}) - -console.log(result); \ No newline at end of file diff --git a/Challenge/chanwoo95/forEachReduce/README.md b/Challenge/chanwoo95/forEachReduce/README.md deleted file mode 100644 index 8f369ed9..00000000 --- a/Challenge/chanwoo95/forEachReduce/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# forEachReduce - -## 설명 - -forEach 메소드를 사용해서 배열의 총 합을 출력하는 코드를 작성하세요 - -## Expected Output - -170 diff --git a/Challenge/chanwoo95/forEachReduce/solve.js b/Challenge/chanwoo95/forEachReduce/solve.js deleted file mode 100644 index 5b803b3b..00000000 --- a/Challenge/chanwoo95/forEachReduce/solve.js +++ /dev/null @@ -1,14 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes - -let sum = 0; - -inputArray.forEach( item => sum += item); -console.log(sum); - - -// reduce() ver. -// const reducer = (accumulator, currentValue) => accumulator + currentValue; - -// console.log(inputArray.reduce(reducer)); \ No newline at end of file diff --git a/Challenge/chanwoo95/mapAddPercent/README.md b/Challenge/chanwoo95/mapAddPercent/README.md deleted file mode 100644 index 4156a2f9..00000000 --- a/Challenge/chanwoo95/mapAddPercent/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -map 메소드를 사용해 배열 각각 숫자 뒤에 %를 붙인 문자열을 만드세요 - -## Expected Output - -['100%', '10%', '20%', '40%'] diff --git a/Challenge/chanwoo95/mapAddPercent/solve.js b/Challenge/chanwoo95/mapAddPercent/solve.js deleted file mode 100644 index f8724149..00000000 --- a/Challenge/chanwoo95/mapAddPercent/solve.js +++ /dev/null @@ -1,7 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes - -const result = inputArray.map( item => `${item}%`); - -console.log(result); \ No newline at end of file diff --git a/Challenge/chanwoo95/mapAppendOrder/README.md b/Challenge/chanwoo95/mapAppendOrder/README.md deleted file mode 100644 index fccb0d1a..00000000 --- a/Challenge/chanwoo95/mapAppendOrder/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# 문제제목 - -## 설명 - -배열의 값을 name 프로퍼티에 넣고 몇번째 원소인지를 order에 넣은 객체의 배열을 출력하세요 - -## Expected Output - -[ - { name: '홍길동', order: 1 }, - { name: '둘리', order: 2 }, - { name: '루피', order: 3 } -] diff --git a/Challenge/chanwoo95/mapAppendOrder/solve.js b/Challenge/chanwoo95/mapAppendOrder/solve.js deleted file mode 100644 index 00a8d10a..00000000 --- a/Challenge/chanwoo95/mapAppendOrder/solve.js +++ /dev/null @@ -1,10 +0,0 @@ -const inputArray = ['홍길동', '둘리', '루피']; - -// write your codes - -const result = inputArray.map( (name, index) => ({ - name, - order:index+1 -})) - -console.log(result); \ No newline at end of file diff --git a/Challenge/chanwoo95/reduceSum/README.md b/Challenge/chanwoo95/reduceSum/README.md deleted file mode 100644 index 8c607eb2..00000000 --- a/Challenge/chanwoo95/reduceSum/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -reduce 메소드를 사용해서 배열의 모든 수의 합을 구하세요. - -## Expected Output - -106 diff --git a/Challenge/chanwoo95/reduceSum/solve.js b/Challenge/chanwoo95/reduceSum/solve.js deleted file mode 100644 index a3970d70..00000000 --- a/Challenge/chanwoo95/reduceSum/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -const inputArray = [10, 3, 20, 5, 8, 60]; - -// write your codes - - -const result = inputArray.reduce( (acc, n) => acc+n); - -console.log(result); \ No newline at end of file diff --git a/Challenge/cheol-cheol/everyArray/README.md b/Challenge/cheol-cheol/everyArray/README.md deleted file mode 100644 index 442558f6..00000000 --- a/Challenge/cheol-cheol/everyArray/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -every를 이용해서 모든 원소가 짝수인지 아닌지를 판별하세요 - -## Expected Output - -true \ No newline at end of file diff --git a/Challenge/cheol-cheol/everyArray/solve.js b/Challenge/cheol-cheol/everyArray/solve.js deleted file mode 100644 index 57233ec9..00000000 --- a/Challenge/cheol-cheol/everyArray/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -function solution(inputArray) { - const answer = inputArray.every((num) => num % 2 === 0); - return answer; -} - -exports.solution = solution; diff --git a/Challenge/cheol-cheol/expDivOdd/README.md b/Challenge/cheol-cheol/expDivOdd/README.md deleted file mode 100644 index c07ab10b..00000000 --- a/Challenge/cheol-cheol/expDivOdd/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -제곱한 후 3으로 나눈 나머지가 홀수인 것 을 뽑은 배열의 총 합을 구하세요. diff --git a/Challenge/cheol-cheol/expDivOdd/solve.js b/Challenge/cheol-cheol/expDivOdd/solve.js deleted file mode 100644 index eeb83cb8..00000000 --- a/Challenge/cheol-cheol/expDivOdd/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -function solution(inputArray) { - const answer = inputArray - .map((num) => num * num) - .filter((num) => num % 3 === 1) - .reduce((a, b) => a + b, 0); - return answer; -} - -exports.solution = solution; diff --git a/Challenge/cheol-cheol/expDivOdd/solve.test.js b/Challenge/cheol-cheol/expDivOdd/solve.test.js deleted file mode 100644 index ca37fcc3..00000000 --- a/Challenge/cheol-cheol/expDivOdd/solve.test.js +++ /dev/null @@ -1,21 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 7, 3, 4, 6], - answer: 66, -}; - -const test2 = { - input: [2, 3, 6, 8, 10], - answer: 168, -}; - -describe('everyArray', () => { - test('1, 7, 3, 4, 6', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - - test('2, 3, 6, 8, 10', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); -}); diff --git a/Challenge/cheol-cheol/filterAge/README.md b/Challenge/cheol-cheol/filterAge/README.md deleted file mode 100644 index 873a15c1..00000000 --- a/Challenge/cheol-cheol/filterAge/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소의 age가 30이상 50미만인 사람만 있는 객체의 배열을 만드세요 diff --git a/Challenge/cheol-cheol/filterAge/solve.js b/Challenge/cheol-cheol/filterAge/solve.js deleted file mode 100644 index 86ea0e7f..00000000 --- a/Challenge/cheol-cheol/filterAge/solve.js +++ /dev/null @@ -1,7 +0,0 @@ -// write your codes -function solution(inputArray) { - const answer = inputArray.filter(({ age }) => age >= 30 && age < 50); - return answer; -} - -exports.solution = solution; diff --git a/Challenge/cheol-cheol/filterAge/solve.test.js b/Challenge/cheol-cheol/filterAge/solve.test.js deleted file mode 100644 index b9081601..00000000 --- a/Challenge/cheol-cheol/filterAge/solve.test.js +++ /dev/null @@ -1,32 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '영미', - age: 25, - }, - { - name: '일미', - age: 35, - }, - { - name: '이미', - age: 45, - }, - { - name: '삼미', - age: 55, - }, - ], - answer: [ - { name: '일미', age: 35 }, - { name: '이미', age: 45 }, - ], -}; - -describe('filterAge', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/cheol-cheol/filterIntersection/README.md b/Challenge/cheol-cheol/filterIntersection/README.md deleted file mode 100644 index d7c9ad39..00000000 --- a/Challenge/cheol-cheol/filterIntersection/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# 문제제목 - -## 설명 - -두 배열의 교집합을 출력하세요! diff --git a/Challenge/cheol-cheol/filterIntersection/solve.js b/Challenge/cheol-cheol/filterIntersection/solve.js deleted file mode 100644 index bc4b6641..00000000 --- a/Challenge/cheol-cheol/filterIntersection/solve.js +++ /dev/null @@ -1,5 +0,0 @@ -function solution(inputArray1, inputArray2) { - return inputArray1.filter((el) => inputArray2.includes(el)); -} - -exports.solution = solution; diff --git a/Challenge/cheol-cheol/filterIntersection/solve.test.js b/Challenge/cheol-cheol/filterIntersection/solve.test.js deleted file mode 100644 index 576cbc86..00000000 --- a/Challenge/cheol-cheol/filterIntersection/solve.test.js +++ /dev/null @@ -1,15 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: { - A: [1, 2, 3, 4, 5], - B: [3, 4, 5, 6, 7], - }, - answer: [3, 4, 5], -}; - -describe('filterIntersection', () => { - test('test1', () => { - expect(solution(test1.input.A, test1.input.B)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/cheol-cheol/filterOdd/README.md b/Challenge/cheol-cheol/filterOdd/README.md deleted file mode 100644 index cf9eda79..00000000 --- a/Challenge/cheol-cheol/filterOdd/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -홀수만 뽑아 배열로 만드세요 diff --git a/Challenge/cheol-cheol/filterOdd/solve.js b/Challenge/cheol-cheol/filterOdd/solve.js deleted file mode 100644 index 0773b8db..00000000 --- a/Challenge/cheol-cheol/filterOdd/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.filter((el) => el % 2 === 1); -} - -exports.solution = solution; diff --git a/Challenge/cheol-cheol/filterOdd/solve.test.js b/Challenge/cheol-cheol/filterOdd/solve.test.js deleted file mode 100644 index 8cfd7f5a..00000000 --- a/Challenge/cheol-cheol/filterOdd/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [4, 2, 5, 1, 3], - answer: [5, 1, 3], -}; - -const test2 = { - input: [4, 2, 6, 8, 50, 16], - answer: [], -}; - -const test3 = { - input: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], - answer: [1, 3, 5, 7, 9, 11], -}; - -describe('filterOdd', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/cheol-cheol/findWord/README.md b/Challenge/cheol-cheol/findWord/README.md deleted file mode 100644 index 8ef123f4..00000000 --- a/Challenge/cheol-cheol/findWord/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -용가리라는 단어가 있으면 true 없으면 false를 출력 - -## Expected Output - -true diff --git a/Challenge/cheol-cheol/findWord/solve.js b/Challenge/cheol-cheol/findWord/solve.js deleted file mode 100644 index 1b577d90..00000000 --- a/Challenge/cheol-cheol/findWord/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -// write your codes -function solution(inputArray) { - let isTrue = false; - if (inputArray.find((el) => el === "용가리")) isTrue = true; - return isTrue; -} - -exports.solution = solution; diff --git a/Challenge/cheol-cheol/findWord/solve.test.js b/Challenge/cheol-cheol/findWord/solve.test.js deleted file mode 100644 index 804114f6..00000000 --- a/Challenge/cheol-cheol/findWord/solve.test.js +++ /dev/null @@ -1,26 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: ['잠', '자', '고', '싶', '다', '용가리'], - answer: true, -}; -const test2 = { - input: ['맛있는', '용가리치킨'], - answer: false, -}; -const test3 = { - input: ['고질라', '용가리 ', '울트라맨'], - answer: false, -}; - -describe('findWord', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); \ No newline at end of file diff --git a/Challenge/cheol-cheol/forEachFilter/README.md b/Challenge/cheol-cheol/forEachFilter/README.md deleted file mode 100644 index 6dcbc7c2..00000000 --- a/Challenge/cheol-cheol/forEachFilter/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소중 40 이상인 수만 뽑아 배열을 만드세요. diff --git a/Challenge/cheol-cheol/forEachFilter/solve.js b/Challenge/cheol-cheol/forEachFilter/solve.js deleted file mode 100644 index 6e1989dd..00000000 --- a/Challenge/cheol-cheol/forEachFilter/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -// write your codes -function solution(inputArray) { - let newArr = []; - inputArray.filter((el) => el >= 40).forEach((el) => newArr.push(el)); - return newArr; -} - -exports.solution = solution; diff --git a/Challenge/cheol-cheol/forEachFilter/solve.test.js b/Challenge/cheol-cheol/forEachFilter/solve.test.js deleted file mode 100644 index 3d73b25c..00000000 --- a/Challenge/cheol-cheol/forEachFilter/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: [100, 40], -}; - -describe('forEachFilter', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/cheol-cheol/forEachFilterIsNaN/README.md b/Challenge/cheol-cheol/forEachFilterIsNaN/README.md deleted file mode 100644 index 570c030e..00000000 --- a/Challenge/cheol-cheol/forEachFilterIsNaN/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소중 숫자인 원소만 뽑아 배열을 만드세요. diff --git a/Challenge/cheol-cheol/forEachFilterIsNaN/solve.js b/Challenge/cheol-cheol/forEachFilterIsNaN/solve.js deleted file mode 100644 index 299a4587..00000000 --- a/Challenge/cheol-cheol/forEachFilterIsNaN/solve.js +++ /dev/null @@ -1,10 +0,0 @@ -// write your codes -function solution(inputArray) { - let newArr = []; - inputArray - .filter((el) => !isNaN(el) && typeof el === "number") - .forEach((el) => newArr.push(el)); - return newArr; -} - -exports.solution = solution; diff --git a/Challenge/cheol-cheol/forEachFilterIsNaN/solve.test.js b/Challenge/cheol-cheol/forEachFilterIsNaN/solve.test.js deleted file mode 100644 index d6e118bb..00000000 --- a/Challenge/cheol-cheol/forEachFilterIsNaN/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 40, '라매', '개발자', 51.5, 'a', 88], - answer: [1, 40, 51.5, 88], -}; - -const test2 = { - input: [1, 2, 3, '4', 5, '6'], - answer: [1, 2, 3, 5], -}; - -const test3 = { - input: [-3, -2, -1, 0, 1, 2, 3], - answer: [-3, -2, -1, 0, 1, 2, 3], -}; - -describe('forEachFilterIsNaN', () => { - test('test1: 숫자,문자 판별', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2: 문자로된 숫자 판별', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3: 음수 양수 포함', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); \ No newline at end of file diff --git a/Challenge/cheol-cheol/forEachMap/README.md b/Challenge/cheol-cheol/forEachMap/README.md deleted file mode 100644 index 1e8e03c8..00000000 --- a/Challenge/cheol-cheol/forEachMap/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -forEach 메소드를 사용해서 배열의 각 원소 끝에 '%'를 붙인 문자열 배열을 출력하세요 diff --git a/Challenge/cheol-cheol/forEachMap/solve.js b/Challenge/cheol-cheol/forEachMap/solve.js deleted file mode 100644 index 0fa7e67e..00000000 --- a/Challenge/cheol-cheol/forEachMap/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -// write your codes -function solution(inputArray) { - let mapArr = []; - inputArray.forEach((el) => mapArr.push(el + "%")); - return mapArr; -} - -exports.solution = solution; diff --git a/Challenge/cheol-cheol/forEachMap/solve.test.js b/Challenge/cheol-cheol/forEachMap/solve.test.js deleted file mode 100644 index de4868c6..00000000 --- a/Challenge/cheol-cheol/forEachMap/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: ['100%', '10%', '20%', '40%'], -}; - -describe('forEachMap', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/cheol-cheol/forEachReduce/README.md b/Challenge/cheol-cheol/forEachReduce/README.md deleted file mode 100644 index a984df2d..00000000 --- a/Challenge/cheol-cheol/forEachReduce/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -forEach 메소드를 사용해서 배열의 총 합을 출력하는 코드를 작성하세요 diff --git a/Challenge/cheol-cheol/forEachReduce/solve.js b/Challenge/cheol-cheol/forEachReduce/solve.js deleted file mode 100644 index bbd629a2..00000000 --- a/Challenge/cheol-cheol/forEachReduce/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -// write your codes -function solution(inputArray) { - let reduce = 0; - inputArray.forEach((el) => (reduce += Number(el))); - return reduce; -} - -exports.solution = solution; diff --git a/Challenge/cheol-cheol/forEachReduce/solve.test.js b/Challenge/cheol-cheol/forEachReduce/solve.test.js deleted file mode 100644 index 397e4b50..00000000 --- a/Challenge/cheol-cheol/forEachReduce/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: 170, -}; - -const test2 = { - input: [120, -20, -30, 0, 15], - answer: 85, -}; - -const test3 = { - input: [-10, -20, -30], - answer: -60, -}; - -describe('forEachReduce', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2: 음수가 포함된 계산', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3: 음수만 존재하는 계산', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/cheol-cheol/mapAddPercent/README.md b/Challenge/cheol-cheol/mapAddPercent/README.md deleted file mode 100644 index 75e73042..00000000 --- a/Challenge/cheol-cheol/mapAddPercent/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -map 메소드를 사용해 배열 각각 숫자 뒤에 %를 붙인 문자열을 만드세요 diff --git a/Challenge/cheol-cheol/mapAddPercent/solve.js b/Challenge/cheol-cheol/mapAddPercent/solve.js deleted file mode 100644 index 97804c0f..00000000 --- a/Challenge/cheol-cheol/mapAddPercent/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.map((el) => el + "%"); -} - -exports.solution = solution; diff --git a/Challenge/cheol-cheol/mapAddPercent/solve.test.js b/Challenge/cheol-cheol/mapAddPercent/solve.test.js deleted file mode 100644 index dac1b3cc..00000000 --- a/Challenge/cheol-cheol/mapAddPercent/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: ['100%', '10%', '20%', '40%'], -}; - -describe('mapAddPercent', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/cheol-cheol/mapAppendOrder/README.md b/Challenge/cheol-cheol/mapAppendOrder/README.md deleted file mode 100644 index 1435623a..00000000 --- a/Challenge/cheol-cheol/mapAppendOrder/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열의 값을 name 프로퍼티에 넣고 몇번째 원소인지를 order에 넣은 객체의 배열을 출력하세요 diff --git a/Challenge/cheol-cheol/mapAppendOrder/solve.js b/Challenge/cheol-cheol/mapAppendOrder/solve.js deleted file mode 100644 index d7bc5ed7..00000000 --- a/Challenge/cheol-cheol/mapAppendOrder/solve.js +++ /dev/null @@ -1,10 +0,0 @@ -// write your codes -function solution(inputArray) { - let result = inputArray.map((el, index) => ({ - name: el, - order: index + 1, - })); - return result; -} - -exports.solution = solution; diff --git a/Challenge/cheol-cheol/mapAppendOrder/solve.test.js b/Challenge/cheol-cheol/mapAppendOrder/solve.test.js deleted file mode 100644 index e08db10c..00000000 --- a/Challenge/cheol-cheol/mapAppendOrder/solve.test.js +++ /dev/null @@ -1,16 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: ['홍길동', '둘리', '루피'], - answer: [ - { name: '홍길동', order: 1 }, - { name: '둘리', order: 2 }, - { name: '루피', order: 3 }, - ], -}; - -describe('mapAppendOrder', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/cheol-cheol/reduceNameNickname/README.md b/Challenge/cheol-cheol/reduceNameNickname/README.md deleted file mode 100644 index b6920e05..00000000 --- a/Challenge/cheol-cheol/reduceNameNickname/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -입력받은 객채배열의 nickname을 key, name을 value로 하는 객체를 출력하세요 diff --git a/Challenge/cheol-cheol/reduceNameNickname/solve.js b/Challenge/cheol-cheol/reduceNameNickname/solve.js deleted file mode 100644 index c400fb34..00000000 --- a/Challenge/cheol-cheol/reduceNameNickname/solve.js +++ /dev/null @@ -1,11 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.reduce((acc, el) => { - return { - ...acc, - [el.nickname]: el.name, - }; - }, {}); -} - -exports.solution = solution; diff --git a/Challenge/cheol-cheol/reduceNameNickname/solve.test.js b/Challenge/cheol-cheol/reduceNameNickname/solve.test.js deleted file mode 100644 index 67b74529..00000000 --- a/Challenge/cheol-cheol/reduceNameNickname/solve.test.js +++ /dev/null @@ -1,25 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '홍길동', - nickname: 'hong', - }, - { - name: '둘리', - nickname: '2li', - }, - { - name: '오스트랄로피테쿠스', - nickname: '1Cin', - }, - ], - answer: { hong: '홍길동', '2li': '둘리', '1Cin': '오스트랄로피테쿠스' }, -}; - -describe('reduceNameNickname', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/cheol-cheol/reduceSum/README.md b/Challenge/cheol-cheol/reduceSum/README.md deleted file mode 100644 index 8c607eb2..00000000 --- a/Challenge/cheol-cheol/reduceSum/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -reduce 메소드를 사용해서 배열의 모든 수의 합을 구하세요. - -## Expected Output - -106 diff --git a/Challenge/cheol-cheol/reduceSum/solve.js b/Challenge/cheol-cheol/reduceSum/solve.js deleted file mode 100644 index 760869a9..00000000 --- a/Challenge/cheol-cheol/reduceSum/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.reduce((acc, el) => acc + el, 0); -} - -exports.solution = solution; diff --git a/Challenge/cheol-cheol/reduceSum/solve.test.js b/Challenge/cheol-cheol/reduceSum/solve.test.js deleted file mode 100644 index 046c40cb..00000000 --- a/Challenge/cheol-cheol/reduceSum/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [10, 3, 20, 5, 8, 60], - answer: 106, -}; - -describe('reduceSum', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/cheol-cheol/sortByPrice/README.md b/Challenge/cheol-cheol/sortByPrice/README.md deleted file mode 100644 index b1ccf70e..00000000 --- a/Challenge/cheol-cheol/sortByPrice/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 - -## Expected Output - -[ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 } -] diff --git a/Challenge/cheol-cheol/sortByPrice/solve.js b/Challenge/cheol-cheol/sortByPrice/solve.js deleted file mode 100644 index cb4fa4c3..00000000 --- a/Challenge/cheol-cheol/sortByPrice/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.sort((a, b) => a.price - b.price); -} - -exports.solution = solution; diff --git a/Challenge/cheol-cheol/sortByPrice/solve.test.js b/Challenge/cheol-cheol/sortByPrice/solve.test.js deleted file mode 100644 index 3d6a3431..00000000 --- a/Challenge/cheol-cheol/sortByPrice/solve.test.js +++ /dev/null @@ -1,34 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '사과', - price: 1000, - }, - { - name: '수박', - price: 5000, - }, - { - name: '당근', - price: 2000, - }, - { - name: '참외', - price: 10000, - }, - ], - answer: [ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 }, - ], -}; - -describe('sortByPrice', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/cheol-cheol/sortByPriceAndQuantity/README.md b/Challenge/cheol-cheol/sortByPriceAndQuantity/README.md deleted file mode 100644 index 41cd5c95..00000000 --- a/Challenge/cheol-cheol/sortByPriceAndQuantity/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 -만약 price가 같다면 quantity기준으로 오름차순 정렬하세요 - -## Expected Output - -[ - { name: '사과', price: 1000, quantity: 2 }, - { name: '오이', price: 2000, quantity: 49 }, - { name: '당근', price: 2000, quantity: 50 }, - { name: '참외', price: 5000, quantity: 10 }, - { name: '수박', price: 5000, quantity: 20 } -] diff --git a/Challenge/cheol-cheol/sortByPriceAndQuantity/solve.js b/Challenge/cheol-cheol/sortByPriceAndQuantity/solve.js deleted file mode 100644 index 3df418ec..00000000 --- a/Challenge/cheol-cheol/sortByPriceAndQuantity/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.sort((a, b) => - a.price === b.price ? a.quantity - b.quantity : a.price - b.price - ); -} - -exports.solution = solution; diff --git a/Challenge/cheol-cheol/sortByPriceAndQuantity/solve.test.js b/Challenge/cheol-cheol/sortByPriceAndQuantity/solve.test.js deleted file mode 100644 index 424f42b7..00000000 --- a/Challenge/cheol-cheol/sortByPriceAndQuantity/solve.test.js +++ /dev/null @@ -1,44 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '사과', - price: 1000, - quantity: 2, - }, - { - name: '수박', - price: 5000, - quantity: 20, - }, - { - name: '당근', - price: 2000, - quantity: 50, - }, - { - name: '참외', - price: 5000, - quantity: 10, - }, - { - name: '오이', - price: 2000, - quantity: 49, - }, - ], - answer: [ - { name: '사과', price: 1000, quantity: 2 }, - { name: '오이', price: 2000, quantity: 49 }, - { name: '당근', price: 2000, quantity: 50 }, - { name: '참외', price: 5000, quantity: 10 }, - { name: '수박', price: 5000, quantity: 20 }, - ], -}; - -describe('sortByPriceAndQuantity', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/cheol-cheol/spreadOperatorMaxValue/README.md b/Challenge/cheol-cheol/spreadOperatorMaxValue/README.md deleted file mode 100644 index 164b68a1..00000000 --- a/Challenge/cheol-cheol/spreadOperatorMaxValue/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -Spread Operator를 이용해서 값의 최대, 최소값을 구하세요 diff --git a/Challenge/cheol-cheol/spreadOperatorMaxValue/solve.js b/Challenge/cheol-cheol/spreadOperatorMaxValue/solve.js deleted file mode 100644 index 49c5cf13..00000000 --- a/Challenge/cheol-cheol/spreadOperatorMaxValue/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return `max : ${Math.max(...inputArray)}, min : ${Math.min(...inputArray)}`; -} - -exports.solution = solution; diff --git a/Challenge/cheol-cheol/spreadOperatorMaxValue/solve.test.js b/Challenge/cheol-cheol/spreadOperatorMaxValue/solve.test.js deleted file mode 100644 index 26f2abf9..00000000 --- a/Challenge/cheol-cheol/spreadOperatorMaxValue/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], - answer: 'max : 10, min : 1', -}; - -describe('spreadOperatorMaxValue', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/chinsun9/expDivOdd/README.md b/Challenge/chinsun9/expDivOdd/README.md deleted file mode 100644 index ca68f81d..00000000 --- a/Challenge/chinsun9/expDivOdd/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -제곱한 후 3으로 나눈 나머지가 홀수인 것의 총 합을 구하세요. - -## Expected Output - -66 diff --git a/Challenge/chinsun9/expDivOdd/solve.js b/Challenge/chinsun9/expDivOdd/solve.js deleted file mode 100644 index b634522b..00000000 --- a/Challenge/chinsun9/expDivOdd/solve.js +++ /dev/null @@ -1,14 +0,0 @@ -const inputArray = [1, 7, 3, 4, 6]; - -// write your codes - -// 모든 원소 제곱 -// 3으로 나눈 값만 추출 -// 더하기 - -const result = inputArray - .map((value) => value * value) - .filter((value) => value % 3 === 1) - .reduce((prev, cur) => prev + cur, 0); - -console.log(result); diff --git a/Challenge/chinsun9/figureSkating/README.md b/Challenge/chinsun9/figureSkating/README.md deleted file mode 100644 index bfaa0743..00000000 --- a/Challenge/chinsun9/figureSkating/README.md +++ /dev/null @@ -1,41 +0,0 @@ -# 문제제목 - -## 설명 - -점수를 계산해서 점수가 높은 순으로 name과 score를 가진 객체의 배열을 출력하세요. -단 실격자는 출력하지 않습니다. - -### 피겨 점수 기준 - -피겨 점수는 ‘기술점수(TES)+예술점수(PCS)-감점’으로 구성된다. - -기술점수(TES·Total Element Score)는 기본점수에 수행점수(GOE·Grade Of Execution)를 합산해 도출한다. - -심판은 선수들이 점프와 스핀의 기술을 제대로 수행하는지 살핀다. 점프에선 회전수를 제대로 지켰는지, 에지를 제대로 사용했는지에 따라 ‘롱 에지’(잘못된 에지 사용)나 ‘다운그레이드’(난이도 하락), ‘어텐션’(주의) 등의 판정을 내린다. 스핀과 스텝시퀀스에 붙는 레벨(1~4)도 이들이 결정한다. - -9명의 심판은 선수들이 미리 제출한 연기 구성표를 기준으로 과제별 기본점수에서 가·감점을 한다. 이른바 ‘GOE’라 불리는 수행점수다. - -쇼트프로그램은 점프 3개, 스핀 3개, 스텝 1개의 수행과제가 반드시 포함돼야 한다. - -예술점수(PCS·Total Program Component Score)는 프로그램의 완성도에 영향을 미치는 스케이팅 기술·동작의 연결·연기·안무·곡 해석 등 5가지를 평가한다. - -마지막으로 감점이 반영된다. 감점 항목이 발생할 때마다 1점씩 감점된다. - -원문보기: -http://news.khan.co.kr/kh_news/khan_art_view.html?art_id=201402172146545#csidx6329aebb6a02152bca884614a7f0544 - -### 판정 기준 - -* 점수가 가장 높은 사람이 1등이다. -* 점수는 기술점수(TES) + 예술점수(PCS) - 감점 으로 구성된다. -* 기술점수(TES)는 기본점수 * 수행점수(GOE)를 합산해 도출한다. -* 필수 수행과제를 수행하지 못했을 시 실격이다. - -### 필수 수행과제 - -* 쇼트프로그램은 점프 3개, 스핀 3개, 스텝 1개의 수행과제가 반드시 포함돼야 한다. -* 점프와 스핀을 4번 이상 수행했을 시 가장 잘한 3개를 기준으로 한다. - -## Expected Output - -[ { name: '김연아', score: 1055 }, { name: '아사다 마오', score: 999 } ] diff --git a/Challenge/chinsun9/figureSkating/solve.js b/Challenge/chinsun9/figureSkating/solve.js deleted file mode 100644 index 08cc4c9d..00000000 --- a/Challenge/chinsun9/figureSkating/solve.js +++ /dev/null @@ -1,82 +0,0 @@ -// 기본 점수 -const baseScore = { - jump: 10, - spin: 20, - step: 15, -}; - -const baseAssignment = { - jump: 3, - spin: 3, - step: 1, -}; - -const inputArray = [ - { - name: '김연아', - goe: { - jump: [10, 9, 10], - spin: [10, 10, 10], - step: [9], - }, - pcs: 30, - penalty: 0, - }, - { - name: '피겨의 신', - goe: { - jump: [10000, 10000], - spin: [10000, 10000, 10000], - step: [10000], - }, - pcs: 100000, - penalty: 0, - }, - { - name: '아사다 마오', - goe: { - jump: [9, 6, 8, 9], - spin: [9, 9, 9], - step: [8], - }, - pcs: 29, - penalty: 10, - }, -]; - -// write your codes - -// 1 필수과제 수행 검사 -// 2 점수 계산 -// 2.1 jump, spin, setp 정렬 -// 2.2 잘한 점수 합산 -// 2.3 최종 점수 계산 -// 3 score 기준 내림차순 정렬 - -const result = inputArray - .filter((entry) => { - const { jump, spin, step } = entry.goe; - return (jump.length >= baseAssignment.jump - && spin.length >= baseAssignment.spin - && step.length >= baseAssignment.step); - }) - .map((entry) => { - const { - name, pcs, penalty, goe, - } = entry; - const { jump, spin, step } = goe; - - let tes = 0; - tes += jump.sort().slice(-baseAssignment.jump).reduce((p, c) => p + c * baseScore.jump, 0); - tes += spin.sort().slice(-baseAssignment.spin).reduce((p, c) => p + c * baseScore.spin, 0); - tes += step.sort().slice(-baseAssignment.step).reduce((p, c) => p + c * baseScore.step, 0); - - return { - name, - score: tes + pcs - penalty, - }; - }) - .sort((a, b) => b.score - a.score); - -console.log(result); -// [ { name: '김연아', score: 1055 }, { name: '아사다 마오', score: 939 } ] diff --git a/Challenge/dong7237/everyArray/README.md b/Challenge/dong7237/everyArray/README.md deleted file mode 100644 index 442558f6..00000000 --- a/Challenge/dong7237/everyArray/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -every를 이용해서 모든 원소가 짝수인지 아닌지를 판별하세요 - -## Expected Output - -true \ No newline at end of file diff --git a/Challenge/dong7237/everyArray/solve.js b/Challenge/dong7237/everyArray/solve.js deleted file mode 100644 index a76a1b0d..00000000 --- a/Challenge/dong7237/everyArray/solve.js +++ /dev/null @@ -1,4 +0,0 @@ -function solution(inputArray) { - return inputArray.every(a => a % 2 === 0) -} -exports.solution = solution; diff --git a/Challenge/dong7237/everyArray/solve.test.js b/Challenge/dong7237/everyArray/solve.test.js deleted file mode 100644 index 7dac26a4..00000000 --- a/Challenge/dong7237/everyArray/solve.test.js +++ /dev/null @@ -1,21 +0,0 @@ -const { solution } = require("./solve"); - -const test1 = { - input: [2, 4, 6, 8, 10], - answer: true, -}; - -const test2 = { - input: [2, 3, 6, 8, 10], - answer: false, -}; - -describe("everyArray", () => { - test("모두 짝수면 true여야 한다.", () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - - test("홀수가 있으면 false여야 한다.", () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); -}); diff --git a/Challenge/dong7237/expDivOdd/README.md b/Challenge/dong7237/expDivOdd/README.md deleted file mode 100644 index c07ab10b..00000000 --- a/Challenge/dong7237/expDivOdd/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -제곱한 후 3으로 나눈 나머지가 홀수인 것 을 뽑은 배열의 총 합을 구하세요. diff --git a/Challenge/dong7237/expDivOdd/solve.js b/Challenge/dong7237/expDivOdd/solve.js deleted file mode 100644 index 8454adaa..00000000 --- a/Challenge/dong7237/expDivOdd/solve.js +++ /dev/null @@ -1,4 +0,0 @@ -function solution(inputArray) { - return inputArray = inputArray.map(element => element ** 2).filter(element => element % 3 == 1).reduce((p, c) => p + c) -} -exports.solution = solution; diff --git a/Challenge/dong7237/expDivOdd/solve.test.js b/Challenge/dong7237/expDivOdd/solve.test.js deleted file mode 100644 index ca37fcc3..00000000 --- a/Challenge/dong7237/expDivOdd/solve.test.js +++ /dev/null @@ -1,21 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 7, 3, 4, 6], - answer: 66, -}; - -const test2 = { - input: [2, 3, 6, 8, 10], - answer: 168, -}; - -describe('everyArray', () => { - test('1, 7, 3, 4, 6', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - - test('2, 3, 6, 8, 10', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); -}); diff --git a/Challenge/dong7237/filterAge/README.md b/Challenge/dong7237/filterAge/README.md deleted file mode 100644 index 873a15c1..00000000 --- a/Challenge/dong7237/filterAge/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소의 age가 30이상 50미만인 사람만 있는 객체의 배열을 만드세요 diff --git a/Challenge/dong7237/filterAge/solve.js b/Challenge/dong7237/filterAge/solve.js deleted file mode 100644 index 66fd5c24..00000000 --- a/Challenge/dong7237/filterAge/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// 배열 원소의 age가 30이상 50미만인 사람만 있는 객체의 배열을 만드세요 -//inputarray의 첫번째 원소의 객체부터 살핌 -function solution(inputArray) { - return inputArray.filter(({ age }) => age >= 30 && age < 50) -} -exports.solution = solution; diff --git a/Challenge/dong7237/filterAge/solve.test.js b/Challenge/dong7237/filterAge/solve.test.js deleted file mode 100644 index b9081601..00000000 --- a/Challenge/dong7237/filterAge/solve.test.js +++ /dev/null @@ -1,32 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '영미', - age: 25, - }, - { - name: '일미', - age: 35, - }, - { - name: '이미', - age: 45, - }, - { - name: '삼미', - age: 55, - }, - ], - answer: [ - { name: '일미', age: 35 }, - { name: '이미', age: 45 }, - ], -}; - -describe('filterAge', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/dong7237/filterIntersection/README.md b/Challenge/dong7237/filterIntersection/README.md deleted file mode 100644 index d7c9ad39..00000000 --- a/Challenge/dong7237/filterIntersection/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# 문제제목 - -## 설명 - -두 배열의 교집합을 출력하세요! diff --git a/Challenge/dong7237/filterIntersection/solve.js b/Challenge/dong7237/filterIntersection/solve.js deleted file mode 100644 index 383c36c6..00000000 --- a/Challenge/dong7237/filterIntersection/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -function solution(inputArray1, inputArray2) { - //a와 b값을 풀어 한 변수에 저장해놓고 같은값이 두개가 아닌 것을 filter로 지움 - return inputArray1.filter((element) => inputArray2.includes(element)) -} - -exports.solution = solution; diff --git a/Challenge/dong7237/filterIntersection/solve.test.js b/Challenge/dong7237/filterIntersection/solve.test.js deleted file mode 100644 index 576cbc86..00000000 --- a/Challenge/dong7237/filterIntersection/solve.test.js +++ /dev/null @@ -1,15 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: { - A: [1, 2, 3, 4, 5], - B: [3, 4, 5, 6, 7], - }, - answer: [3, 4, 5], -}; - -describe('filterIntersection', () => { - test('test1', () => { - expect(solution(test1.input.A, test1.input.B)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/dong7237/filterOdd/README.md b/Challenge/dong7237/filterOdd/README.md deleted file mode 100644 index cf9eda79..00000000 --- a/Challenge/dong7237/filterOdd/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -홀수만 뽑아 배열로 만드세요 diff --git a/Challenge/dong7237/filterOdd/solve.js b/Challenge/dong7237/filterOdd/solve.js deleted file mode 100644 index 24f521c4..00000000 --- a/Challenge/dong7237/filterOdd/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.filter(a => a % 2 !== 0) -} - -exports.solution = solution; \ No newline at end of file diff --git a/Challenge/dong7237/filterOdd/solve.test.js b/Challenge/dong7237/filterOdd/solve.test.js deleted file mode 100644 index 8cfd7f5a..00000000 --- a/Challenge/dong7237/filterOdd/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [4, 2, 5, 1, 3], - answer: [5, 1, 3], -}; - -const test2 = { - input: [4, 2, 6, 8, 50, 16], - answer: [], -}; - -const test3 = { - input: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], - answer: [1, 3, 5, 7, 9, 11], -}; - -describe('filterOdd', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/dong7237/findWord/README.md b/Challenge/dong7237/findWord/README.md deleted file mode 100644 index 8ef123f4..00000000 --- a/Challenge/dong7237/findWord/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -용가리라는 단어가 있으면 true 없으면 false를 출력 - -## Expected Output - -true diff --git a/Challenge/dong7237/findWord/solve.js b/Challenge/dong7237/findWord/solve.js deleted file mode 100644 index b30d1617..00000000 --- a/Challenge/dong7237/findWord/solve.js +++ /dev/null @@ -1,5 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.includes('용가리') -} -exports.solution = solution; diff --git a/Challenge/dong7237/findWord/solve.test.js b/Challenge/dong7237/findWord/solve.test.js deleted file mode 100644 index 804114f6..00000000 --- a/Challenge/dong7237/findWord/solve.test.js +++ /dev/null @@ -1,26 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: ['잠', '자', '고', '싶', '다', '용가리'], - answer: true, -}; -const test2 = { - input: ['맛있는', '용가리치킨'], - answer: false, -}; -const test3 = { - input: ['고질라', '용가리 ', '울트라맨'], - answer: false, -}; - -describe('findWord', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); \ No newline at end of file diff --git a/Challenge/dong7237/forEachFilter/README.md b/Challenge/dong7237/forEachFilter/README.md deleted file mode 100644 index 6dcbc7c2..00000000 --- a/Challenge/dong7237/forEachFilter/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소중 40 이상인 수만 뽑아 배열을 만드세요. diff --git a/Challenge/dong7237/forEachFilter/solve.js b/Challenge/dong7237/forEachFilter/solve.js deleted file mode 100644 index b49b695e..00000000 --- a/Challenge/dong7237/forEachFilter/solve.js +++ /dev/null @@ -1,12 +0,0 @@ -// write your codes -function solution(inputArray) { - arr = [] - inputArray.forEach(element => { - if (element >= 40) { - arr.push(element) - } - }) - return arr -} - -exports.solution = solution; diff --git a/Challenge/dong7237/forEachFilter/solve.test.js b/Challenge/dong7237/forEachFilter/solve.test.js deleted file mode 100644 index 3d73b25c..00000000 --- a/Challenge/dong7237/forEachFilter/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: [100, 40], -}; - -describe('forEachFilter', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/dong7237/forEachFilterIsNaN/README.md b/Challenge/dong7237/forEachFilterIsNaN/README.md deleted file mode 100644 index 570c030e..00000000 --- a/Challenge/dong7237/forEachFilterIsNaN/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소중 숫자인 원소만 뽑아 배열을 만드세요. diff --git a/Challenge/dong7237/forEachFilterIsNaN/solve.js b/Challenge/dong7237/forEachFilterIsNaN/solve.js deleted file mode 100644 index 4b1432bf..00000000 --- a/Challenge/dong7237/forEachFilterIsNaN/solve.js +++ /dev/null @@ -1,12 +0,0 @@ -// write your codes -function solution(inputArray) { - const arr = [] - inputArray.forEach(element => { - if (typeof (element) !== 'string') { - return arr.push(element) - } - }); - return arr -} - -exports.solution = solution; diff --git a/Challenge/dong7237/forEachFilterIsNaN/solve.test.js b/Challenge/dong7237/forEachFilterIsNaN/solve.test.js deleted file mode 100644 index d6e118bb..00000000 --- a/Challenge/dong7237/forEachFilterIsNaN/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 40, '라매', '개발자', 51.5, 'a', 88], - answer: [1, 40, 51.5, 88], -}; - -const test2 = { - input: [1, 2, 3, '4', 5, '6'], - answer: [1, 2, 3, 5], -}; - -const test3 = { - input: [-3, -2, -1, 0, 1, 2, 3], - answer: [-3, -2, -1, 0, 1, 2, 3], -}; - -describe('forEachFilterIsNaN', () => { - test('test1: 숫자,문자 판별', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2: 문자로된 숫자 판별', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3: 음수 양수 포함', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); \ No newline at end of file diff --git a/Challenge/dong7237/forEachMap/README.md b/Challenge/dong7237/forEachMap/README.md deleted file mode 100644 index 1e8e03c8..00000000 --- a/Challenge/dong7237/forEachMap/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -forEach 메소드를 사용해서 배열의 각 원소 끝에 '%'를 붙인 문자열 배열을 출력하세요 diff --git a/Challenge/dong7237/forEachMap/solve.js b/Challenge/dong7237/forEachMap/solve.js deleted file mode 100644 index 78155d81..00000000 --- a/Challenge/dong7237/forEachMap/solve.js +++ /dev/null @@ -1,17 +0,0 @@ -// write your codes -function solution(inputArray) { - let arr = []; - inputArray.forEach(element => { - arr.push(element + '%') - } - ); - return arr -} -/* let answer = []; - inputArray.forEach((el) => { - answer.push(el + '%'); - }) - return answer; -*/ - -exports.solution = solution; diff --git a/Challenge/dong7237/forEachMap/solve.test.js b/Challenge/dong7237/forEachMap/solve.test.js deleted file mode 100644 index de4868c6..00000000 --- a/Challenge/dong7237/forEachMap/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: ['100%', '10%', '20%', '40%'], -}; - -describe('forEachMap', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/dong7237/forEachReduce/README.md b/Challenge/dong7237/forEachReduce/README.md deleted file mode 100644 index a984df2d..00000000 --- a/Challenge/dong7237/forEachReduce/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -forEach 메소드를 사용해서 배열의 총 합을 출력하는 코드를 작성하세요 diff --git a/Challenge/dong7237/forEachReduce/solve.js b/Challenge/dong7237/forEachReduce/solve.js deleted file mode 100644 index 5f24f4bb..00000000 --- a/Challenge/dong7237/forEachReduce/solve.js +++ /dev/null @@ -1,10 +0,0 @@ -// write your codes -function solution(inputArray) { - let result = 0; - inputArray.forEach(element => { - result += element - }); - return result -} - -exports.solution = solution; diff --git a/Challenge/dong7237/forEachReduce/solve.test.js b/Challenge/dong7237/forEachReduce/solve.test.js deleted file mode 100644 index 397e4b50..00000000 --- a/Challenge/dong7237/forEachReduce/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: 170, -}; - -const test2 = { - input: [120, -20, -30, 0, 15], - answer: 85, -}; - -const test3 = { - input: [-10, -20, -30], - answer: -60, -}; - -describe('forEachReduce', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2: 음수가 포함된 계산', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3: 음수만 존재하는 계산', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/dong7237/mapAddPercent/README.md b/Challenge/dong7237/mapAddPercent/README.md deleted file mode 100644 index 75e73042..00000000 --- a/Challenge/dong7237/mapAddPercent/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -map 메소드를 사용해 배열 각각 숫자 뒤에 %를 붙인 문자열을 만드세요 diff --git a/Challenge/dong7237/mapAddPercent/solve.js b/Challenge/dong7237/mapAddPercent/solve.js deleted file mode 100644 index 7668f67f..00000000 --- a/Challenge/dong7237/mapAddPercent/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray = inputArray.map(element => element + '%') -} - -exports.solution = solution; diff --git a/Challenge/dong7237/mapAddPercent/solve.test.js b/Challenge/dong7237/mapAddPercent/solve.test.js deleted file mode 100644 index dac1b3cc..00000000 --- a/Challenge/dong7237/mapAddPercent/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: ['100%', '10%', '20%', '40%'], -}; - -describe('mapAddPercent', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/dong7237/mapAppendOrder/README.md b/Challenge/dong7237/mapAppendOrder/README.md deleted file mode 100644 index 1435623a..00000000 --- a/Challenge/dong7237/mapAppendOrder/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열의 값을 name 프로퍼티에 넣고 몇번째 원소인지를 order에 넣은 객체의 배열을 출력하세요 diff --git a/Challenge/dong7237/mapAppendOrder/solve.js b/Challenge/dong7237/mapAppendOrder/solve.js deleted file mode 100644 index 71aa7bea..00000000 --- a/Challenge/dong7237/mapAppendOrder/solve.js +++ /dev/null @@ -1,13 +0,0 @@ -// write your codes -function solution(inputArray) { - - return inputArray = inputArray.map((element, i) => { - i++ - return { - name: element, - order: i - } - }) -} - -exports.solution = solution; diff --git a/Challenge/dong7237/mapAppendOrder/solve.test.js b/Challenge/dong7237/mapAppendOrder/solve.test.js deleted file mode 100644 index e08db10c..00000000 --- a/Challenge/dong7237/mapAppendOrder/solve.test.js +++ /dev/null @@ -1,16 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: ['홍길동', '둘리', '루피'], - answer: [ - { name: '홍길동', order: 1 }, - { name: '둘리', order: 2 }, - { name: '루피', order: 3 }, - ], -}; - -describe('mapAppendOrder', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/dong7237/reduceMaxValueNIndex/README.md b/Challenge/dong7237/reduceMaxValueNIndex/README.md deleted file mode 100644 index 965bdec6..00000000 --- a/Challenge/dong7237/reduceMaxValueNIndex/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -reduce 메소드를 사용해 최댓값의 값을 maxValue에, 해당 값의 index를 idx에 넣은 객체를 출력하세요 diff --git a/Challenge/dong7237/reduceMaxValueNIndex/solve.js b/Challenge/dong7237/reduceMaxValueNIndex/solve.js deleted file mode 100644 index 220cd499..00000000 --- a/Challenge/dong7237/reduceMaxValueNIndex/solve.js +++ /dev/null @@ -1,15 +0,0 @@ -// write your codes -function solution(inputArray) { - const ans = inputArray.reduce((p, a, i) => { - if (p.maxValue < a) { - return { - maxValue: a, - idx: i - } - } - return p - }, { maxValue: -999999999999999999999, idx: -1 }) - return ans -} - -exports.solution = solution; diff --git a/Challenge/dong7237/reduceMaxValueNIndex/solve.test.js b/Challenge/dong7237/reduceMaxValueNIndex/solve.test.js deleted file mode 100644 index 0daef5b8..00000000 --- a/Challenge/dong7237/reduceMaxValueNIndex/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [3, 29, 38, 12, 57, 74, 40, 85, 61], - answer: { maxValue: 85, idx: 7 }, -}; - -const test2 = { - input: [-24, -2, -13, -49, -999999, -17], - answer: { maxValue: -2, idx: 1 }, -}; -//최댓값이 중복일 때에는 먼저 나온 최댓값의 인덱스를 유지하도록 설정하였습니다. -const test3 = { - input: [2, -20, 21, -874, 99, -16, -29, 99], - answer: { maxValue: 99, idx: 4 }, -}; - -describe('reduceMaxValueNIndex', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2 : 음수 테스트', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3 : 중복된 최대값 테스트', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/dong7237/reduceNameNickname/README.md b/Challenge/dong7237/reduceNameNickname/README.md deleted file mode 100644 index b6920e05..00000000 --- a/Challenge/dong7237/reduceNameNickname/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -입력받은 객채배열의 nickname을 key, name을 value로 하는 객체를 출력하세요 diff --git a/Challenge/dong7237/reduceNameNickname/solve.js b/Challenge/dong7237/reduceNameNickname/solve.js deleted file mode 100644 index cc02c562..00000000 --- a/Challenge/dong7237/reduceNameNickname/solve.js +++ /dev/null @@ -1,10 +0,0 @@ -// write your codes -function solution(inputArray) { - return ans = inputArray.reduce((p, c) => { - - return { ...p, [c.nickname]: c.name } - }, {}) - -} - -exports.solution = solution; diff --git a/Challenge/dong7237/reduceNameNickname/solve.test.js b/Challenge/dong7237/reduceNameNickname/solve.test.js deleted file mode 100644 index a2256586..00000000 --- a/Challenge/dong7237/reduceNameNickname/solve.test.js +++ /dev/null @@ -1,25 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '홍길동', - nickname: 'hong', - }, - { - name: '둘리', - nickname: '2li', - }, - { - name: '오스트랄로피테쿠스', - nickname: '1Cin', - }, - ], - answer: { 'hong': '홍길동', '2li': '둘리', '1Cin': '오스트랄로피테쿠스' }, -}; - -describe('reduceNameNickname', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/dong7237/reduceSum/README.md b/Challenge/dong7237/reduceSum/README.md deleted file mode 100644 index 8c607eb2..00000000 --- a/Challenge/dong7237/reduceSum/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -reduce 메소드를 사용해서 배열의 모든 수의 합을 구하세요. - -## Expected Output - -106 diff --git a/Challenge/dong7237/reduceSum/solve.js b/Challenge/dong7237/reduceSum/solve.js deleted file mode 100644 index d2517751..00000000 --- a/Challenge/dong7237/reduceSum/solve.js +++ /dev/null @@ -1,7 +0,0 @@ -// write your codes -function solution(inputArray) { - let ans = inputArray.reduce((p, c) => p + c) - return ans - -} -exports.solution = solution; diff --git a/Challenge/dong7237/reduceSum/solve.test.js b/Challenge/dong7237/reduceSum/solve.test.js deleted file mode 100644 index 046c40cb..00000000 --- a/Challenge/dong7237/reduceSum/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [10, 3, 20, 5, 8, 60], - answer: 106, -}; - -describe('reduceSum', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/dong7237/sortByPrice/README.md b/Challenge/dong7237/sortByPrice/README.md deleted file mode 100644 index b1ccf70e..00000000 --- a/Challenge/dong7237/sortByPrice/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 - -## Expected Output - -[ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 } -] diff --git a/Challenge/dong7237/sortByPrice/solve.js b/Challenge/dong7237/sortByPrice/solve.js deleted file mode 100644 index bf7c719a..00000000 --- a/Challenge/dong7237/sortByPrice/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.sort((a, b) => { - return a.price - b.price - }) - -} -exports.solution = solution; diff --git a/Challenge/dong7237/sortByPrice/solve.test.js b/Challenge/dong7237/sortByPrice/solve.test.js deleted file mode 100644 index 3d6a3431..00000000 --- a/Challenge/dong7237/sortByPrice/solve.test.js +++ /dev/null @@ -1,34 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '사과', - price: 1000, - }, - { - name: '수박', - price: 5000, - }, - { - name: '당근', - price: 2000, - }, - { - name: '참외', - price: 10000, - }, - ], - answer: [ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 }, - ], -}; - -describe('sortByPrice', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/dong7237/sortByPriceAndQuantity/README.md b/Challenge/dong7237/sortByPriceAndQuantity/README.md deleted file mode 100644 index 41cd5c95..00000000 --- a/Challenge/dong7237/sortByPriceAndQuantity/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 -만약 price가 같다면 quantity기준으로 오름차순 정렬하세요 - -## Expected Output - -[ - { name: '사과', price: 1000, quantity: 2 }, - { name: '오이', price: 2000, quantity: 49 }, - { name: '당근', price: 2000, quantity: 50 }, - { name: '참외', price: 5000, quantity: 10 }, - { name: '수박', price: 5000, quantity: 20 } -] diff --git a/Challenge/dong7237/sortByPriceAndQuantity/solve.js b/Challenge/dong7237/sortByPriceAndQuantity/solve.js deleted file mode 100644 index e68420c5..00000000 --- a/Challenge/dong7237/sortByPriceAndQuantity/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -// write your codes -function solution(inputArray) { - inputArray.sort((a, b) => { - return a.price - b.price || a.quantity - b.quantity - }) - return inputArray -} - -exports.solution = solution; diff --git a/Challenge/dong7237/sortByPriceAndQuantity/solve.test.js b/Challenge/dong7237/sortByPriceAndQuantity/solve.test.js deleted file mode 100644 index 424f42b7..00000000 --- a/Challenge/dong7237/sortByPriceAndQuantity/solve.test.js +++ /dev/null @@ -1,44 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '사과', - price: 1000, - quantity: 2, - }, - { - name: '수박', - price: 5000, - quantity: 20, - }, - { - name: '당근', - price: 2000, - quantity: 50, - }, - { - name: '참외', - price: 5000, - quantity: 10, - }, - { - name: '오이', - price: 2000, - quantity: 49, - }, - ], - answer: [ - { name: '사과', price: 1000, quantity: 2 }, - { name: '오이', price: 2000, quantity: 49 }, - { name: '당근', price: 2000, quantity: 50 }, - { name: '참외', price: 5000, quantity: 10 }, - { name: '수박', price: 5000, quantity: 20 }, - ], -}; - -describe('sortByPriceAndQuantity', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/dong7237/spreadOperatorMaxValue/README.md b/Challenge/dong7237/spreadOperatorMaxValue/README.md deleted file mode 100644 index 164b68a1..00000000 --- a/Challenge/dong7237/spreadOperatorMaxValue/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -Spread Operator를 이용해서 값의 최대, 최소값을 구하세요 diff --git a/Challenge/dong7237/spreadOperatorMaxValue/solve.js b/Challenge/dong7237/spreadOperatorMaxValue/solve.js deleted file mode 100644 index b3733732..00000000 --- a/Challenge/dong7237/spreadOperatorMaxValue/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return `max : ${Math.max(...inputArray)}, min : ${Math.min(...inputArray)}` -} - -exports.solution = solution; diff --git a/Challenge/dong7237/spreadOperatorMaxValue/solve.test.js b/Challenge/dong7237/spreadOperatorMaxValue/solve.test.js deleted file mode 100644 index 26f2abf9..00000000 --- a/Challenge/dong7237/spreadOperatorMaxValue/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], - answer: 'max : 10, min : 1', -}; - -describe('spreadOperatorMaxValue', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/dongjay00/everyArray/README.md b/Challenge/dongjay00/everyArray/README.md deleted file mode 100644 index 442558f6..00000000 --- a/Challenge/dongjay00/everyArray/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -every를 이용해서 모든 원소가 짝수인지 아닌지를 판별하세요 - -## Expected Output - -true \ No newline at end of file diff --git a/Challenge/dongjay00/everyArray/solve.js b/Challenge/dongjay00/everyArray/solve.js deleted file mode 100644 index 12d71923..00000000 --- a/Challenge/dongjay00/everyArray/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -function solution(inputArray) { - const result = inputArray.every(element => - element % 2 === 0 - ); - return result; -} - -exports.solution = solution; diff --git a/Challenge/dongjay00/everyArray/solve.test.js b/Challenge/dongjay00/everyArray/solve.test.js deleted file mode 100644 index b03e4791..00000000 --- a/Challenge/dongjay00/everyArray/solve.test.js +++ /dev/null @@ -1,21 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [2, 4, 6, 8, 10], - answer: true, -}; - -const test2 = { - input: [2, 3, 6, 8, 10], - answer: false, -}; - -describe('everyArray', () => { - test('모두 짝수면 true여야 한다.', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - - test('홀수가 있으면 false여야 한다.', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); -}); diff --git a/Challenge/dongjay00/expDivOdd/README.md b/Challenge/dongjay00/expDivOdd/README.md deleted file mode 100644 index c07ab10b..00000000 --- a/Challenge/dongjay00/expDivOdd/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -제곱한 후 3으로 나눈 나머지가 홀수인 것 을 뽑은 배열의 총 합을 구하세요. diff --git a/Challenge/dongjay00/expDivOdd/solve.js b/Challenge/dongjay00/expDivOdd/solve.js deleted file mode 100644 index 0ee23163..00000000 --- a/Challenge/dongjay00/expDivOdd/solve.js +++ /dev/null @@ -1,12 +0,0 @@ -function solution(inputArray) { - const divOddArray = inputArray - .map((num) => num ** 2) - .filter((num) => (num % 3) % 2); - const sum = divOddArray.reduce( - (accumulator, currentValue) => accumulator + currentValue, - 0 - ); - return sum; -} - -exports.solution = solution; diff --git a/Challenge/dongjay00/expDivOdd/solve.test.js b/Challenge/dongjay00/expDivOdd/solve.test.js deleted file mode 100644 index ca37fcc3..00000000 --- a/Challenge/dongjay00/expDivOdd/solve.test.js +++ /dev/null @@ -1,21 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 7, 3, 4, 6], - answer: 66, -}; - -const test2 = { - input: [2, 3, 6, 8, 10], - answer: 168, -}; - -describe('everyArray', () => { - test('1, 7, 3, 4, 6', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - - test('2, 3, 6, 8, 10', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); -}); diff --git a/Challenge/dongjay00/filterAge/README.md b/Challenge/dongjay00/filterAge/README.md deleted file mode 100644 index 1c73138e..00000000 --- a/Challenge/dongjay00/filterAge/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소의 age가 30이상 50미만인 사람만 있는 객체의 배열을 만드세요 - -## Expected Output - -[ { name: '일미', age: 35 }, { name: '이미', age: 45 } ] diff --git a/Challenge/dongjay00/filterAge/solve.js b/Challenge/dongjay00/filterAge/solve.js deleted file mode 100644 index 7195d492..00000000 --- a/Challenge/dongjay00/filterAge/solve.js +++ /dev/null @@ -1,24 +0,0 @@ -const inputArray = [ - { - name: '영미', - age: 25, - }, - { - name: '일미', - age: 35, - }, - { - name: '이미', - age: 45, - }, - { - name: '삼미', - age: 55, - }, -] -// write your codes - -const filterArray = inputArray.filter(res => - res.age >= 30 && res.age < 50 -); -console.log(filterArray); \ No newline at end of file diff --git a/Challenge/dongjay00/filterIntersection/README.md b/Challenge/dongjay00/filterIntersection/README.md deleted file mode 100644 index d7c9ad39..00000000 --- a/Challenge/dongjay00/filterIntersection/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# 문제제목 - -## 설명 - -두 배열의 교집합을 출력하세요! diff --git a/Challenge/dongjay00/filterIntersection/solve.js b/Challenge/dongjay00/filterIntersection/solve.js deleted file mode 100644 index a81edd01..00000000 --- a/Challenge/dongjay00/filterIntersection/solve.js +++ /dev/null @@ -1,5 +0,0 @@ -function solution(inputArray1, inputArray2) { - return inputArray1.filter(el => inputArray2.includes(el)); -} - -exports.solution = solution; diff --git a/Challenge/dongjay00/filterIntersection/solve.test.js b/Challenge/dongjay00/filterIntersection/solve.test.js deleted file mode 100644 index 576cbc86..00000000 --- a/Challenge/dongjay00/filterIntersection/solve.test.js +++ /dev/null @@ -1,15 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: { - A: [1, 2, 3, 4, 5], - B: [3, 4, 5, 6, 7], - }, - answer: [3, 4, 5], -}; - -describe('filterIntersection', () => { - test('test1', () => { - expect(solution(test1.input.A, test1.input.B)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/dongjay00/filterOdd/README.md b/Challenge/dongjay00/filterOdd/README.md deleted file mode 100644 index 9bf99a18..00000000 --- a/Challenge/dongjay00/filterOdd/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -홀수만 뽑아 배열로 만드세요 - -## Expected Output - -[5, 1, 3] diff --git a/Challenge/dongjay00/filterOdd/solve.js b/Challenge/dongjay00/filterOdd/solve.js deleted file mode 100644 index cfaa2ab3..00000000 --- a/Challenge/dongjay00/filterOdd/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -const inputArray = [4, 2, 5, 1, 3]; - -// write your codes - -const oddArray = inputArray.filter(num => num % 2); -console.log(oddArray); diff --git a/Challenge/dongjay00/findWord/README.md b/Challenge/dongjay00/findWord/README.md deleted file mode 100644 index 8ef123f4..00000000 --- a/Challenge/dongjay00/findWord/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -용가리라는 단어가 있으면 true 없으면 false를 출력 - -## Expected Output - -true diff --git a/Challenge/dongjay00/findWord/solve.js b/Challenge/dongjay00/findWord/solve.js deleted file mode 100644 index 24f6e193..00000000 --- a/Challenge/dongjay00/findWord/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.includes("용가리"); -} - -exports.solution = solution; diff --git a/Challenge/dongjay00/findWord/solve.test.js b/Challenge/dongjay00/findWord/solve.test.js deleted file mode 100644 index 804114f6..00000000 --- a/Challenge/dongjay00/findWord/solve.test.js +++ /dev/null @@ -1,26 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: ['잠', '자', '고', '싶', '다', '용가리'], - answer: true, -}; -const test2 = { - input: ['맛있는', '용가리치킨'], - answer: false, -}; -const test3 = { - input: ['고질라', '용가리 ', '울트라맨'], - answer: false, -}; - -describe('findWord', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); \ No newline at end of file diff --git a/Challenge/dongjay00/forEachFilter/README.md b/Challenge/dongjay00/forEachFilter/README.md deleted file mode 100644 index d826e8e6..00000000 --- a/Challenge/dongjay00/forEachFilter/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소중 40 이상인 수만 뽑아 배열을 만드세요. - -## Expected Output - -[ 100, 40 ] diff --git a/Challenge/dongjay00/forEachFilter/solve.js b/Challenge/dongjay00/forEachFilter/solve.js deleted file mode 100644 index 22c52386..00000000 --- a/Challenge/dongjay00/forEachFilter/solve.js +++ /dev/null @@ -1,5 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes -const resultArray = inputArray.filter(res => res >= 40); -console.log(resultArray); diff --git a/Challenge/dongjay00/forEachFilterIsNaN/README.md b/Challenge/dongjay00/forEachFilterIsNaN/README.md deleted file mode 100644 index ba71774d..00000000 --- a/Challenge/dongjay00/forEachFilterIsNaN/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소중 숫자인 원소만 뽑아 배열을 만드세요. - -## Expected Output - -[ 1, 40, 51.5, 88 ] diff --git a/Challenge/dongjay00/forEachFilterIsNaN/solve.js b/Challenge/dongjay00/forEachFilterIsNaN/solve.js deleted file mode 100644 index 4b3b8c82..00000000 --- a/Challenge/dongjay00/forEachFilterIsNaN/solve.js +++ /dev/null @@ -1,5 +0,0 @@ -const inputArray = [ 1, 40, "라매", "개발자", 51.5, 'a', 88 ]; - -// write your codes -const filterArray = inputArray.filter(res => !isNaN(res)); -console.log(filterArray); diff --git a/Challenge/dongjay00/forEachMap/README.md b/Challenge/dongjay00/forEachMap/README.md deleted file mode 100644 index d0e84215..00000000 --- a/Challenge/dongjay00/forEachMap/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# forEachReduce - -## 설명 - -forEach 메소드를 사용해서 배열의 각 원소 끝에 '%'를 붙인 문자열 배열을 출력하세요 - -## Expected Output - -[ '100%', '10%', '20%', '40%' ] diff --git a/Challenge/dongjay00/forEachMap/solve.js b/Challenge/dongjay00/forEachMap/solve.js deleted file mode 100644 index 20ff171d..00000000 --- a/Challenge/dongjay00/forEachMap/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes - -let mapArray = []; -inputArray.forEach(res => { - mapArray.push(res + "%"); -}); -console.log(mapArray); \ No newline at end of file diff --git a/Challenge/dongjay00/forEachReduce/README.md b/Challenge/dongjay00/forEachReduce/README.md deleted file mode 100644 index 8f369ed9..00000000 --- a/Challenge/dongjay00/forEachReduce/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# forEachReduce - -## 설명 - -forEach 메소드를 사용해서 배열의 총 합을 출력하는 코드를 작성하세요 - -## Expected Output - -170 diff --git a/Challenge/dongjay00/forEachReduce/solve.js b/Challenge/dongjay00/forEachReduce/solve.js deleted file mode 100644 index 9bdb449f..00000000 --- a/Challenge/dongjay00/forEachReduce/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes -let sum = 0; -inputArray.forEach(res => sum += res); -console.log(sum); diff --git a/Challenge/dongjay00/mapAddPercent/README.md b/Challenge/dongjay00/mapAddPercent/README.md deleted file mode 100644 index 4156a2f9..00000000 --- a/Challenge/dongjay00/mapAddPercent/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -map 메소드를 사용해 배열 각각 숫자 뒤에 %를 붙인 문자열을 만드세요 - -## Expected Output - -['100%', '10%', '20%', '40%'] diff --git a/Challenge/dongjay00/mapAddPercent/solve.js b/Challenge/dongjay00/mapAddPercent/solve.js deleted file mode 100644 index 8ddbcd1d..00000000 --- a/Challenge/dongjay00/mapAddPercent/solve.js +++ /dev/null @@ -1,5 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes -const mapArray = inputArray.map(res => res + '%'); -console.log(mapArray); diff --git a/Challenge/dongjay00/mapAppendOrder/README.md b/Challenge/dongjay00/mapAppendOrder/README.md deleted file mode 100644 index fccb0d1a..00000000 --- a/Challenge/dongjay00/mapAppendOrder/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# 문제제목 - -## 설명 - -배열의 값을 name 프로퍼티에 넣고 몇번째 원소인지를 order에 넣은 객체의 배열을 출력하세요 - -## Expected Output - -[ - { name: '홍길동', order: 1 }, - { name: '둘리', order: 2 }, - { name: '루피', order: 3 } -] diff --git a/Challenge/dongjay00/mapAppendOrder/solve.js b/Challenge/dongjay00/mapAppendOrder/solve.js deleted file mode 100644 index 32ce9bad..00000000 --- a/Challenge/dongjay00/mapAppendOrder/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -const inputArray = ['홍길동', '둘리', '루피']; - -// write your codes -const newArray = inputArray.map((val, idx) => ({ - name: val, - order: idx + 1, -})); - -console.log(newArray); \ No newline at end of file diff --git a/Challenge/dongjay00/recommendAd/README.md b/Challenge/dongjay00/recommendAd/README.md deleted file mode 100644 index 132e8800..00000000 --- a/Challenge/dongjay00/recommendAd/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# 문제제목 - -사용자가 안 본 광고는? - -## 설명 - -유튜브는 사용자가 프리미엄 회원이 아닌 경우 영상 시작이나 중간에 광고가 나오도록 설정되어 있습니다. - -[2020년 유튜브 인기 광고](https://www.thinkwithgoogle.com/intl/ko-kr/marketing-strategies/video/%EB%8C%80%ED%95%9C%EB%AF%BC%EA%B5%AD-youtube-%EC%9D%B8%EA%B8%B0-%EA%B4%91%EA%B3%A0%EC%98%81%EC%83%81-2020%EB%85%84-%EC%97%B0%EB%A7%90%EA%B2%B0%EC%82%B0/)는 총 열 편으로, 사용자의 일주일간 광고 시청 이력을 통해 해당 사용자가 일주일 동안 안 본 광고를 그 다음주에 노출함으로써 광고들이 사용자에게 골고루 노출되길 원합니다. - -유저가 매일 유튜브에 접속하여 하루 한 편 이상의 광고를 보았다고 가정할 때, 이 유저가 안 본 광고는 무엇인지 출력해주세요. - -## Expected Output - -[ '동원F&B' ] diff --git a/Challenge/dongjay00/recommendAd/solve.js b/Challenge/dongjay00/recommendAd/solve.js deleted file mode 100644 index 6e63d6a0..00000000 --- a/Challenge/dongjay00/recommendAd/solve.js +++ /dev/null @@ -1,27 +0,0 @@ -const userHistory = [ - { date: "2020-11-03", watched: ["KT", "BBQ"] }, - { date: "2020-11-04", watched: ["정관장", "KT", "딱좋은데이"] }, - { date: "2020-11-05", watched: ["그랑사가", "농심"] }, - { date: "2020-11-06", watched: ["BBQ"] }, - { date: "2020-11-07", watched: ["쌍용자동차", "BBQ", "KT"] }, - { date: "2020-11-08", watched: ["켈로그코리아", "빙그레"] }, - { date: "2020-11-09", watched: ["KT", "그랑사가", "빙그레"] }, -]; - -// write your codes -function solution(inputArray) { - for (let i = 0; i < userHistory.length; i++) { - let curr = userHistory[i].watched; - curr.forEach((res) => { - if (inputArray.includes(res)) { - const idx = inputArray.indexOf(res); - if (idx > -1) { - inputArray.splice(idx, 1); - } - } - }); - } - return inputArray; -} - -exports.solution = solution; diff --git a/Challenge/dongjay00/recommendAd/solve.test.js b/Challenge/dongjay00/recommendAd/solve.test.js deleted file mode 100644 index 8a0f6464..00000000 --- a/Challenge/dongjay00/recommendAd/solve.test.js +++ /dev/null @@ -1,23 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - '동원F&B', - '정관장', - 'KT', - 'BBQ', - '그랑사가', - '농심', - '딱좋은데이', - '빙그레', - '쌍용자동차', - '켈로그코리아', - ], - answer: ['동원F&B'], -}; - -describe('recommendAd', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/dongjay00/reduceMaxValueNIndex/README.md b/Challenge/dongjay00/reduceMaxValueNIndex/README.md deleted file mode 100644 index 02a22b52..00000000 --- a/Challenge/dongjay00/reduceMaxValueNIndex/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -reduce 메소드를 사용해 최댓값의 값을 maxValue에, 해당 값의 index를 idx에 넣은 객체를 출력하세요 - -## Expected Output - -{ maxValue: 85, idx: 7 }. diff --git a/Challenge/dongjay00/reduceMaxValueNIndex/solve.js b/Challenge/dongjay00/reduceMaxValueNIndex/solve.js deleted file mode 100644 index d058b9fe..00000000 --- a/Challenge/dongjay00/reduceMaxValueNIndex/solve.js +++ /dev/null @@ -1,12 +0,0 @@ -const inputArray = [3, 29, 38, 12, 57, 74, 40, 85, 61]; - -// write your codes -const max = inputArray.reduce((acc, cur, idx) => { - if (acc.maxValue < cur) { - acc.maxValue = cur; - acc.idx = idx; - } - return acc; -}, {maxValue: -9999999, idx: -1}); - -console.log(max); \ No newline at end of file diff --git a/Challenge/dongjay00/reduceNameNickname/README.md b/Challenge/dongjay00/reduceNameNickname/README.md deleted file mode 100644 index aeaf5b31..00000000 --- a/Challenge/dongjay00/reduceNameNickname/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -입력받은 객채배열의 nickname을 key, name을 value로 하는 객체를 출력하세요 - -## Expected Output - -{ hong: '홍길동', '2li': '둘리', '1Cin': '오스트랄로피테쿠스' } diff --git a/Challenge/dongjay00/reduceNameNickname/solve.js b/Challenge/dongjay00/reduceNameNickname/solve.js deleted file mode 100644 index a8d29e23..00000000 --- a/Challenge/dongjay00/reduceNameNickname/solve.js +++ /dev/null @@ -1,22 +0,0 @@ -const inputArray = [ - { - name: '홍길동', - nickname: 'hong', - }, - { - name: '둘리', - nickname: '2li', - }, - { - name: '오스트랄로피테쿠스', - nickname: '1Cin', - }, -]; - -// write your codes -const result = inputArray.reduce((acc, cur) => { - acc[cur.nickname] = cur.name; - return acc; -}, {}); - -console.log(result); \ No newline at end of file diff --git a/Challenge/dongjay00/reduceSum/README.md b/Challenge/dongjay00/reduceSum/README.md deleted file mode 100644 index 8c607eb2..00000000 --- a/Challenge/dongjay00/reduceSum/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -reduce 메소드를 사용해서 배열의 모든 수의 합을 구하세요. - -## Expected Output - -106 diff --git a/Challenge/dongjay00/reduceSum/solve.js b/Challenge/dongjay00/reduceSum/solve.js deleted file mode 100644 index 0f1974ee..00000000 --- a/Challenge/dongjay00/reduceSum/solve.js +++ /dev/null @@ -1,10 +0,0 @@ -const inputArray = [10, 3, 20, 5, 8, 60]; - -// write your codes -const sum = inputArray.reduce((acc, cur) => { - acc += cur; - return acc; -}, 0); - -console.log(sum); - diff --git a/Challenge/dongjay00/sortByPrice/README.md b/Challenge/dongjay00/sortByPrice/README.md deleted file mode 100644 index b1ccf70e..00000000 --- a/Challenge/dongjay00/sortByPrice/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 - -## Expected Output - -[ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 } -] diff --git a/Challenge/dongjay00/sortByPrice/solve.js b/Challenge/dongjay00/sortByPrice/solve.js deleted file mode 100644 index 95aad1ac..00000000 --- a/Challenge/dongjay00/sortByPrice/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -// write your codes -function solution(inputArray) { - inputArray.sort((a, b) => { - return a.price < b.price ? -1 : a.price > b.price ? 1 : 0; - }); - return inputArray; -} - -exports.solution = solution; diff --git a/Challenge/dongjay00/sortByPrice/solve.test.js b/Challenge/dongjay00/sortByPrice/solve.test.js deleted file mode 100644 index 3d6a3431..00000000 --- a/Challenge/dongjay00/sortByPrice/solve.test.js +++ /dev/null @@ -1,34 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '사과', - price: 1000, - }, - { - name: '수박', - price: 5000, - }, - { - name: '당근', - price: 2000, - }, - { - name: '참외', - price: 10000, - }, - ], - answer: [ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 }, - ], -}; - -describe('sortByPrice', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/dongjay00/sortByPriceAndQuantity/README.md b/Challenge/dongjay00/sortByPriceAndQuantity/README.md deleted file mode 100644 index 41cd5c95..00000000 --- a/Challenge/dongjay00/sortByPriceAndQuantity/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 -만약 price가 같다면 quantity기준으로 오름차순 정렬하세요 - -## Expected Output - -[ - { name: '사과', price: 1000, quantity: 2 }, - { name: '오이', price: 2000, quantity: 49 }, - { name: '당근', price: 2000, quantity: 50 }, - { name: '참외', price: 5000, quantity: 10 }, - { name: '수박', price: 5000, quantity: 20 } -] diff --git a/Challenge/dongjay00/sortByPriceAndQuantity/solve.js b/Challenge/dongjay00/sortByPriceAndQuantity/solve.js deleted file mode 100644 index 996b6f13..00000000 --- a/Challenge/dongjay00/sortByPriceAndQuantity/solve.js +++ /dev/null @@ -1,7 +0,0 @@ -// write your codes -function solution(inputArray) { - inputArray.sort((a, b) => a.price - b.price || a.quantity - b.quantity); - return inputArray; -} - -exports.solution = solution; diff --git a/Challenge/dongjay00/sortByPriceAndQuantity/solve.test.js b/Challenge/dongjay00/sortByPriceAndQuantity/solve.test.js deleted file mode 100644 index 424f42b7..00000000 --- a/Challenge/dongjay00/sortByPriceAndQuantity/solve.test.js +++ /dev/null @@ -1,44 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '사과', - price: 1000, - quantity: 2, - }, - { - name: '수박', - price: 5000, - quantity: 20, - }, - { - name: '당근', - price: 2000, - quantity: 50, - }, - { - name: '참외', - price: 5000, - quantity: 10, - }, - { - name: '오이', - price: 2000, - quantity: 49, - }, - ], - answer: [ - { name: '사과', price: 1000, quantity: 2 }, - { name: '오이', price: 2000, quantity: 49 }, - { name: '당근', price: 2000, quantity: 50 }, - { name: '참외', price: 5000, quantity: 10 }, - { name: '수박', price: 5000, quantity: 20 }, - ], -}; - -describe('sortByPriceAndQuantity', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/dongjay00/spreadOperatorMaxValue/README.md b/Challenge/dongjay00/spreadOperatorMaxValue/README.md deleted file mode 100644 index 164b68a1..00000000 --- a/Challenge/dongjay00/spreadOperatorMaxValue/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -Spread Operator를 이용해서 값의 최대, 최소값을 구하세요 diff --git a/Challenge/dongjay00/spreadOperatorMaxValue/solve.js b/Challenge/dongjay00/spreadOperatorMaxValue/solve.js deleted file mode 100644 index e28dceb1..00000000 --- a/Challenge/dongjay00/spreadOperatorMaxValue/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -// write your codes -function solution(inputArray) { - const max = Math.max(...inputArray); - const min = Math.min(...inputArray); - return "max : " + max + ", min : " + min; -} - -exports.solution = solution; diff --git a/Challenge/dongjay00/spreadOperatorMaxValue/solve.test.js b/Challenge/dongjay00/spreadOperatorMaxValue/solve.test.js deleted file mode 100644 index 26f2abf9..00000000 --- a/Challenge/dongjay00/spreadOperatorMaxValue/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], - answer: 'max : 10, min : 1', -}; - -describe('spreadOperatorMaxValue', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/dongmin3891/expDivOdd/README.md b/Challenge/dongmin3891/expDivOdd/README.md deleted file mode 100644 index 92d49041..00000000 --- a/Challenge/dongmin3891/expDivOdd/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -제곱한 후 3으로 나눈 나머지가 홀수인 것의 총 합을 구하세요. - -## Expected Output - -12 ? diff --git a/Challenge/dongmin3891/expDivOdd/solve.js b/Challenge/dongmin3891/expDivOdd/solve.js deleted file mode 100644 index 84f36dd5..00000000 --- a/Challenge/dongmin3891/expDivOdd/solve.js +++ /dev/null @@ -1,16 +0,0 @@ -const inputArray = [1, 7, 3, 4, 6]; - -// write your codes - -let result2 = 0; - -const result = inputArray.filter((item) => { - return ((item * item) % 3) % 2 !== 0; -}); -console.log(result); - -for (let i = 0; i < result.length; i++) { - result2 = result2 + result[i]; -} - -console.log(result2); diff --git a/Challenge/dongmin3891/filterAge/README.md b/Challenge/dongmin3891/filterAge/README.md deleted file mode 100644 index 1c73138e..00000000 --- a/Challenge/dongmin3891/filterAge/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소의 age가 30이상 50미만인 사람만 있는 객체의 배열을 만드세요 - -## Expected Output - -[ { name: '일미', age: 35 }, { name: '이미', age: 45 } ] diff --git a/Challenge/dongmin3891/filterAge/solve.js b/Challenge/dongmin3891/filterAge/solve.js deleted file mode 100644 index 88084600..00000000 --- a/Challenge/dongmin3891/filterAge/solve.js +++ /dev/null @@ -1,25 +0,0 @@ -const inputArray = [ - { - name: "영미", - age: 25, - }, - { - name: "일미", - age: 35, - }, - { - name: "이미", - age: 45, - }, - { - name: "삼미", - age: 55, - }, -]; -// write your codes - -const result = inputArray.filter((item) => { - return item.age >= 30 && item.age < 50; -}); - -console.log(result); diff --git a/Challenge/dongmin3891/filterIntersection/README.md b/Challenge/dongmin3891/filterIntersection/README.md deleted file mode 100644 index 56c8d04a..00000000 --- a/Challenge/dongmin3891/filterIntersection/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -두 배열의 교집합을 출력하세요! - -## Expected Output - -[3, 4, 5] \ No newline at end of file diff --git a/Challenge/dongmin3891/filterIntersection/solve.js b/Challenge/dongmin3891/filterIntersection/solve.js deleted file mode 100644 index 4e14440e..00000000 --- a/Challenge/dongmin3891/filterIntersection/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -const A = [1, 2, 3, 4, 5]; -const B = [3, 4, 5, 6, 7]; -// write your codes - -const result = A.filter((item) => { - return B.includes(item); -}); - -console.log(result); diff --git a/Challenge/dongmin3891/filterOdd/README.md b/Challenge/dongmin3891/filterOdd/README.md deleted file mode 100644 index 9bf99a18..00000000 --- a/Challenge/dongmin3891/filterOdd/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -홀수만 뽑아 배열로 만드세요 - -## Expected Output - -[5, 1, 3] diff --git a/Challenge/dongmin3891/filterOdd/solve.js b/Challenge/dongmin3891/filterOdd/solve.js deleted file mode 100644 index c045e61e..00000000 --- a/Challenge/dongmin3891/filterOdd/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -const inputArray = [4, 2, 5, 1, 3]; - -// write your codes - -const result = inputArray.filter((item) => { - return item % 2 !== 0; -}); - -console.log(result); diff --git a/Challenge/dongmin3891/mapAddPercent/README.md b/Challenge/dongmin3891/mapAddPercent/README.md deleted file mode 100644 index 4156a2f9..00000000 --- a/Challenge/dongmin3891/mapAddPercent/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -map 메소드를 사용해 배열 각각 숫자 뒤에 %를 붙인 문자열을 만드세요 - -## Expected Output - -['100%', '10%', '20%', '40%'] diff --git a/Challenge/dongmin3891/mapAddPercent/solve.js b/Challenge/dongmin3891/mapAddPercent/solve.js deleted file mode 100644 index fd1f8823..00000000 --- a/Challenge/dongmin3891/mapAddPercent/solve.js +++ /dev/null @@ -1,7 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes - -const result = inputArray.map((item) => item.toString() + "%"); - -console.log(result); diff --git a/Challenge/dongmin3891/mapAppendOrder/README.md b/Challenge/dongmin3891/mapAppendOrder/README.md deleted file mode 100644 index fccb0d1a..00000000 --- a/Challenge/dongmin3891/mapAppendOrder/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# 문제제목 - -## 설명 - -배열의 값을 name 프로퍼티에 넣고 몇번째 원소인지를 order에 넣은 객체의 배열을 출력하세요 - -## Expected Output - -[ - { name: '홍길동', order: 1 }, - { name: '둘리', order: 2 }, - { name: '루피', order: 3 } -] diff --git a/Challenge/dongmin3891/mapAppendOrder/solve.js b/Challenge/dongmin3891/mapAppendOrder/solve.js deleted file mode 100644 index b56a1465..00000000 --- a/Challenge/dongmin3891/mapAppendOrder/solve.js +++ /dev/null @@ -1,11 +0,0 @@ -const inputArray = ["홍길동", "둘리", "루피"]; - -// write your codes - -let result = inputArray.map((item, index) => { - return { - name: item, - order: index + 1, - }; -}); -console.log(result); diff --git a/Challenge/emjeLee/everyArray/README.md b/Challenge/emjeLee/everyArray/README.md deleted file mode 100644 index 442558f6..00000000 --- a/Challenge/emjeLee/everyArray/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -every를 이용해서 모든 원소가 짝수인지 아닌지를 판별하세요 - -## Expected Output - -true \ No newline at end of file diff --git a/Challenge/emjeLee/everyArray/solve.test.js b/Challenge/emjeLee/everyArray/solve.test.js deleted file mode 100644 index 7dac26a4..00000000 --- a/Challenge/emjeLee/everyArray/solve.test.js +++ /dev/null @@ -1,21 +0,0 @@ -const { solution } = require("./solve"); - -const test1 = { - input: [2, 4, 6, 8, 10], - answer: true, -}; - -const test2 = { - input: [2, 3, 6, 8, 10], - answer: false, -}; - -describe("everyArray", () => { - test("모두 짝수면 true여야 한다.", () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - - test("홀수가 있으면 false여야 한다.", () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); -}); diff --git a/Challenge/emjeLee/expDivOdd/README.md b/Challenge/emjeLee/expDivOdd/README.md deleted file mode 100644 index c07ab10b..00000000 --- a/Challenge/emjeLee/expDivOdd/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -제곱한 후 3으로 나눈 나머지가 홀수인 것 을 뽑은 배열의 총 합을 구하세요. diff --git a/Challenge/emjeLee/expDivOdd/solve.js b/Challenge/emjeLee/expDivOdd/solve.js deleted file mode 100644 index 90aefbf8..00000000 --- a/Challenge/emjeLee/expDivOdd/solve.js +++ /dev/null @@ -1,7 +0,0 @@ -function solution(inputArray) { - return inputArray - .map((num) => num ** 2) - .filter((num) => num % 3 && num) - .reduce((acc, cur) => acc + cur, 0); -} -exports.solution = solution; diff --git a/Challenge/emjeLee/expDivOdd/solve.test.js b/Challenge/emjeLee/expDivOdd/solve.test.js deleted file mode 100644 index ca37fcc3..00000000 --- a/Challenge/emjeLee/expDivOdd/solve.test.js +++ /dev/null @@ -1,21 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 7, 3, 4, 6], - answer: 66, -}; - -const test2 = { - input: [2, 3, 6, 8, 10], - answer: 168, -}; - -describe('everyArray', () => { - test('1, 7, 3, 4, 6', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - - test('2, 3, 6, 8, 10', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); -}); diff --git a/Challenge/emjeLee/filterAge/README.md b/Challenge/emjeLee/filterAge/README.md deleted file mode 100644 index 873a15c1..00000000 --- a/Challenge/emjeLee/filterAge/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소의 age가 30이상 50미만인 사람만 있는 객체의 배열을 만드세요 diff --git a/Challenge/emjeLee/filterAge/solve.js b/Challenge/emjeLee/filterAge/solve.js deleted file mode 100644 index fe42333b..00000000 --- a/Challenge/emjeLee/filterAge/solve.js +++ /dev/null @@ -1,7 +0,0 @@ -// write your codes -function solution(inputArray) { - const answer = inputArray.filter(v => v.age >= 30 && v.age < 50) - return answer; -} - -exports.solution = solution; diff --git a/Challenge/emjeLee/filterAge/solve.test.js b/Challenge/emjeLee/filterAge/solve.test.js deleted file mode 100644 index b9081601..00000000 --- a/Challenge/emjeLee/filterAge/solve.test.js +++ /dev/null @@ -1,32 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '영미', - age: 25, - }, - { - name: '일미', - age: 35, - }, - { - name: '이미', - age: 45, - }, - { - name: '삼미', - age: 55, - }, - ], - answer: [ - { name: '일미', age: 35 }, - { name: '이미', age: 45 }, - ], -}; - -describe('filterAge', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/emjeLee/filterIntersection/README.md b/Challenge/emjeLee/filterIntersection/README.md deleted file mode 100644 index d7c9ad39..00000000 --- a/Challenge/emjeLee/filterIntersection/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# 문제제목 - -## 설명 - -두 배열의 교집합을 출력하세요! diff --git a/Challenge/emjeLee/filterIntersection/solve.js b/Challenge/emjeLee/filterIntersection/solve.js deleted file mode 100644 index 1f23c5e5..00000000 --- a/Challenge/emjeLee/filterIntersection/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -function solution(inputArray1, inputArray2) { - const answer = inputArray1.filter(item => inputArray2.includes(item)); - return answer -} - -exports.solution = solution; diff --git a/Challenge/emjeLee/filterIntersection/solve.test.js b/Challenge/emjeLee/filterIntersection/solve.test.js deleted file mode 100644 index 576cbc86..00000000 --- a/Challenge/emjeLee/filterIntersection/solve.test.js +++ /dev/null @@ -1,15 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: { - A: [1, 2, 3, 4, 5], - B: [3, 4, 5, 6, 7], - }, - answer: [3, 4, 5], -}; - -describe('filterIntersection', () => { - test('test1', () => { - expect(solution(test1.input.A, test1.input.B)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/emjeLee/filterOdd/README.md b/Challenge/emjeLee/filterOdd/README.md deleted file mode 100644 index cf9eda79..00000000 --- a/Challenge/emjeLee/filterOdd/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -홀수만 뽑아 배열로 만드세요 diff --git a/Challenge/emjeLee/filterOdd/solve.js b/Challenge/emjeLee/filterOdd/solve.js deleted file mode 100644 index 2a2b60bd..00000000 --- a/Challenge/emjeLee/filterOdd/solve.js +++ /dev/null @@ -1,7 +0,0 @@ -// write your codes -function solution(inputArray) { - const answer = inputArray.filter((item) => item % 2 === 1) - return answer; -} - -exports.solution = solution; diff --git a/Challenge/emjeLee/filterOdd/solve.test.js b/Challenge/emjeLee/filterOdd/solve.test.js deleted file mode 100644 index 8cfd7f5a..00000000 --- a/Challenge/emjeLee/filterOdd/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [4, 2, 5, 1, 3], - answer: [5, 1, 3], -}; - -const test2 = { - input: [4, 2, 6, 8, 50, 16], - answer: [], -}; - -const test3 = { - input: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], - answer: [1, 3, 5, 7, 9, 11], -}; - -describe('filterOdd', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/emjeLee/findWord/README.md b/Challenge/emjeLee/findWord/README.md deleted file mode 100644 index 8ef123f4..00000000 --- a/Challenge/emjeLee/findWord/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -용가리라는 단어가 있으면 true 없으면 false를 출력 - -## Expected Output - -true diff --git a/Challenge/emjeLee/findWord/solve.js b/Challenge/emjeLee/findWord/solve.js deleted file mode 100644 index c9697902..00000000 --- a/Challenge/emjeLee/findWord/solve.js +++ /dev/null @@ -1,7 +0,0 @@ -// write your codes -function solution(inputArray) { - const answer = inputArray.includes('용가리'); - return answer; -} - -exports.solution = solution; diff --git a/Challenge/emjeLee/findWord/solve.test.js b/Challenge/emjeLee/findWord/solve.test.js deleted file mode 100644 index 804114f6..00000000 --- a/Challenge/emjeLee/findWord/solve.test.js +++ /dev/null @@ -1,26 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: ['잠', '자', '고', '싶', '다', '용가리'], - answer: true, -}; -const test2 = { - input: ['맛있는', '용가리치킨'], - answer: false, -}; -const test3 = { - input: ['고질라', '용가리 ', '울트라맨'], - answer: false, -}; - -describe('findWord', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); \ No newline at end of file diff --git a/Challenge/emjeLee/forEachFilter/README.md b/Challenge/emjeLee/forEachFilter/README.md deleted file mode 100644 index 6dcbc7c2..00000000 --- a/Challenge/emjeLee/forEachFilter/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소중 40 이상인 수만 뽑아 배열을 만드세요. diff --git a/Challenge/emjeLee/forEachFilter/solve.js b/Challenge/emjeLee/forEachFilter/solve.js deleted file mode 100644 index 0751fce6..00000000 --- a/Challenge/emjeLee/forEachFilter/solve.js +++ /dev/null @@ -1,10 +0,0 @@ -// write your codes -function solution(inputArray) { - let answer = []; - inputArray.forEach(item =>{ - if(item >= 40) answer.push(item); - }) - return answer; -} - -exports.solution = solution; diff --git a/Challenge/emjeLee/forEachFilter/solve.test.js b/Challenge/emjeLee/forEachFilter/solve.test.js deleted file mode 100644 index 3d73b25c..00000000 --- a/Challenge/emjeLee/forEachFilter/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: [100, 40], -}; - -describe('forEachFilter', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/emjeLee/forEachFilterIsNaN/README.md b/Challenge/emjeLee/forEachFilterIsNaN/README.md deleted file mode 100644 index 570c030e..00000000 --- a/Challenge/emjeLee/forEachFilterIsNaN/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소중 숫자인 원소만 뽑아 배열을 만드세요. diff --git a/Challenge/emjeLee/forEachFilterIsNaN/solve.js b/Challenge/emjeLee/forEachFilterIsNaN/solve.js deleted file mode 100644 index 88bee467..00000000 --- a/Challenge/emjeLee/forEachFilterIsNaN/solve.js +++ /dev/null @@ -1,14 +0,0 @@ -// write your codes -function solution(inputArray) { - const result = []; - inputArray.forEach((item) => { - if (typeof item === "number") { - result.push(item); - } - }); - return result; - - // return inputArray.filter((item) => typeof item === "number"); -} - -exports.solution = solution; diff --git a/Challenge/emjeLee/forEachFilterIsNaN/solve.test.js b/Challenge/emjeLee/forEachFilterIsNaN/solve.test.js deleted file mode 100644 index d6e118bb..00000000 --- a/Challenge/emjeLee/forEachFilterIsNaN/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 40, '라매', '개발자', 51.5, 'a', 88], - answer: [1, 40, 51.5, 88], -}; - -const test2 = { - input: [1, 2, 3, '4', 5, '6'], - answer: [1, 2, 3, 5], -}; - -const test3 = { - input: [-3, -2, -1, 0, 1, 2, 3], - answer: [-3, -2, -1, 0, 1, 2, 3], -}; - -describe('forEachFilterIsNaN', () => { - test('test1: 숫자,문자 판별', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2: 문자로된 숫자 판별', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3: 음수 양수 포함', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); \ No newline at end of file diff --git a/Challenge/emjeLee/forEachReduce/README.md b/Challenge/emjeLee/forEachReduce/README.md deleted file mode 100644 index a984df2d..00000000 --- a/Challenge/emjeLee/forEachReduce/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -forEach 메소드를 사용해서 배열의 총 합을 출력하는 코드를 작성하세요 diff --git a/Challenge/emjeLee/forEachReduce/solve.js b/Challenge/emjeLee/forEachReduce/solve.js deleted file mode 100644 index 847a76e7..00000000 --- a/Challenge/emjeLee/forEachReduce/solve.js +++ /dev/null @@ -1,10 +0,0 @@ -// write your codes -function solution(inputArray) { - let answer = 0; - inputArray.forEach((item) => { - answer += item; - }); - return answer; -} - -exports.solution = solution; diff --git a/Challenge/emjeLee/forEachReduce/solve.test.js b/Challenge/emjeLee/forEachReduce/solve.test.js deleted file mode 100644 index 397e4b50..00000000 --- a/Challenge/emjeLee/forEachReduce/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: 170, -}; - -const test2 = { - input: [120, -20, -30, 0, 15], - answer: 85, -}; - -const test3 = { - input: [-10, -20, -30], - answer: -60, -}; - -describe('forEachReduce', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2: 음수가 포함된 계산', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3: 음수만 존재하는 계산', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/emjeLee/mapAddPercent/README.md b/Challenge/emjeLee/mapAddPercent/README.md deleted file mode 100644 index 75e73042..00000000 --- a/Challenge/emjeLee/mapAddPercent/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -map 메소드를 사용해 배열 각각 숫자 뒤에 %를 붙인 문자열을 만드세요 diff --git a/Challenge/emjeLee/mapAddPercent/solve.js b/Challenge/emjeLee/mapAddPercent/solve.js deleted file mode 100644 index ce9422e0..00000000 --- a/Challenge/emjeLee/mapAddPercent/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -// write your codes -function solution(inputArray) { - const answer = inputArray.map((item) => `${item}%`); - return answer; - -} - -exports.solution = solution; diff --git a/Challenge/emjeLee/mapAddPercent/solve.test.js b/Challenge/emjeLee/mapAddPercent/solve.test.js deleted file mode 100644 index dac1b3cc..00000000 --- a/Challenge/emjeLee/mapAddPercent/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: ['100%', '10%', '20%', '40%'], -}; - -describe('mapAddPercent', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/emjeLee/mapAppendOrder/README.md b/Challenge/emjeLee/mapAppendOrder/README.md deleted file mode 100644 index 1435623a..00000000 --- a/Challenge/emjeLee/mapAppendOrder/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열의 값을 name 프로퍼티에 넣고 몇번째 원소인지를 order에 넣은 객체의 배열을 출력하세요 diff --git a/Challenge/emjeLee/mapAppendOrder/solve.js b/Challenge/emjeLee/mapAppendOrder/solve.js deleted file mode 100644 index 0b79263c..00000000 --- a/Challenge/emjeLee/mapAppendOrder/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -// write your codes -function solution(inputArray) { - const answer = inputArray.map((item, idx) => { - return {name: item, order: idx+1} - }) - return answer; -} - -exports.solution = solution; diff --git a/Challenge/emjeLee/mapAppendOrder/solve.test.js b/Challenge/emjeLee/mapAppendOrder/solve.test.js deleted file mode 100644 index e08db10c..00000000 --- a/Challenge/emjeLee/mapAppendOrder/solve.test.js +++ /dev/null @@ -1,16 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: ['홍길동', '둘리', '루피'], - answer: [ - { name: '홍길동', order: 1 }, - { name: '둘리', order: 2 }, - { name: '루피', order: 3 }, - ], -}; - -describe('mapAppendOrder', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/emjeLee/reduceNameNickname/README.md b/Challenge/emjeLee/reduceNameNickname/README.md deleted file mode 100644 index b6920e05..00000000 --- a/Challenge/emjeLee/reduceNameNickname/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -입력받은 객채배열의 nickname을 key, name을 value로 하는 객체를 출력하세요 diff --git a/Challenge/emjeLee/reduceNameNickname/solve.js b/Challenge/emjeLee/reduceNameNickname/solve.js deleted file mode 100644 index 91f363af..00000000 --- a/Challenge/emjeLee/reduceNameNickname/solve.js +++ /dev/null @@ -1,11 +0,0 @@ -// write your codes -function solution(inputArray) { - let answer = inputArray.reduce((acc, curr) => { - acc[curr.nickname] = curr.name; - return acc; - },{}) - return answer; -} - - -exports.solution = solution; diff --git a/Challenge/emjeLee/reduceNameNickname/solve.test.js b/Challenge/emjeLee/reduceNameNickname/solve.test.js deleted file mode 100644 index 67b74529..00000000 --- a/Challenge/emjeLee/reduceNameNickname/solve.test.js +++ /dev/null @@ -1,25 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '홍길동', - nickname: 'hong', - }, - { - name: '둘리', - nickname: '2li', - }, - { - name: '오스트랄로피테쿠스', - nickname: '1Cin', - }, - ], - answer: { hong: '홍길동', '2li': '둘리', '1Cin': '오스트랄로피테쿠스' }, -}; - -describe('reduceNameNickname', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/emjeLee/reduceSum/README.md b/Challenge/emjeLee/reduceSum/README.md deleted file mode 100644 index 8c607eb2..00000000 --- a/Challenge/emjeLee/reduceSum/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -reduce 메소드를 사용해서 배열의 모든 수의 합을 구하세요. - -## Expected Output - -106 diff --git a/Challenge/emjeLee/reduceSum/solve.js b/Challenge/emjeLee/reduceSum/solve.js deleted file mode 100644 index 5b61bce7..00000000 --- a/Challenge/emjeLee/reduceSum/solve.js +++ /dev/null @@ -1,7 +0,0 @@ -// write your codes -function solution(inputArray) { - let answer = inputArray.reduce((acc, curr) => acc + curr, 0); - return answer; -} - -exports.solution = solution; diff --git a/Challenge/emjeLee/reduceSum/solve.test.js b/Challenge/emjeLee/reduceSum/solve.test.js deleted file mode 100644 index 046c40cb..00000000 --- a/Challenge/emjeLee/reduceSum/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [10, 3, 20, 5, 8, 60], - answer: 106, -}; - -describe('reduceSum', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/emjeLee/sortByPrice/README.md b/Challenge/emjeLee/sortByPrice/README.md deleted file mode 100644 index b1ccf70e..00000000 --- a/Challenge/emjeLee/sortByPrice/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 - -## Expected Output - -[ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 } -] diff --git a/Challenge/emjeLee/sortByPrice/solve.js b/Challenge/emjeLee/sortByPrice/solve.js deleted file mode 100644 index 1e93633b..00000000 --- a/Challenge/emjeLee/sortByPrice/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -// write your codes -function solution(inputArray) { - const answer = inputArray.sort((a,b) => { - return a.price - b.price - }); - return answer; -} - -exports.solution = solution; diff --git a/Challenge/emjeLee/sortByPrice/solve.test.js b/Challenge/emjeLee/sortByPrice/solve.test.js deleted file mode 100644 index 3d6a3431..00000000 --- a/Challenge/emjeLee/sortByPrice/solve.test.js +++ /dev/null @@ -1,34 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '사과', - price: 1000, - }, - { - name: '수박', - price: 5000, - }, - { - name: '당근', - price: 2000, - }, - { - name: '참외', - price: 10000, - }, - ], - answer: [ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 }, - ], -}; - -describe('sortByPrice', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/emjeLee/spreadOperatorMaxValue/README.md b/Challenge/emjeLee/spreadOperatorMaxValue/README.md deleted file mode 100644 index 164b68a1..00000000 --- a/Challenge/emjeLee/spreadOperatorMaxValue/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -Spread Operator를 이용해서 값의 최대, 최소값을 구하세요 diff --git a/Challenge/emjeLee/spreadOperatorMaxValue/solve.js b/Challenge/emjeLee/spreadOperatorMaxValue/solve.js deleted file mode 100644 index b3733732..00000000 --- a/Challenge/emjeLee/spreadOperatorMaxValue/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return `max : ${Math.max(...inputArray)}, min : ${Math.min(...inputArray)}` -} - -exports.solution = solution; diff --git a/Challenge/emjeLee/spreadOperatorMaxValue/solve.test.js b/Challenge/emjeLee/spreadOperatorMaxValue/solve.test.js deleted file mode 100644 index 26f2abf9..00000000 --- a/Challenge/emjeLee/spreadOperatorMaxValue/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], - answer: 'max : 10, min : 1', -}; - -describe('spreadOperatorMaxValue', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/froggy1014/everyArray/README.md b/Challenge/froggy1014/everyArray/README.md deleted file mode 100644 index 442558f6..00000000 --- a/Challenge/froggy1014/everyArray/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -every를 이용해서 모든 원소가 짝수인지 아닌지를 판별하세요 - -## Expected Output - -true \ No newline at end of file diff --git a/Challenge/froggy1014/everyArray/solve.js b/Challenge/froggy1014/everyArray/solve.js deleted file mode 100644 index a3342dc4..00000000 --- a/Challenge/froggy1014/everyArray/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -function solution(inputArray) { - let answer = inputArray.every(value => value%2 === 0); - return answer; -} - -exports.solution = solution; diff --git a/Challenge/froggy1014/everyArray/solve.test.js b/Challenge/froggy1014/everyArray/solve.test.js deleted file mode 100644 index 7dac26a4..00000000 --- a/Challenge/froggy1014/everyArray/solve.test.js +++ /dev/null @@ -1,21 +0,0 @@ -const { solution } = require("./solve"); - -const test1 = { - input: [2, 4, 6, 8, 10], - answer: true, -}; - -const test2 = { - input: [2, 3, 6, 8, 10], - answer: false, -}; - -describe("everyArray", () => { - test("모두 짝수면 true여야 한다.", () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - - test("홀수가 있으면 false여야 한다.", () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); -}); diff --git a/Challenge/froggy1014/expDivOdd/README.md b/Challenge/froggy1014/expDivOdd/README.md deleted file mode 100644 index c07ab10b..00000000 --- a/Challenge/froggy1014/expDivOdd/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -제곱한 후 3으로 나눈 나머지가 홀수인 것 을 뽑은 배열의 총 합을 구하세요. diff --git a/Challenge/froggy1014/expDivOdd/solve.js b/Challenge/froggy1014/expDivOdd/solve.js deleted file mode 100644 index af16b489..00000000 --- a/Challenge/froggy1014/expDivOdd/solve.js +++ /dev/null @@ -1,10 +0,0 @@ -function solution(inputArray) { - let answer = 0; - inputArray.map((val) => { - if ((val*val)%3 !== 0) - answer+= (val*val) - }) - return answer; -} - -exports.solution = solution; diff --git a/Challenge/froggy1014/expDivOdd/solve.test.js b/Challenge/froggy1014/expDivOdd/solve.test.js deleted file mode 100644 index ca37fcc3..00000000 --- a/Challenge/froggy1014/expDivOdd/solve.test.js +++ /dev/null @@ -1,21 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 7, 3, 4, 6], - answer: 66, -}; - -const test2 = { - input: [2, 3, 6, 8, 10], - answer: 168, -}; - -describe('everyArray', () => { - test('1, 7, 3, 4, 6', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - - test('2, 3, 6, 8, 10', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); -}); diff --git a/Challenge/froggy1014/figureSkating/README.md b/Challenge/froggy1014/figureSkating/README.md deleted file mode 100644 index 54b85fbd..00000000 --- a/Challenge/froggy1014/figureSkating/README.md +++ /dev/null @@ -1,35 +0,0 @@ -## 설명 - -점수를 계산해서 점수가 높은 순으로 name과 score를 가진 객체의 배열을 출력하세요. -단 실격자는 출력하지 않습니다. - -### 피겨 점수 기준 - -피겨 점수는 ‘기술점수(TES)+예술점수(PCS)-감점’으로 구성된다. - -기술점수(TES·Total Element Score)는 기본점수에 수행점수(GOE·Grade Of Execution)를 합산해 도출한다. - -심판은 선수들이 점프와 스핀의 기술을 제대로 수행하는지 살핀다. 점프에선 회전수를 제대로 지켰는지, 에지를 제대로 사용했는지에 따라 ‘롱 에지’(잘못된 에지 사용)나 ‘다운그레이드’(난이도 하락), ‘어텐션’(주의) 등의 판정을 내린다. 스핀과 스텝시퀀스에 붙는 레벨(1~4)도 이들이 결정한다. - -9명의 심판은 선수들이 미리 제출한 연기 구성표를 기준으로 과제별 기본점수에서 가·감점을 한다. 이른바 ‘GOE’라 불리는 수행점수다. - -쇼트프로그램은 점프 3개, 스핀 3개, 스텝 1개의 수행과제가 반드시 포함돼야 한다. - -예술점수(PCS·Total Program Component Score)는 프로그램의 완성도에 영향을 미치는 스케이팅 기술·동작의 연결·연기·안무·곡 해석 등 5가지를 평가한다. - -마지막으로 감점이 반영된다. 감점 항목이 발생할 때마다 1점씩 감점된다. - -원문보기: -http://news.khan.co.kr/kh_news/khan_art_view.html?art_id=201402172146545#csidx6329aebb6a02152bca884614a7f0544 - -### 판정 기준 - -- 점수가 가장 높은 사람이 1등이다. -- 점수는 기술점수(TES) + 예술점수(PCS) - 감점 으로 구성된다. -- 기술점수(TES)는 기본점수 \* 수행점수(GOE)를 합산해 도출한다. -- 필수 수행과제를 수행하지 못했을 시 실격이다. - -### 필수 수행과제 - -- 쇼트프로그램은 점프 3개, 스핀 3개, 스텝 1개의 수행과제가 반드시 포함돼야 한다. -- 점프와 스핀을 4번 이상 수행했을 시 가장 잘한 3개를 기준으로 한다. diff --git a/Challenge/froggy1014/figureSkating/solve.js b/Challenge/froggy1014/figureSkating/solve.js deleted file mode 100644 index 2036c915..00000000 --- a/Challenge/froggy1014/figureSkating/solve.js +++ /dev/null @@ -1,59 +0,0 @@ -// 기본 점수 -const baseScore = { - jump: 10, - spin: 20, - step: 15, -}; - -const baseAssignment = { - jump: 3, - spin: 3, - step: 1, -}; - -// write your codes - -function solution(inputArray) { - - let answer = [] - - // 필수 수행과제 여부 확인 새로운 배열 생성 - - let candidates = inputArray.filter((ppl) => { - return ppl.goe.jump.length >= baseAssignment.jump && - ppl.goe.spin.length >= baseAssignment.spin && - ppl.goe.step.length >= baseAssignment.step - }) - - - candidates.map((candidate) => { - - // 내림차순 정렬 및 splice로 필요이상 요소 제거 후 점수 변수 선어 , reduce로 합산 - - candidate.goe.jump.sort((a,b) => b-a).splice(3) - let jmp_score = candidate.goe.jump.reduce((a,b)=> a+b)*baseScore.jump; - console.log(jmp_score); - candidate.goe.spin.sort((a,b) => b-a).splice(3) - let spn_score = candidate.goe.spin.reduce((a,b) => a+b,0)*baseScore.spin; - console.log(spn_score); - candidate.goe.step.sort((a,b) => b-a).splice(1) - let stp_score = candidate.goe.step * baseScore.step; - console.log(stp_score); - - // 점수 통합 및 배열안에 score 추가 - - let score = jmp_score + spn_score + stp_score + candidate.pcs - candidate.penalty - - candidate['score'] = score; - }) - - // 마지막 선수들끼리 점수 내림차 순으로 바꾸고, answer 배열에 Push하여 순위대로 출력되게끔. - - candidates.sort((a,b) => b.score - a.score); - candidates.map(candidate => { - answer.push({"name":candidate.name, "score":candidate.score}) - }) - return answer; -} - -exports.solution = solution; diff --git a/Challenge/froggy1014/figureSkating/solve.test.js b/Challenge/froggy1014/figureSkating/solve.test.js deleted file mode 100644 index 7bceadf1..00000000 --- a/Challenge/froggy1014/figureSkating/solve.test.js +++ /dev/null @@ -1,46 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '김연아', - goe: { - jump: [10, 9, 10], - spin: [10, 10, 10], - step: [9], - }, - pcs: 30, - penalty: 0, - }, - { - name: '피겨의 신', - goe: { - jump: [10000, 10000], - spin: [10000, 10000, 10000], - step: [10000], - }, - pcs: 100000, - penalty: 0, - }, - { - name: '아사다 마오', - goe: { - jump: [9, 6, 8, 9], - spin: [9, 9, 9], - step: [8], - }, - pcs: 29, - penalty: 10, - }, - ], - answer: [ - { name: '김연아', score: 1055 }, - { name: '아사다 마오', score: 939 }, - ], -}; - -describe('everyArray', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/froggy1014/filterAge/README.md b/Challenge/froggy1014/filterAge/README.md deleted file mode 100644 index 873a15c1..00000000 --- a/Challenge/froggy1014/filterAge/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소의 age가 30이상 50미만인 사람만 있는 객체의 배열을 만드세요 diff --git a/Challenge/froggy1014/filterAge/solve.js b/Challenge/froggy1014/filterAge/solve.js deleted file mode 100644 index e0a2a7ec..00000000 --- a/Challenge/froggy1014/filterAge/solve.js +++ /dev/null @@ -1,15 +0,0 @@ -// write your codes -function solution(inputArray) { - - // answer 라는 배열 변수를 먼저 만들고 filter로 삼항 조건 연산자를 넣어 true값만 - // answer 배열에 push 하였다. - - let answer = []; - inputArray.filter((el) => { - el.age >= 30 && el.age < 50 ? answer.push(el) : null; - }) - return answer; -} - - -exports.solution = solution; diff --git a/Challenge/froggy1014/filterAge/solve.test.js b/Challenge/froggy1014/filterAge/solve.test.js deleted file mode 100644 index b9081601..00000000 --- a/Challenge/froggy1014/filterAge/solve.test.js +++ /dev/null @@ -1,32 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '영미', - age: 25, - }, - { - name: '일미', - age: 35, - }, - { - name: '이미', - age: 45, - }, - { - name: '삼미', - age: 55, - }, - ], - answer: [ - { name: '일미', age: 35 }, - { name: '이미', age: 45 }, - ], -}; - -describe('filterAge', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/froggy1014/filterIntersection/README.md b/Challenge/froggy1014/filterIntersection/README.md deleted file mode 100644 index d7c9ad39..00000000 --- a/Challenge/froggy1014/filterIntersection/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# 문제제목 - -## 설명 - -두 배열의 교집합을 출력하세요! diff --git a/Challenge/froggy1014/filterIntersection/solve.js b/Challenge/froggy1014/filterIntersection/solve.js deleted file mode 100644 index fbb604fd..00000000 --- a/Challenge/froggy1014/filterIntersection/solve.js +++ /dev/null @@ -1,15 +0,0 @@ -function solution(inputArray1, inputArray2) { - - // answer이라는 배열 변수를 만들어주고, filter를 사용하면서 - // 나오는 el에 대해 TargetArray.incldues() 메소드를 통해 - // 삼항 연산자를 이용해 값을 answer에 push - - let answer = []; - inputArray1.filter((el) => { - inputArray2.includes(el) ? answer.push(el) : null; - }) - return answer; -} - - -exports.solution = solution; diff --git a/Challenge/froggy1014/filterIntersection/solve.test.js b/Challenge/froggy1014/filterIntersection/solve.test.js deleted file mode 100644 index 576cbc86..00000000 --- a/Challenge/froggy1014/filterIntersection/solve.test.js +++ /dev/null @@ -1,15 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: { - A: [1, 2, 3, 4, 5], - B: [3, 4, 5, 6, 7], - }, - answer: [3, 4, 5], -}; - -describe('filterIntersection', () => { - test('test1', () => { - expect(solution(test1.input.A, test1.input.B)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/froggy1014/filterOdd/README.md b/Challenge/froggy1014/filterOdd/README.md deleted file mode 100644 index cf9eda79..00000000 --- a/Challenge/froggy1014/filterOdd/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -홀수만 뽑아 배열로 만드세요 diff --git a/Challenge/froggy1014/filterOdd/solve.js b/Challenge/froggy1014/filterOdd/solve.js deleted file mode 100644 index cd17fe30..00000000 --- a/Challenge/froggy1014/filterOdd/solve.js +++ /dev/null @@ -1,10 +0,0 @@ -// write your codes -function solution(inputArray) { - let answer = []; - inputArray.filter((el) => { - el%2 !== 0 ? answer.push(el) : null; - }) - return answer; -} - -exports.solution = solution; diff --git a/Challenge/froggy1014/filterOdd/solve.test.js b/Challenge/froggy1014/filterOdd/solve.test.js deleted file mode 100644 index 8cfd7f5a..00000000 --- a/Challenge/froggy1014/filterOdd/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [4, 2, 5, 1, 3], - answer: [5, 1, 3], -}; - -const test2 = { - input: [4, 2, 6, 8, 50, 16], - answer: [], -}; - -const test3 = { - input: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], - answer: [1, 3, 5, 7, 9, 11], -}; - -describe('filterOdd', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/froggy1014/findWord/README.md b/Challenge/froggy1014/findWord/README.md deleted file mode 100644 index 8ef123f4..00000000 --- a/Challenge/froggy1014/findWord/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -용가리라는 단어가 있으면 true 없으면 false를 출력 - -## Expected Output - -true diff --git a/Challenge/froggy1014/findWord/solve.js b/Challenge/froggy1014/findWord/solve.js deleted file mode 100644 index 3f82ba52..00000000 --- a/Challenge/froggy1014/findWord/solve.js +++ /dev/null @@ -1,11 +0,0 @@ -// write your codes -function solution(inputArray) { - - // indexOf로 해당 스트링이 있는 index를 하나하나 탐색하여 값을 반환해주는데, - // 없을 시에 -1을 반환하기에, -1보다크면 그 스트링이 있는거니 true - - let answer = (inputArray.indexOf('용가리')> -1); - return answer; -} - -exports.solution = solution; diff --git a/Challenge/froggy1014/findWord/solve.test.js b/Challenge/froggy1014/findWord/solve.test.js deleted file mode 100644 index 804114f6..00000000 --- a/Challenge/froggy1014/findWord/solve.test.js +++ /dev/null @@ -1,26 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: ['잠', '자', '고', '싶', '다', '용가리'], - answer: true, -}; -const test2 = { - input: ['맛있는', '용가리치킨'], - answer: false, -}; -const test3 = { - input: ['고질라', '용가리 ', '울트라맨'], - answer: false, -}; - -describe('findWord', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); \ No newline at end of file diff --git a/Challenge/froggy1014/forEachFilter/README.md b/Challenge/froggy1014/forEachFilter/README.md deleted file mode 100644 index 6dcbc7c2..00000000 --- a/Challenge/froggy1014/forEachFilter/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소중 40 이상인 수만 뽑아 배열을 만드세요. diff --git a/Challenge/froggy1014/forEachFilter/solve.js b/Challenge/froggy1014/forEachFilter/solve.js deleted file mode 100644 index 7ee9466c..00000000 --- a/Challenge/froggy1014/forEachFilter/solve.js +++ /dev/null @@ -1,11 +0,0 @@ -// write your codes -function solution(inputArray) { - let answer = []; - inputArray.forEach((el) => { - el >= 40 ? answer.push(el): null; - }) - return answer; -} - - -exports.solution = solution; diff --git a/Challenge/froggy1014/forEachFilter/solve.test.js b/Challenge/froggy1014/forEachFilter/solve.test.js deleted file mode 100644 index 3d73b25c..00000000 --- a/Challenge/froggy1014/forEachFilter/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: [100, 40], -}; - -describe('forEachFilter', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/froggy1014/forEachFilterIsNaN/README.md b/Challenge/froggy1014/forEachFilterIsNaN/README.md deleted file mode 100644 index 570c030e..00000000 --- a/Challenge/froggy1014/forEachFilterIsNaN/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소중 숫자인 원소만 뽑아 배열을 만드세요. diff --git a/Challenge/froggy1014/forEachFilterIsNaN/solve.js b/Challenge/froggy1014/forEachFilterIsNaN/solve.js deleted file mode 100644 index a3375619..00000000 --- a/Challenge/froggy1014/forEachFilterIsNaN/solve.js +++ /dev/null @@ -1,10 +0,0 @@ -// write your codes -function solution(inputArray) { - let answer = []; - inputArray.forEach((el) => { - typeof(el) === typeof(0) ? answer.push(el) : null; - }) - return answer; -} - -exports.solution = solution; diff --git a/Challenge/froggy1014/forEachFilterIsNaN/solve.test.js b/Challenge/froggy1014/forEachFilterIsNaN/solve.test.js deleted file mode 100644 index d6e118bb..00000000 --- a/Challenge/froggy1014/forEachFilterIsNaN/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 40, '라매', '개발자', 51.5, 'a', 88], - answer: [1, 40, 51.5, 88], -}; - -const test2 = { - input: [1, 2, 3, '4', 5, '6'], - answer: [1, 2, 3, 5], -}; - -const test3 = { - input: [-3, -2, -1, 0, 1, 2, 3], - answer: [-3, -2, -1, 0, 1, 2, 3], -}; - -describe('forEachFilterIsNaN', () => { - test('test1: 숫자,문자 판별', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2: 문자로된 숫자 판별', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3: 음수 양수 포함', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); \ No newline at end of file diff --git a/Challenge/froggy1014/forEachMap/README.md b/Challenge/froggy1014/forEachMap/README.md deleted file mode 100644 index 1e8e03c8..00000000 --- a/Challenge/froggy1014/forEachMap/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -forEach 메소드를 사용해서 배열의 각 원소 끝에 '%'를 붙인 문자열 배열을 출력하세요 diff --git a/Challenge/froggy1014/forEachMap/solve.js b/Challenge/froggy1014/forEachMap/solve.js deleted file mode 100644 index ff23a7ff..00000000 --- a/Challenge/froggy1014/forEachMap/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -// write your codes -function solution(inputArray) { - let answer = []; - inputArray.forEach((el) => { - answer.push(el + '%'); - }) - return answer; -} -exports.solution = solution; diff --git a/Challenge/froggy1014/forEachMap/solve.test.js b/Challenge/froggy1014/forEachMap/solve.test.js deleted file mode 100644 index de4868c6..00000000 --- a/Challenge/froggy1014/forEachMap/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: ['100%', '10%', '20%', '40%'], -}; - -describe('forEachMap', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/froggy1014/forEachReduce/README.md b/Challenge/froggy1014/forEachReduce/README.md deleted file mode 100644 index a984df2d..00000000 --- a/Challenge/froggy1014/forEachReduce/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -forEach 메소드를 사용해서 배열의 총 합을 출력하는 코드를 작성하세요 diff --git a/Challenge/froggy1014/forEachReduce/solve.js b/Challenge/froggy1014/forEachReduce/solve.js deleted file mode 100644 index b98b3b26..00000000 --- a/Challenge/froggy1014/forEachReduce/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -// write your codes -function solution(inputArray) { - let answer = 0; - answer = inputArray.reduce((a,b) => a+b,0); - return answer; -} - -exports.solution = solution; diff --git a/Challenge/froggy1014/forEachReduce/solve.test.js b/Challenge/froggy1014/forEachReduce/solve.test.js deleted file mode 100644 index 397e4b50..00000000 --- a/Challenge/froggy1014/forEachReduce/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: 170, -}; - -const test2 = { - input: [120, -20, -30, 0, 15], - answer: 85, -}; - -const test3 = { - input: [-10, -20, -30], - answer: -60, -}; - -describe('forEachReduce', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2: 음수가 포함된 계산', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3: 음수만 존재하는 계산', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/froggy1014/mapAddPercent/README.md b/Challenge/froggy1014/mapAddPercent/README.md deleted file mode 100644 index 75e73042..00000000 --- a/Challenge/froggy1014/mapAddPercent/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -map 메소드를 사용해 배열 각각 숫자 뒤에 %를 붙인 문자열을 만드세요 diff --git a/Challenge/froggy1014/mapAddPercent/solve.js b/Challenge/froggy1014/mapAddPercent/solve.js deleted file mode 100644 index be94c1ba..00000000 --- a/Challenge/froggy1014/mapAddPercent/solve.js +++ /dev/null @@ -1,10 +0,0 @@ -// write your codes -function solution(inputArray) { - let answer = []; - inputArray.map((el) => { - answer.push(el+'%') - }) - return answer; -} - -exports.solution = solution; diff --git a/Challenge/froggy1014/mapAddPercent/solve.test.js b/Challenge/froggy1014/mapAddPercent/solve.test.js deleted file mode 100644 index dac1b3cc..00000000 --- a/Challenge/froggy1014/mapAddPercent/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: ['100%', '10%', '20%', '40%'], -}; - -describe('mapAddPercent', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/froggy1014/mapAppendOrder/README.md b/Challenge/froggy1014/mapAppendOrder/README.md deleted file mode 100644 index 1435623a..00000000 --- a/Challenge/froggy1014/mapAppendOrder/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열의 값을 name 프로퍼티에 넣고 몇번째 원소인지를 order에 넣은 객체의 배열을 출력하세요 diff --git a/Challenge/froggy1014/mapAppendOrder/solve.js b/Challenge/froggy1014/mapAppendOrder/solve.js deleted file mode 100644 index 72c42853..00000000 --- a/Challenge/froggy1014/mapAppendOrder/solve.js +++ /dev/null @@ -1,13 +0,0 @@ -// write your codes -function solution(inputArray) { - const answer = inputArray.map((el,idx)=> { - return { - name: el, - order: idx+1, - } - }) - return answer; -} - - -exports.solution = solution; diff --git a/Challenge/froggy1014/mapAppendOrder/solve.test.js b/Challenge/froggy1014/mapAppendOrder/solve.test.js deleted file mode 100644 index e08db10c..00000000 --- a/Challenge/froggy1014/mapAppendOrder/solve.test.js +++ /dev/null @@ -1,16 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: ['홍길동', '둘리', '루피'], - answer: [ - { name: '홍길동', order: 1 }, - { name: '둘리', order: 2 }, - { name: '루피', order: 3 }, - ], -}; - -describe('mapAppendOrder', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/froggy1014/recommendAd/README.md b/Challenge/froggy1014/recommendAd/README.md deleted file mode 100644 index 132e8800..00000000 --- a/Challenge/froggy1014/recommendAd/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# 문제제목 - -사용자가 안 본 광고는? - -## 설명 - -유튜브는 사용자가 프리미엄 회원이 아닌 경우 영상 시작이나 중간에 광고가 나오도록 설정되어 있습니다. - -[2020년 유튜브 인기 광고](https://www.thinkwithgoogle.com/intl/ko-kr/marketing-strategies/video/%EB%8C%80%ED%95%9C%EB%AF%BC%EA%B5%AD-youtube-%EC%9D%B8%EA%B8%B0-%EA%B4%91%EA%B3%A0%EC%98%81%EC%83%81-2020%EB%85%84-%EC%97%B0%EB%A7%90%EA%B2%B0%EC%82%B0/)는 총 열 편으로, 사용자의 일주일간 광고 시청 이력을 통해 해당 사용자가 일주일 동안 안 본 광고를 그 다음주에 노출함으로써 광고들이 사용자에게 골고루 노출되길 원합니다. - -유저가 매일 유튜브에 접속하여 하루 한 편 이상의 광고를 보았다고 가정할 때, 이 유저가 안 본 광고는 무엇인지 출력해주세요. - -## Expected Output - -[ '동원F&B' ] diff --git a/Challenge/froggy1014/recommendAd/solve.js b/Challenge/froggy1014/recommendAd/solve.js deleted file mode 100644 index 6cdbf986..00000000 --- a/Challenge/froggy1014/recommendAd/solve.js +++ /dev/null @@ -1,59 +0,0 @@ -const userHistory = [ - { date: '2020-11-03', watched: ['KT', 'BBQ'] }, - { date: '2020-11-04', watched: ['정관장', 'KT', '딱좋은데이'] }, - { date: '2020-11-05', watched: ['그랑사가', '농심'] }, - { date: '2020-11-06', watched: ['BBQ'] }, - { date: '2020-11-07', watched: ['쌍용자동차', 'BBQ', 'KT'] }, - { date: '2020-11-08', watched: ['켈로그코리아', '빙그레'] }, - { date: '2020-11-09', watched: ['KT', '그랑사가', '빙그레'] }, -]; - -// write your codes -function solution(inputArray) { - - // answer 배열 선언, 기존 inputArray를 map메소드를 사용하여 - // 딕셔너리 형태로 배열을 재 구성 - - let answer = []; - let newInput = inputArray.map((el) => { - return {name : el, cnt : 0} - }) - - // 이중 삼중 for문으로 userHistory의 watched값을 - // 가져온 다음, 아까 새로만든 newInput 배열에 같은 - // 이름을 가진 인덱스에 cnt값을 +1 해준다. - - for (let x of userHistory) - { - for (let n of x.watched){ - for(let i = 0; i < newInput.length ; i++){ - if (newInput[i].name === n){ - newInput[i].cnt += 1; - } - } - } - } - - // filter 메소드를 사용해, cnt가 0인 name만 answer에 - // push하고 출력하였다. - - newInput.filter((el) => { - el.cnt === 0 ? answer.push(el.name) : null; - }) - return answer; -} -// let inputArray = [ -// '동원F&B', -// '정관장', -// 'KT', -// 'BBQ', -// '그랑사가', -// '농심', -// '딱좋은데이', -// '빙그레', -// '쌍용자동차', -// '켈로그코리아', -// ] -// console.log(solution(inputArray)); - -exports.solution = solution; diff --git a/Challenge/froggy1014/recommendAd/solve.test.js b/Challenge/froggy1014/recommendAd/solve.test.js deleted file mode 100644 index 8a0f6464..00000000 --- a/Challenge/froggy1014/recommendAd/solve.test.js +++ /dev/null @@ -1,23 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - '동원F&B', - '정관장', - 'KT', - 'BBQ', - '그랑사가', - '농심', - '딱좋은데이', - '빙그레', - '쌍용자동차', - '켈로그코리아', - ], - answer: ['동원F&B'], -}; - -describe('recommendAd', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/froggy1014/reduceMaxValueNIndex/README.md b/Challenge/froggy1014/reduceMaxValueNIndex/README.md deleted file mode 100644 index 965bdec6..00000000 --- a/Challenge/froggy1014/reduceMaxValueNIndex/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -reduce 메소드를 사용해 최댓값의 값을 maxValue에, 해당 값의 index를 idx에 넣은 객체를 출력하세요 diff --git a/Challenge/froggy1014/reduceMaxValueNIndex/solve.js b/Challenge/froggy1014/reduceMaxValueNIndex/solve.js deleted file mode 100644 index f8b30382..00000000 --- a/Challenge/froggy1014/reduceMaxValueNIndex/solve.js +++ /dev/null @@ -1,19 +0,0 @@ -// write your codes -function solution(inputArray) { - let min = Number.MIN_SAFE_INTEGER; - - const answer = inputArray.reduce((acc, el, index) => { - console.log(acc, el); - if(acc.maxValue < el) { - return { - maxValue: el, - idx: index, - } - } - return acc; - }, { maxValue: min, idx: -1}) - return answer; -} -// let inputArray = [-24, -2, -13, -49, -999999, -17]; -// console.log(solution(inputArray)) -exports.solution = solution; diff --git a/Challenge/froggy1014/reduceMaxValueNIndex/solve.test.js b/Challenge/froggy1014/reduceMaxValueNIndex/solve.test.js deleted file mode 100644 index 0daef5b8..00000000 --- a/Challenge/froggy1014/reduceMaxValueNIndex/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [3, 29, 38, 12, 57, 74, 40, 85, 61], - answer: { maxValue: 85, idx: 7 }, -}; - -const test2 = { - input: [-24, -2, -13, -49, -999999, -17], - answer: { maxValue: -2, idx: 1 }, -}; -//최댓값이 중복일 때에는 먼저 나온 최댓값의 인덱스를 유지하도록 설정하였습니다. -const test3 = { - input: [2, -20, 21, -874, 99, -16, -29, 99], - answer: { maxValue: 99, idx: 4 }, -}; - -describe('reduceMaxValueNIndex', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2 : 음수 테스트', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3 : 중복된 최대값 테스트', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/froggy1014/reduceNameNickname/README.md b/Challenge/froggy1014/reduceNameNickname/README.md deleted file mode 100644 index b6920e05..00000000 --- a/Challenge/froggy1014/reduceNameNickname/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -입력받은 객채배열의 nickname을 key, name을 value로 하는 객체를 출력하세요 diff --git a/Challenge/froggy1014/reduceNameNickname/solve.js b/Challenge/froggy1014/reduceNameNickname/solve.js deleted file mode 100644 index 038df3fe..00000000 --- a/Challenge/froggy1014/reduceNameNickname/solve.js +++ /dev/null @@ -1,29 +0,0 @@ -// write your codes -function solution(inputArray) { - - const answer = inputArray.reduce((acc, el) => { - return { - ...acc, - [el.nickname]: el.name, - } - }, {}); - return answer; -} -// let inputArray = [ -// { -// name: '홍길동', -// nickname: 'hong', -// }, -// { -// name: '둘리', -// nickname: '2li', -// }, -// { -// name: '오스트랄로피테쿠스', -// nickname: '1Cin', -// }, -// ]; - -// console.log(solution(inputArray)); - -exports.solution = solution; diff --git a/Challenge/froggy1014/reduceNameNickname/solve.test.js b/Challenge/froggy1014/reduceNameNickname/solve.test.js deleted file mode 100644 index 67b74529..00000000 --- a/Challenge/froggy1014/reduceNameNickname/solve.test.js +++ /dev/null @@ -1,25 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '홍길동', - nickname: 'hong', - }, - { - name: '둘리', - nickname: '2li', - }, - { - name: '오스트랄로피테쿠스', - nickname: '1Cin', - }, - ], - answer: { hong: '홍길동', '2li': '둘리', '1Cin': '오스트랄로피테쿠스' }, -}; - -describe('reduceNameNickname', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/froggy1014/reduceSum/README.md b/Challenge/froggy1014/reduceSum/README.md deleted file mode 100644 index 8c607eb2..00000000 --- a/Challenge/froggy1014/reduceSum/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -reduce 메소드를 사용해서 배열의 모든 수의 합을 구하세요. - -## Expected Output - -106 diff --git a/Challenge/froggy1014/reduceSum/solve.js b/Challenge/froggy1014/reduceSum/solve.js deleted file mode 100644 index 47fee960..00000000 --- a/Challenge/froggy1014/reduceSum/solve.js +++ /dev/null @@ -1,10 +0,0 @@ -// write your codes -function solution(inputArray) { - let answer = inputArray.reduce((a,b) => a+b); - return answer; -} -// let arr =[10, 3, 20, 5, 8, 60]; -// console.log(solution(arr)); - - -exports.solution = solution; diff --git a/Challenge/froggy1014/reduceSum/solve.test.js b/Challenge/froggy1014/reduceSum/solve.test.js deleted file mode 100644 index 046c40cb..00000000 --- a/Challenge/froggy1014/reduceSum/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [10, 3, 20, 5, 8, 60], - answer: 106, -}; - -describe('reduceSum', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/froggy1014/sortByPrice/README.md b/Challenge/froggy1014/sortByPrice/README.md deleted file mode 100644 index b1ccf70e..00000000 --- a/Challenge/froggy1014/sortByPrice/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 - -## Expected Output - -[ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 } -] diff --git a/Challenge/froggy1014/sortByPrice/solve.js b/Challenge/froggy1014/sortByPrice/solve.js deleted file mode 100644 index 950e1117..00000000 --- a/Challenge/froggy1014/sortByPrice/solve.js +++ /dev/null @@ -1,27 +0,0 @@ -// write your codes -function solution(inputArray) -{ - let answer = inputArray.sort((a,b) => { - return a.price-b.price; - }) - return answer; -} -// let arr = [ -// { -// name: '사과', -// price: 1000 -// }, { -// name: '수박', -// price: 5000 -// }, { -// name: '당근', -// price: 2000 -// }, { -// name: '참외', -// price: 10000 -// } -// ] -// console.log(solution(arr)); - - -exports.solution = solution; diff --git a/Challenge/froggy1014/sortByPrice/solve.test.js b/Challenge/froggy1014/sortByPrice/solve.test.js deleted file mode 100644 index 3d6a3431..00000000 --- a/Challenge/froggy1014/sortByPrice/solve.test.js +++ /dev/null @@ -1,34 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '사과', - price: 1000, - }, - { - name: '수박', - price: 5000, - }, - { - name: '당근', - price: 2000, - }, - { - name: '참외', - price: 10000, - }, - ], - answer: [ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 }, - ], -}; - -describe('sortByPrice', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/froggy1014/sortByPriceAndQuantity/README.md b/Challenge/froggy1014/sortByPriceAndQuantity/README.md deleted file mode 100644 index 41cd5c95..00000000 --- a/Challenge/froggy1014/sortByPriceAndQuantity/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 -만약 price가 같다면 quantity기준으로 오름차순 정렬하세요 - -## Expected Output - -[ - { name: '사과', price: 1000, quantity: 2 }, - { name: '오이', price: 2000, quantity: 49 }, - { name: '당근', price: 2000, quantity: 50 }, - { name: '참외', price: 5000, quantity: 10 }, - { name: '수박', price: 5000, quantity: 20 } -] diff --git a/Challenge/froggy1014/sortByPriceAndQuantity/solve.js b/Challenge/froggy1014/sortByPriceAndQuantity/solve.js deleted file mode 100644 index 63c12b70..00000000 --- a/Challenge/froggy1014/sortByPriceAndQuantity/solve.js +++ /dev/null @@ -1,38 +0,0 @@ -// write your codes -function solution(inputArray) { - - let answer = inputArray.sort((a,b) => { - if(a.price === b.price) return a.quantity - b.quantity; - else return a.price - b.price; - }) - return answer; -} -// let arr = [ -// { -// name: '사과', -// price: 1000, -// quantity: 2, -// }, -// { -// name: '수박', -// price: 5000, -// quantity: 20, -// }, -// { -// name: '당근', -// price: 2000, -// quantity: 50, -// }, -// { -// name: '참외', -// price: 5000, -// quantity: 10, -// }, -// { -// name: '오이', -// price: 2000, -// quantity: 49, -// }, -// ]; -// console.log(solution(arr)) -exports.solution = solution; diff --git a/Challenge/froggy1014/sortByPriceAndQuantity/solve.test.js b/Challenge/froggy1014/sortByPriceAndQuantity/solve.test.js deleted file mode 100644 index 424f42b7..00000000 --- a/Challenge/froggy1014/sortByPriceAndQuantity/solve.test.js +++ /dev/null @@ -1,44 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '사과', - price: 1000, - quantity: 2, - }, - { - name: '수박', - price: 5000, - quantity: 20, - }, - { - name: '당근', - price: 2000, - quantity: 50, - }, - { - name: '참외', - price: 5000, - quantity: 10, - }, - { - name: '오이', - price: 2000, - quantity: 49, - }, - ], - answer: [ - { name: '사과', price: 1000, quantity: 2 }, - { name: '오이', price: 2000, quantity: 49 }, - { name: '당근', price: 2000, quantity: 50 }, - { name: '참외', price: 5000, quantity: 10 }, - { name: '수박', price: 5000, quantity: 20 }, - ], -}; - -describe('sortByPriceAndQuantity', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/froggy1014/spreadOperatorMaxValue/README.md b/Challenge/froggy1014/spreadOperatorMaxValue/README.md deleted file mode 100644 index 164b68a1..00000000 --- a/Challenge/froggy1014/spreadOperatorMaxValue/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -Spread Operator를 이용해서 값의 최대, 최소값을 구하세요 diff --git a/Challenge/froggy1014/spreadOperatorMaxValue/solve.js b/Challenge/froggy1014/spreadOperatorMaxValue/solve.js deleted file mode 100644 index 831f5208..00000000 --- a/Challenge/froggy1014/spreadOperatorMaxValue/solve.js +++ /dev/null @@ -1,10 +0,0 @@ -// write your codes -function solution(inputArray) { - let answer, max, min; - max = Math.max(...inputArray); - min = Math.min(...inputArray); - return answer = `max : ${max}, min : ${min}`; -} -// let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; -// console.log(solution(arr)); -exports.solution = solution; diff --git a/Challenge/froggy1014/spreadOperatorMaxValue/solve.test.js b/Challenge/froggy1014/spreadOperatorMaxValue/solve.test.js deleted file mode 100644 index 26f2abf9..00000000 --- a/Challenge/froggy1014/spreadOperatorMaxValue/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], - answer: 'max : 10, min : 1', -}; - -describe('spreadOperatorMaxValue', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/ghoon99/filterAge/README.md b/Challenge/ghoon99/filterAge/README.md deleted file mode 100644 index 1c73138e..00000000 --- a/Challenge/ghoon99/filterAge/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소의 age가 30이상 50미만인 사람만 있는 객체의 배열을 만드세요 - -## Expected Output - -[ { name: '일미', age: 35 }, { name: '이미', age: 45 } ] diff --git a/Challenge/ghoon99/filterAge/solve.js b/Challenge/ghoon99/filterAge/solve.js deleted file mode 100644 index 4e700fb9..00000000 --- a/Challenge/ghoon99/filterAge/solve.js +++ /dev/null @@ -1,25 +0,0 @@ -const inputArray = [ - { - name: '영미', - age: 25, - }, - { - name: '일미', - age: 35, - }, - { - name: '이미', - age: 45, - }, - { - name: '삼미', - age: 55, - }, -] - -// write your codes - -const answer = inputArray.filter( - (element) => 30 <= element.age && element.age < 50 -); -console.log(answer); diff --git a/Challenge/ghoon99/filterOdd/README.md b/Challenge/ghoon99/filterOdd/README.md deleted file mode 100644 index 9bf99a18..00000000 --- a/Challenge/ghoon99/filterOdd/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -홀수만 뽑아 배열로 만드세요 - -## Expected Output - -[5, 1, 3] diff --git a/Challenge/ghoon99/filterOdd/solve.js b/Challenge/ghoon99/filterOdd/solve.js deleted file mode 100644 index 5c1c701a..00000000 --- a/Challenge/ghoon99/filterOdd/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -const inputArray = [4, 2, 5, 1, 3]; - -// write your codes - -const answer = inputArray.filter((element) => element % 2 === 1); -console.log(answer); diff --git a/Challenge/ghoon99/forEachMap/README.md b/Challenge/ghoon99/forEachMap/README.md deleted file mode 100644 index d0e84215..00000000 --- a/Challenge/ghoon99/forEachMap/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# forEachReduce - -## 설명 - -forEach 메소드를 사용해서 배열의 각 원소 끝에 '%'를 붙인 문자열 배열을 출력하세요 - -## Expected Output - -[ '100%', '10%', '20%', '40%' ] diff --git a/Challenge/ghoon99/forEachMap/solve.js b/Challenge/ghoon99/forEachMap/solve.js deleted file mode 100644 index 0701439c..00000000 --- a/Challenge/ghoon99/forEachMap/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes - -const answer = inputArray.map((element) => element + "%"); -console.log(answer); diff --git a/Challenge/gup97/everyArray/README.md b/Challenge/gup97/everyArray/README.md deleted file mode 100644 index 442558f6..00000000 --- a/Challenge/gup97/everyArray/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -every를 이용해서 모든 원소가 짝수인지 아닌지를 판별하세요 - -## Expected Output - -true \ No newline at end of file diff --git a/Challenge/gup97/everyArray/solve.js b/Challenge/gup97/everyArray/solve.js deleted file mode 100644 index 94e6087b..00000000 --- a/Challenge/gup97/everyArray/solve.js +++ /dev/null @@ -1,5 +0,0 @@ -function solution(inputArray) { - return inputArray.every((v) => v % 2 === 0); -} - -exports.solution = solution; diff --git a/Challenge/gup97/everyArray/solve.test.js b/Challenge/gup97/everyArray/solve.test.js deleted file mode 100644 index 7dac26a4..00000000 --- a/Challenge/gup97/everyArray/solve.test.js +++ /dev/null @@ -1,21 +0,0 @@ -const { solution } = require("./solve"); - -const test1 = { - input: [2, 4, 6, 8, 10], - answer: true, -}; - -const test2 = { - input: [2, 3, 6, 8, 10], - answer: false, -}; - -describe("everyArray", () => { - test("모두 짝수면 true여야 한다.", () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - - test("홀수가 있으면 false여야 한다.", () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); -}); diff --git a/Challenge/gup97/expDivOdd/README.md b/Challenge/gup97/expDivOdd/README.md deleted file mode 100644 index c07ab10b..00000000 --- a/Challenge/gup97/expDivOdd/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -제곱한 후 3으로 나눈 나머지가 홀수인 것 을 뽑은 배열의 총 합을 구하세요. diff --git a/Challenge/gup97/expDivOdd/solve.js b/Challenge/gup97/expDivOdd/solve.js deleted file mode 100644 index d8e29717..00000000 --- a/Challenge/gup97/expDivOdd/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -function solution(inputArray) { - return inputArray - .map((el) => el * el) - .filter((el) => el % 3 === 1) - .reduce((a, b) => a + b, 0); -} - -exports.solution = solution; diff --git a/Challenge/gup97/expDivOdd/solve.test.js b/Challenge/gup97/expDivOdd/solve.test.js deleted file mode 100644 index ca37fcc3..00000000 --- a/Challenge/gup97/expDivOdd/solve.test.js +++ /dev/null @@ -1,21 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 7, 3, 4, 6], - answer: 66, -}; - -const test2 = { - input: [2, 3, 6, 8, 10], - answer: 168, -}; - -describe('everyArray', () => { - test('1, 7, 3, 4, 6', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - - test('2, 3, 6, 8, 10', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); -}); diff --git a/Challenge/gup97/figureSkating/README.md b/Challenge/gup97/figureSkating/README.md deleted file mode 100644 index 54b85fbd..00000000 --- a/Challenge/gup97/figureSkating/README.md +++ /dev/null @@ -1,35 +0,0 @@ -## 설명 - -점수를 계산해서 점수가 높은 순으로 name과 score를 가진 객체의 배열을 출력하세요. -단 실격자는 출력하지 않습니다. - -### 피겨 점수 기준 - -피겨 점수는 ‘기술점수(TES)+예술점수(PCS)-감점’으로 구성된다. - -기술점수(TES·Total Element Score)는 기본점수에 수행점수(GOE·Grade Of Execution)를 합산해 도출한다. - -심판은 선수들이 점프와 스핀의 기술을 제대로 수행하는지 살핀다. 점프에선 회전수를 제대로 지켰는지, 에지를 제대로 사용했는지에 따라 ‘롱 에지’(잘못된 에지 사용)나 ‘다운그레이드’(난이도 하락), ‘어텐션’(주의) 등의 판정을 내린다. 스핀과 스텝시퀀스에 붙는 레벨(1~4)도 이들이 결정한다. - -9명의 심판은 선수들이 미리 제출한 연기 구성표를 기준으로 과제별 기본점수에서 가·감점을 한다. 이른바 ‘GOE’라 불리는 수행점수다. - -쇼트프로그램은 점프 3개, 스핀 3개, 스텝 1개의 수행과제가 반드시 포함돼야 한다. - -예술점수(PCS·Total Program Component Score)는 프로그램의 완성도에 영향을 미치는 스케이팅 기술·동작의 연결·연기·안무·곡 해석 등 5가지를 평가한다. - -마지막으로 감점이 반영된다. 감점 항목이 발생할 때마다 1점씩 감점된다. - -원문보기: -http://news.khan.co.kr/kh_news/khan_art_view.html?art_id=201402172146545#csidx6329aebb6a02152bca884614a7f0544 - -### 판정 기준 - -- 점수가 가장 높은 사람이 1등이다. -- 점수는 기술점수(TES) + 예술점수(PCS) - 감점 으로 구성된다. -- 기술점수(TES)는 기본점수 \* 수행점수(GOE)를 합산해 도출한다. -- 필수 수행과제를 수행하지 못했을 시 실격이다. - -### 필수 수행과제 - -- 쇼트프로그램은 점프 3개, 스핀 3개, 스텝 1개의 수행과제가 반드시 포함돼야 한다. -- 점프와 스핀을 4번 이상 수행했을 시 가장 잘한 3개를 기준으로 한다. diff --git a/Challenge/gup97/figureSkating/solve.js b/Challenge/gup97/figureSkating/solve.js deleted file mode 100644 index 2cf41b48..00000000 --- a/Challenge/gup97/figureSkating/solve.js +++ /dev/null @@ -1,40 +0,0 @@ -// 기본 점수 -const baseScore = { - jump: 10, - spin: 20, - step: 15, -}; - -const baseAssignment = { - jump: 3, - spin: 3, - step: 1, -}; - -function solution(inputArray) { - const filterBaseAssignment = (el) => { - return Object.keys(el.goe).every((key) => el.goe[key].length >= baseAssignment[key]); - }; - const pointToScore = (el) => { - const tes = Object.entries(el.goe).reduce((acc, cur) => { - return ( - acc + - cur[1] - .sort((a, b) => b - a) - .slice(0, 3) - .reduce((goeAcc, goeCur) => goeAcc + goeCur) * - baseScore[cur[0]] - ); - }, 0); - return { name: el.name, score: tes + el.pcs - el.penalty }; - }; - const sortByScore = (a, b) => b.score - a.score; - const result = inputArray - .filter(filterBaseAssignment) - .map(pointToScore) - .sort(sortByScore); - console.log(result); - return result; -} - -exports.solution = solution; diff --git a/Challenge/gup97/figureSkating/solve.test.js b/Challenge/gup97/figureSkating/solve.test.js deleted file mode 100644 index 7bceadf1..00000000 --- a/Challenge/gup97/figureSkating/solve.test.js +++ /dev/null @@ -1,46 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '김연아', - goe: { - jump: [10, 9, 10], - spin: [10, 10, 10], - step: [9], - }, - pcs: 30, - penalty: 0, - }, - { - name: '피겨의 신', - goe: { - jump: [10000, 10000], - spin: [10000, 10000, 10000], - step: [10000], - }, - pcs: 100000, - penalty: 0, - }, - { - name: '아사다 마오', - goe: { - jump: [9, 6, 8, 9], - spin: [9, 9, 9], - step: [8], - }, - pcs: 29, - penalty: 10, - }, - ], - answer: [ - { name: '김연아', score: 1055 }, - { name: '아사다 마오', score: 939 }, - ], -}; - -describe('everyArray', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/gup97/filterAge/README.md b/Challenge/gup97/filterAge/README.md deleted file mode 100644 index 873a15c1..00000000 --- a/Challenge/gup97/filterAge/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소의 age가 30이상 50미만인 사람만 있는 객체의 배열을 만드세요 diff --git a/Challenge/gup97/filterAge/solve.js b/Challenge/gup97/filterAge/solve.js deleted file mode 100644 index a4029f3f..00000000 --- a/Challenge/gup97/filterAge/solve.js +++ /dev/null @@ -1,10 +0,0 @@ -// write your codes -function solution(inputArray) { - const isNotConditionSize = (el) => { - if (30 <= el.age && el.age < 50) return true; - return false; - }; - return inputArray.filter(isNotConditionSize); -} - -exports.solution = solution; diff --git a/Challenge/gup97/filterAge/solve.test.js b/Challenge/gup97/filterAge/solve.test.js deleted file mode 100644 index b9081601..00000000 --- a/Challenge/gup97/filterAge/solve.test.js +++ /dev/null @@ -1,32 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '영미', - age: 25, - }, - { - name: '일미', - age: 35, - }, - { - name: '이미', - age: 45, - }, - { - name: '삼미', - age: 55, - }, - ], - answer: [ - { name: '일미', age: 35 }, - { name: '이미', age: 45 }, - ], -}; - -describe('filterAge', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/gup97/filterIntersection/README.md b/Challenge/gup97/filterIntersection/README.md deleted file mode 100644 index d7c9ad39..00000000 --- a/Challenge/gup97/filterIntersection/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# 문제제목 - -## 설명 - -두 배열의 교집합을 출력하세요! diff --git a/Challenge/gup97/filterIntersection/solve.js b/Challenge/gup97/filterIntersection/solve.js deleted file mode 100644 index 90919a11..00000000 --- a/Challenge/gup97/filterIntersection/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -function solution(inputArray1, inputArray2) { - const intersection = (el) => { - if (inputArray2.includes(el)) return true; - return false; - }; - return inputArray1.filter(intersection); -} - -exports.solution = solution; diff --git a/Challenge/gup97/filterIntersection/solve.test.js b/Challenge/gup97/filterIntersection/solve.test.js deleted file mode 100644 index 576cbc86..00000000 --- a/Challenge/gup97/filterIntersection/solve.test.js +++ /dev/null @@ -1,15 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: { - A: [1, 2, 3, 4, 5], - B: [3, 4, 5, 6, 7], - }, - answer: [3, 4, 5], -}; - -describe('filterIntersection', () => { - test('test1', () => { - expect(solution(test1.input.A, test1.input.B)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/gup97/filterOdd/README.md b/Challenge/gup97/filterOdd/README.md deleted file mode 100644 index cf9eda79..00000000 --- a/Challenge/gup97/filterOdd/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -홀수만 뽑아 배열로 만드세요 diff --git a/Challenge/gup97/filterOdd/solve.js b/Challenge/gup97/filterOdd/solve.js deleted file mode 100644 index bd7807c1..00000000 --- a/Challenge/gup97/filterOdd/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.filter((el) => el % 2 == 1); -} - -exports.solution = solution; diff --git a/Challenge/gup97/filterOdd/solve.test.js b/Challenge/gup97/filterOdd/solve.test.js deleted file mode 100644 index 8cfd7f5a..00000000 --- a/Challenge/gup97/filterOdd/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [4, 2, 5, 1, 3], - answer: [5, 1, 3], -}; - -const test2 = { - input: [4, 2, 6, 8, 50, 16], - answer: [], -}; - -const test3 = { - input: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], - answer: [1, 3, 5, 7, 9, 11], -}; - -describe('filterOdd', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/gup97/findWord/README.md b/Challenge/gup97/findWord/README.md deleted file mode 100644 index 8ef123f4..00000000 --- a/Challenge/gup97/findWord/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -용가리라는 단어가 있으면 true 없으면 false를 출력 - -## Expected Output - -true diff --git a/Challenge/gup97/findWord/solve.js b/Challenge/gup97/findWord/solve.js deleted file mode 100644 index 24f6e193..00000000 --- a/Challenge/gup97/findWord/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.includes("용가리"); -} - -exports.solution = solution; diff --git a/Challenge/gup97/findWord/solve.test.js b/Challenge/gup97/findWord/solve.test.js deleted file mode 100644 index 804114f6..00000000 --- a/Challenge/gup97/findWord/solve.test.js +++ /dev/null @@ -1,26 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: ['잠', '자', '고', '싶', '다', '용가리'], - answer: true, -}; -const test2 = { - input: ['맛있는', '용가리치킨'], - answer: false, -}; -const test3 = { - input: ['고질라', '용가리 ', '울트라맨'], - answer: false, -}; - -describe('findWord', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); \ No newline at end of file diff --git a/Challenge/gup97/forEachFilter/README.md b/Challenge/gup97/forEachFilter/README.md deleted file mode 100644 index 6dcbc7c2..00000000 --- a/Challenge/gup97/forEachFilter/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소중 40 이상인 수만 뽑아 배열을 만드세요. diff --git a/Challenge/gup97/forEachFilter/solve.js b/Challenge/gup97/forEachFilter/solve.js deleted file mode 100644 index 967d46ee..00000000 --- a/Challenge/gup97/forEachFilter/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.filter((el) => el >= 40); -} - -exports.solution = solution; diff --git a/Challenge/gup97/forEachFilter/solve.test.js b/Challenge/gup97/forEachFilter/solve.test.js deleted file mode 100644 index 3d73b25c..00000000 --- a/Challenge/gup97/forEachFilter/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: [100, 40], -}; - -describe('forEachFilter', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/gup97/forEachFilterIsNaN/README.md b/Challenge/gup97/forEachFilterIsNaN/README.md deleted file mode 100644 index 570c030e..00000000 --- a/Challenge/gup97/forEachFilterIsNaN/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소중 숫자인 원소만 뽑아 배열을 만드세요. diff --git a/Challenge/gup97/forEachFilterIsNaN/solve.js b/Challenge/gup97/forEachFilterIsNaN/solve.js deleted file mode 100644 index 070421fd..00000000 --- a/Challenge/gup97/forEachFilterIsNaN/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -// write your codes -function solution(inputArray) { - // 새로운 방법...!! - // return inputArray.filter(filter(Number.isFinite)); - return inputArray.filter((el) => typeof el === "number"); -} - -exports.solution = solution; diff --git a/Challenge/gup97/forEachFilterIsNaN/solve.test.js b/Challenge/gup97/forEachFilterIsNaN/solve.test.js deleted file mode 100644 index d6e118bb..00000000 --- a/Challenge/gup97/forEachFilterIsNaN/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 40, '라매', '개발자', 51.5, 'a', 88], - answer: [1, 40, 51.5, 88], -}; - -const test2 = { - input: [1, 2, 3, '4', 5, '6'], - answer: [1, 2, 3, 5], -}; - -const test3 = { - input: [-3, -2, -1, 0, 1, 2, 3], - answer: [-3, -2, -1, 0, 1, 2, 3], -}; - -describe('forEachFilterIsNaN', () => { - test('test1: 숫자,문자 판별', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2: 문자로된 숫자 판별', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3: 음수 양수 포함', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); \ No newline at end of file diff --git a/Challenge/gup97/forEachMap/README.md b/Challenge/gup97/forEachMap/README.md deleted file mode 100644 index 1e8e03c8..00000000 --- a/Challenge/gup97/forEachMap/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -forEach 메소드를 사용해서 배열의 각 원소 끝에 '%'를 붙인 문자열 배열을 출력하세요 diff --git a/Challenge/gup97/forEachMap/solve.js b/Challenge/gup97/forEachMap/solve.js deleted file mode 100644 index d9cd2c77..00000000 --- a/Challenge/gup97/forEachMap/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -// write your codes -function solution(inputArray) { - let result = []; - inputArray.forEach((el) => result.push(`${el}%`)); - return result; -} - -exports.solution = solution; diff --git a/Challenge/gup97/forEachMap/solve.test.js b/Challenge/gup97/forEachMap/solve.test.js deleted file mode 100644 index de4868c6..00000000 --- a/Challenge/gup97/forEachMap/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: ['100%', '10%', '20%', '40%'], -}; - -describe('forEachMap', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/gup97/forEachReduce/README.md b/Challenge/gup97/forEachReduce/README.md deleted file mode 100644 index a984df2d..00000000 --- a/Challenge/gup97/forEachReduce/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -forEach 메소드를 사용해서 배열의 총 합을 출력하는 코드를 작성하세요 diff --git a/Challenge/gup97/forEachReduce/solve.js b/Challenge/gup97/forEachReduce/solve.js deleted file mode 100644 index 0a1ec798..00000000 --- a/Challenge/gup97/forEachReduce/solve.js +++ /dev/null @@ -1,10 +0,0 @@ -// write your codes -function solution(inputArray) { - let sum = 0; - inputArray.forEach((el) => { - sum += el; - }); - return sum; -} - -exports.solution = solution; diff --git a/Challenge/gup97/forEachReduce/solve.test.js b/Challenge/gup97/forEachReduce/solve.test.js deleted file mode 100644 index 397e4b50..00000000 --- a/Challenge/gup97/forEachReduce/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: 170, -}; - -const test2 = { - input: [120, -20, -30, 0, 15], - answer: 85, -}; - -const test3 = { - input: [-10, -20, -30], - answer: -60, -}; - -describe('forEachReduce', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2: 음수가 포함된 계산', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3: 음수만 존재하는 계산', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/gup97/mapAddPercent/README.md b/Challenge/gup97/mapAddPercent/README.md deleted file mode 100644 index 75e73042..00000000 --- a/Challenge/gup97/mapAddPercent/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -map 메소드를 사용해 배열 각각 숫자 뒤에 %를 붙인 문자열을 만드세요 diff --git a/Challenge/gup97/mapAddPercent/solve.js b/Challenge/gup97/mapAddPercent/solve.js deleted file mode 100644 index 4d9e309a..00000000 --- a/Challenge/gup97/mapAddPercent/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.map((el) => `${el}%`); -} - -exports.solution = solution; diff --git a/Challenge/gup97/mapAddPercent/solve.test.js b/Challenge/gup97/mapAddPercent/solve.test.js deleted file mode 100644 index dac1b3cc..00000000 --- a/Challenge/gup97/mapAddPercent/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: ['100%', '10%', '20%', '40%'], -}; - -describe('mapAddPercent', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/gup97/mapAppendOrder/README.md b/Challenge/gup97/mapAppendOrder/README.md deleted file mode 100644 index 1435623a..00000000 --- a/Challenge/gup97/mapAppendOrder/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열의 값을 name 프로퍼티에 넣고 몇번째 원소인지를 order에 넣은 객체의 배열을 출력하세요 diff --git a/Challenge/gup97/mapAppendOrder/solve.js b/Challenge/gup97/mapAppendOrder/solve.js deleted file mode 100644 index 64c7bb08..00000000 --- a/Challenge/gup97/mapAppendOrder/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.map((el, index) => { - return { name: el, order: index + 1 }; - }); -} - -exports.solution = solution; diff --git a/Challenge/gup97/mapAppendOrder/solve.test.js b/Challenge/gup97/mapAppendOrder/solve.test.js deleted file mode 100644 index e08db10c..00000000 --- a/Challenge/gup97/mapAppendOrder/solve.test.js +++ /dev/null @@ -1,16 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: ['홍길동', '둘리', '루피'], - answer: [ - { name: '홍길동', order: 1 }, - { name: '둘리', order: 2 }, - { name: '루피', order: 3 }, - ], -}; - -describe('mapAppendOrder', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/gup97/recommendAd/README.md b/Challenge/gup97/recommendAd/README.md deleted file mode 100644 index 132e8800..00000000 --- a/Challenge/gup97/recommendAd/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# 문제제목 - -사용자가 안 본 광고는? - -## 설명 - -유튜브는 사용자가 프리미엄 회원이 아닌 경우 영상 시작이나 중간에 광고가 나오도록 설정되어 있습니다. - -[2020년 유튜브 인기 광고](https://www.thinkwithgoogle.com/intl/ko-kr/marketing-strategies/video/%EB%8C%80%ED%95%9C%EB%AF%BC%EA%B5%AD-youtube-%EC%9D%B8%EA%B8%B0-%EA%B4%91%EA%B3%A0%EC%98%81%EC%83%81-2020%EB%85%84-%EC%97%B0%EB%A7%90%EA%B2%B0%EC%82%B0/)는 총 열 편으로, 사용자의 일주일간 광고 시청 이력을 통해 해당 사용자가 일주일 동안 안 본 광고를 그 다음주에 노출함으로써 광고들이 사용자에게 골고루 노출되길 원합니다. - -유저가 매일 유튜브에 접속하여 하루 한 편 이상의 광고를 보았다고 가정할 때, 이 유저가 안 본 광고는 무엇인지 출력해주세요. - -## Expected Output - -[ '동원F&B' ] diff --git a/Challenge/gup97/recommendAd/solve.js b/Challenge/gup97/recommendAd/solve.js deleted file mode 100644 index 4c076aff..00000000 --- a/Challenge/gup97/recommendAd/solve.js +++ /dev/null @@ -1,26 +0,0 @@ -const userHistory = [ - { date: "2020-11-03", watched: ["KT", "BBQ"] }, - { date: "2020-11-04", watched: ["정관장", "KT", "딱좋은데이"] }, - { date: "2020-11-05", watched: ["그랑사가", "농심"] }, - { date: "2020-11-06", watched: ["BBQ"] }, - { date: "2020-11-07", watched: ["쌍용자동차", "BBQ", "KT"] }, - { date: "2020-11-08", watched: ["켈로그코리아", "빙그레"] }, - { date: "2020-11-09", watched: ["KT", "그랑사가", "빙그레"] }, -]; - -// write your codes -function solution(inputArray) { - //방법 1 새 배열없이 userHistory에서 하나씩 검사 - const filterWatched = (el) => { - return !userHistory.some((cur) => cur.watched.includes(el)); - }; - return inputArray.filter(filterWatched); - //방법2 새배열에 전부담고 출력 - // const setList = new Set(); - // userHistory.map(({ watched }) => watched.map((val) => setList.add(val))); - // console.log(setList); - // const list = Array.from(setList); - // return inputArray.filter((val) => !list.includes(val)); -} - -exports.solution = solution; diff --git a/Challenge/gup97/recommendAd/solve.test.js b/Challenge/gup97/recommendAd/solve.test.js deleted file mode 100644 index 8a0f6464..00000000 --- a/Challenge/gup97/recommendAd/solve.test.js +++ /dev/null @@ -1,23 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - '동원F&B', - '정관장', - 'KT', - 'BBQ', - '그랑사가', - '농심', - '딱좋은데이', - '빙그레', - '쌍용자동차', - '켈로그코리아', - ], - answer: ['동원F&B'], -}; - -describe('recommendAd', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/gup97/reduceMaxValueNIndex/README.md b/Challenge/gup97/reduceMaxValueNIndex/README.md deleted file mode 100644 index 965bdec6..00000000 --- a/Challenge/gup97/reduceMaxValueNIndex/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -reduce 메소드를 사용해 최댓값의 값을 maxValue에, 해당 값의 index를 idx에 넣은 객체를 출력하세요 diff --git a/Challenge/gup97/reduceMaxValueNIndex/solve.js b/Challenge/gup97/reduceMaxValueNIndex/solve.js deleted file mode 100644 index 89e66462..00000000 --- a/Challenge/gup97/reduceMaxValueNIndex/solve.js +++ /dev/null @@ -1,12 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.reduce( - (acc, cur, index) => { - return acc.maxValue < cur ? { maxValue: cur, idx: index } : acc; - }, - { maxValue: -Infinity, idx: -Infinity } - ); -} - -// if (acc?.maxValue < el) { <-????? 이건뭐지} -exports.solution = solution; diff --git a/Challenge/gup97/reduceMaxValueNIndex/solve.test.js b/Challenge/gup97/reduceMaxValueNIndex/solve.test.js deleted file mode 100644 index 0daef5b8..00000000 --- a/Challenge/gup97/reduceMaxValueNIndex/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [3, 29, 38, 12, 57, 74, 40, 85, 61], - answer: { maxValue: 85, idx: 7 }, -}; - -const test2 = { - input: [-24, -2, -13, -49, -999999, -17], - answer: { maxValue: -2, idx: 1 }, -}; -//최댓값이 중복일 때에는 먼저 나온 최댓값의 인덱스를 유지하도록 설정하였습니다. -const test3 = { - input: [2, -20, 21, -874, 99, -16, -29, 99], - answer: { maxValue: 99, idx: 4 }, -}; - -describe('reduceMaxValueNIndex', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2 : 음수 테스트', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3 : 중복된 최대값 테스트', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/gup97/reduceNameNickname/README.md b/Challenge/gup97/reduceNameNickname/README.md deleted file mode 100644 index b6920e05..00000000 --- a/Challenge/gup97/reduceNameNickname/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -입력받은 객채배열의 nickname을 key, name을 value로 하는 객체를 출력하세요 diff --git a/Challenge/gup97/reduceNameNickname/solve.js b/Challenge/gup97/reduceNameNickname/solve.js deleted file mode 100644 index 8fe44d1a..00000000 --- a/Challenge/gup97/reduceNameNickname/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.reduce((acc, cur) => { - return { ...acc, [cur.nickname]: cur.name }; - }, {}); -} - -exports.solution = solution; diff --git a/Challenge/gup97/reduceNameNickname/solve.test.js b/Challenge/gup97/reduceNameNickname/solve.test.js deleted file mode 100644 index 2d19e31d..00000000 --- a/Challenge/gup97/reduceNameNickname/solve.test.js +++ /dev/null @@ -1,25 +0,0 @@ -const { solution } = require("./solve"); - -const test1 = { - input: [ - { - name: "홍길동", - nickname: "hong", - }, - { - name: "둘리", - nickname: "2li", - }, - { - name: "오스트랄로피테쿠스", - nickname: "1Cin", - }, - ], - answer: { hong: "홍길동", "2li": "둘리", "1Cin": "오스트랄로피테쿠스" }, -}; - -describe("reduceNameNickname", () => { - test("test1", () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/gup97/reduceSum/README.md b/Challenge/gup97/reduceSum/README.md deleted file mode 100644 index 8c607eb2..00000000 --- a/Challenge/gup97/reduceSum/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -reduce 메소드를 사용해서 배열의 모든 수의 합을 구하세요. - -## Expected Output - -106 diff --git a/Challenge/gup97/reduceSum/solve.js b/Challenge/gup97/reduceSum/solve.js deleted file mode 100644 index d2e914fb..00000000 --- a/Challenge/gup97/reduceSum/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.reduce((acc, cur) => acc + cur); -} - -exports.solution = solution; diff --git a/Challenge/gup97/reduceSum/solve.test.js b/Challenge/gup97/reduceSum/solve.test.js deleted file mode 100644 index 046c40cb..00000000 --- a/Challenge/gup97/reduceSum/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [10, 3, 20, 5, 8, 60], - answer: 106, -}; - -describe('reduceSum', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/gup97/sortByPrice/README.md b/Challenge/gup97/sortByPrice/README.md deleted file mode 100644 index b1ccf70e..00000000 --- a/Challenge/gup97/sortByPrice/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 - -## Expected Output - -[ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 } -] diff --git a/Challenge/gup97/sortByPrice/solve.js b/Challenge/gup97/sortByPrice/solve.js deleted file mode 100644 index cb4fa4c3..00000000 --- a/Challenge/gup97/sortByPrice/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.sort((a, b) => a.price - b.price); -} - -exports.solution = solution; diff --git a/Challenge/gup97/sortByPrice/solve.test.js b/Challenge/gup97/sortByPrice/solve.test.js deleted file mode 100644 index 3d6a3431..00000000 --- a/Challenge/gup97/sortByPrice/solve.test.js +++ /dev/null @@ -1,34 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '사과', - price: 1000, - }, - { - name: '수박', - price: 5000, - }, - { - name: '당근', - price: 2000, - }, - { - name: '참외', - price: 10000, - }, - ], - answer: [ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 }, - ], -}; - -describe('sortByPrice', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/gup97/sortByPriceAndQuantity/README.md b/Challenge/gup97/sortByPriceAndQuantity/README.md deleted file mode 100644 index 41cd5c95..00000000 --- a/Challenge/gup97/sortByPriceAndQuantity/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 -만약 price가 같다면 quantity기준으로 오름차순 정렬하세요 - -## Expected Output - -[ - { name: '사과', price: 1000, quantity: 2 }, - { name: '오이', price: 2000, quantity: 49 }, - { name: '당근', price: 2000, quantity: 50 }, - { name: '참외', price: 5000, quantity: 10 }, - { name: '수박', price: 5000, quantity: 20 } -] diff --git a/Challenge/gup97/sortByPriceAndQuantity/solve.js b/Challenge/gup97/sortByPriceAndQuantity/solve.js deleted file mode 100644 index 9ccf424f..00000000 --- a/Challenge/gup97/sortByPriceAndQuantity/solve.js +++ /dev/null @@ -1,11 +0,0 @@ -// write your codes -function solution(inputArray) { - const sortPriceAndQuan = (a, b) => { - if (a.price < b.price) return -1; - else if (a.price > b.price) return 1; - return a.quantity < b.quantity ? -1 : 1; - }; - return inputArray.sort(sortPriceAndQuan); -} - -exports.solution = solution; diff --git a/Challenge/gup97/sortByPriceAndQuantity/solve.test.js b/Challenge/gup97/sortByPriceAndQuantity/solve.test.js deleted file mode 100644 index 424f42b7..00000000 --- a/Challenge/gup97/sortByPriceAndQuantity/solve.test.js +++ /dev/null @@ -1,44 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '사과', - price: 1000, - quantity: 2, - }, - { - name: '수박', - price: 5000, - quantity: 20, - }, - { - name: '당근', - price: 2000, - quantity: 50, - }, - { - name: '참외', - price: 5000, - quantity: 10, - }, - { - name: '오이', - price: 2000, - quantity: 49, - }, - ], - answer: [ - { name: '사과', price: 1000, quantity: 2 }, - { name: '오이', price: 2000, quantity: 49 }, - { name: '당근', price: 2000, quantity: 50 }, - { name: '참외', price: 5000, quantity: 10 }, - { name: '수박', price: 5000, quantity: 20 }, - ], -}; - -describe('sortByPriceAndQuantity', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/gup97/spreadOperatorMaxValue/README.md b/Challenge/gup97/spreadOperatorMaxValue/README.md deleted file mode 100644 index 164b68a1..00000000 --- a/Challenge/gup97/spreadOperatorMaxValue/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -Spread Operator를 이용해서 값의 최대, 최소값을 구하세요 diff --git a/Challenge/gup97/spreadOperatorMaxValue/solve.js b/Challenge/gup97/spreadOperatorMaxValue/solve.js deleted file mode 100644 index 49c5cf13..00000000 --- a/Challenge/gup97/spreadOperatorMaxValue/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return `max : ${Math.max(...inputArray)}, min : ${Math.min(...inputArray)}`; -} - -exports.solution = solution; diff --git a/Challenge/gup97/spreadOperatorMaxValue/solve.test.js b/Challenge/gup97/spreadOperatorMaxValue/solve.test.js deleted file mode 100644 index 26f2abf9..00000000 --- a/Challenge/gup97/spreadOperatorMaxValue/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], - answer: 'max : 10, min : 1', -}; - -describe('spreadOperatorMaxValue', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/h-sick/everyArray/README.md b/Challenge/h-sick/everyArray/README.md deleted file mode 100644 index 442558f6..00000000 --- a/Challenge/h-sick/everyArray/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -every를 이용해서 모든 원소가 짝수인지 아닌지를 판별하세요 - -## Expected Output - -true \ No newline at end of file diff --git a/Challenge/h-sick/everyArray/solve.js b/Challenge/h-sick/everyArray/solve.js deleted file mode 100644 index f3f6a0d3..00000000 --- a/Challenge/h-sick/everyArray/solve.js +++ /dev/null @@ -1,5 +0,0 @@ -const inputArray = [2, 4, 6, 8, 10]; - -// write your codes - -console.log(inputArray.every((num) => num % 2 === 0)); diff --git a/Challenge/h-sick/expDivOdd/README.md b/Challenge/h-sick/expDivOdd/README.md deleted file mode 100644 index ca68f81d..00000000 --- a/Challenge/h-sick/expDivOdd/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -제곱한 후 3으로 나눈 나머지가 홀수인 것의 총 합을 구하세요. - -## Expected Output - -66 diff --git a/Challenge/h-sick/expDivOdd/solve.js b/Challenge/h-sick/expDivOdd/solve.js deleted file mode 100644 index ab70466f..00000000 --- a/Challenge/h-sick/expDivOdd/solve.js +++ /dev/null @@ -1,13 +0,0 @@ -const inputArray = [1, 7, 3, 4, 6]; - -// write your codes - -function solution(inputArray) { - let total = 0; - inputArray.forEach((num) => { - let division = (num * num) % 3; - if (division % 2 === 1) total += num * num; - }); - return total; -} -console.log(solution(inputArray)); diff --git a/Challenge/h-sick/figureSkating/README.md b/Challenge/h-sick/figureSkating/README.md deleted file mode 100644 index 88ec86ed..00000000 --- a/Challenge/h-sick/figureSkating/README.md +++ /dev/null @@ -1,41 +0,0 @@ -# 문제제목 - -## 설명 - -점수를 계산해서 점수가 높은 순으로 name과 score를 가진 객체의 배열을 출력하세요. -단 실격자는 출력하지 않습니다. - -### 피겨 점수 기준 - -피겨 점수는 ‘기술점수(TES)+예술점수(PCS)-감점’으로 구성된다. - -기술점수(TES·Total Element Score)는 기본점수에 수행점수(GOE·Grade Of Execution)를 합산해 도출한다. - -심판은 선수들이 점프와 스핀의 기술을 제대로 수행하는지 살핀다. 점프에선 회전수를 제대로 지켰는지, 에지를 제대로 사용했는지에 따라 ‘롱 에지’(잘못된 에지 사용)나 ‘다운그레이드’(난이도 하락), ‘어텐션’(주의) 등의 판정을 내린다. 스핀과 스텝시퀀스에 붙는 레벨(1~4)도 이들이 결정한다. - -9명의 심판은 선수들이 미리 제출한 연기 구성표를 기준으로 과제별 기본점수에서 가·감점을 한다. 이른바 ‘GOE’라 불리는 수행점수다. - -쇼트프로그램은 점프 3개, 스핀 3개, 스텝 1개의 수행과제가 반드시 포함돼야 한다. - -예술점수(PCS·Total Program Component Score)는 프로그램의 완성도에 영향을 미치는 스케이팅 기술·동작의 연결·연기·안무·곡 해석 등 5가지를 평가한다. - -마지막으로 감점이 반영된다. 감점 항목이 발생할 때마다 1점씩 감점된다. - -원문보기: -http://news.khan.co.kr/kh_news/khan_art_view.html?art_id=201402172146545#csidx6329aebb6a02152bca884614a7f0544 - -### 판정 기준 - -- 점수가 가장 높은 사람이 1등이다. -- 점수는 기술점수(TES) + 예술점수(PCS) - 감점 으로 구성된다. -- 기술점수(TES)는 기본점수 \* 수행점수(GOE)를 합산해 도출한다. -- 필수 수행과제를 수행하지 못했을 시 실격이다. - -### 필수 수행과제 - -- 쇼트프로그램은 점프 3개, 스핀 3개, 스텝 1개의 수행과제가 반드시 포함돼야 한다. -- 점프와 스핀을 4번 이상 수행했을 시 가장 잘한 3개를 기준으로 한다. - -## Expected Output - -[ { name: '김연아', score: 1055 }, { name: '아사다 마오', score: 939 } ] diff --git a/Challenge/h-sick/figureSkating/solve.js b/Challenge/h-sick/figureSkating/solve.js deleted file mode 100644 index 32b6aa6b..00000000 --- a/Challenge/h-sick/figureSkating/solve.js +++ /dev/null @@ -1,69 +0,0 @@ -// 기본 점수 -const baseScore = { - jump: 10, - spin: 20, - step: 15, -}; - -const baseAssignment = { - jump: 3, - spin: 3, - step: 1, -}; - -const inputArray = [ - { - name: '김연아', - goe: { - jump: [10, 9, 10], - spin: [10, 10, 10], - step: [9], - }, - pcs: 30, - penalty: 0, - }, - { - name: '피겨의 신', - goe: { - jump: [10000, 10000], - spin: [10000, 10000, 10000], - step: [10000], - }, - pcs: 100000, - penalty: 0, - }, - { - name: '아사다 마오', - goe: { - jump: [9, 6, 8, 9], - spin: [9, 9, 9], - step: [8], - }, - pcs: 29, - penalty: 10, - }, -]; - -// write your codes - -function solution(input) { - const result = input - .map((player) => { - const goe = player.goe; - const pass = - goe.jump.length >= 3 && goe.spin.length >= 3 && goe.step.length >= 1; - if (pass) { - const jump = goe.jump.sort((a, b) => b - a).slice(0, 3); - const spin = goe.spin.sort((a, b) => b - a).slice(0, 3); - let score = 0; - jump.forEach((point) => (score += point * baseScore.jump)); - spin.forEach((point) => (score += point * baseScore.spin)); - goe.step.forEach((point) => (score += point * baseScore.step)); - score = score + player.pcs - player.penalty; - return { name: player.name, score }; - } - }) - .filter((player) => player); - return result; -} -console.log(solution(inputArray)); diff --git a/Challenge/harrykim14/README.md b/Challenge/harrykim14/README.md deleted file mode 100644 index 89f02ad4..00000000 --- a/Challenge/harrykim14/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# JS-Array-Challenge - -## 자바스크립트 배열을 마스터 해보자! - -Solved 2 problems: expDidOdd, filterAge (5/8)
- -Solved 14 problems: figureSkating, filterOdd, findWord, forEachFilter, forEachFilterIsNaN, forEachMap, forEachReduce, mapAddPercent, mapAppendOrder, reduceMaxValueNIndex, reduceNameNickname, reduceSum, sortByPrice, sortByPriceAndQuantity (5/9)
- -Solved 1 problem: filterIntersection (5/10)
diff --git a/Challenge/harrykim14/expDivOdd/README.md b/Challenge/harrykim14/expDivOdd/README.md deleted file mode 100644 index 6749b510..00000000 --- a/Challenge/harrykim14/expDivOdd/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -// 제곱한 후 3으로 나눈 나머지가 홀수인 것의 총 합을 구하세요. - -## Expected Output - -59 diff --git a/Challenge/harrykim14/expDivOdd/solve.js b/Challenge/harrykim14/expDivOdd/solve.js deleted file mode 100644 index 1b3829fc..00000000 --- a/Challenge/harrykim14/expDivOdd/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -const inputArray = [ 1, 7, 3, 4, 6 ]; - -// write your codes -// filter를 통해 해당 조건(제곱한 수가 3으로 나눴을 때 나머지가 홀수)을 만족하는 숫자만 추려냄 -// filter로 리턴받은 배열을 reduce를 사용해 제곱한 후 누적 -let answer = inputArray.filter(el => ((el * el) % 3) % 2 === 1 ) - .reduce((acc, cur) => (cur * cur) + acc, 0) - -console.log(answer) // 66 diff --git a/Challenge/harrykim14/figureSkating/README.md b/Challenge/harrykim14/figureSkating/README.md deleted file mode 100644 index bfaa0743..00000000 --- a/Challenge/harrykim14/figureSkating/README.md +++ /dev/null @@ -1,41 +0,0 @@ -# 문제제목 - -## 설명 - -점수를 계산해서 점수가 높은 순으로 name과 score를 가진 객체의 배열을 출력하세요. -단 실격자는 출력하지 않습니다. - -### 피겨 점수 기준 - -피겨 점수는 ‘기술점수(TES)+예술점수(PCS)-감점’으로 구성된다. - -기술점수(TES·Total Element Score)는 기본점수에 수행점수(GOE·Grade Of Execution)를 합산해 도출한다. - -심판은 선수들이 점프와 스핀의 기술을 제대로 수행하는지 살핀다. 점프에선 회전수를 제대로 지켰는지, 에지를 제대로 사용했는지에 따라 ‘롱 에지’(잘못된 에지 사용)나 ‘다운그레이드’(난이도 하락), ‘어텐션’(주의) 등의 판정을 내린다. 스핀과 스텝시퀀스에 붙는 레벨(1~4)도 이들이 결정한다. - -9명의 심판은 선수들이 미리 제출한 연기 구성표를 기준으로 과제별 기본점수에서 가·감점을 한다. 이른바 ‘GOE’라 불리는 수행점수다. - -쇼트프로그램은 점프 3개, 스핀 3개, 스텝 1개의 수행과제가 반드시 포함돼야 한다. - -예술점수(PCS·Total Program Component Score)는 프로그램의 완성도에 영향을 미치는 스케이팅 기술·동작의 연결·연기·안무·곡 해석 등 5가지를 평가한다. - -마지막으로 감점이 반영된다. 감점 항목이 발생할 때마다 1점씩 감점된다. - -원문보기: -http://news.khan.co.kr/kh_news/khan_art_view.html?art_id=201402172146545#csidx6329aebb6a02152bca884614a7f0544 - -### 판정 기준 - -* 점수가 가장 높은 사람이 1등이다. -* 점수는 기술점수(TES) + 예술점수(PCS) - 감점 으로 구성된다. -* 기술점수(TES)는 기본점수 * 수행점수(GOE)를 합산해 도출한다. -* 필수 수행과제를 수행하지 못했을 시 실격이다. - -### 필수 수행과제 - -* 쇼트프로그램은 점프 3개, 스핀 3개, 스텝 1개의 수행과제가 반드시 포함돼야 한다. -* 점프와 스핀을 4번 이상 수행했을 시 가장 잘한 3개를 기준으로 한다. - -## Expected Output - -[ { name: '김연아', score: 1055 }, { name: '아사다 마오', score: 999 } ] diff --git a/Challenge/harrykim14/figureSkating/solve.js b/Challenge/harrykim14/figureSkating/solve.js deleted file mode 100644 index 814c1a08..00000000 --- a/Challenge/harrykim14/figureSkating/solve.js +++ /dev/null @@ -1,86 +0,0 @@ -// 기본 점수 -const baseScore = { - jump: 10, - spin: 20, - step: 15, -} - -const baseAssignment = { - jump: 3, - spin: 3, - step: 1, -} - -const inputArray = [ - { - name: '김연아', - goe: { - jump: [10, 9, 10], - spin: [10, 10, 10], - step: [9], - }, - pcs: 30, - penalty: 0, - }, - { - name: '피겨의 신', - goe: { - jump: [10000, 10000], - spin: [10000, 10000, 10000], - step: [10000] - }, - pcs: 100000, - penalty: 0, - }, - { - name: '아사다 마오', - goe: { - jump: [9, 6, 8, 9], - spin: [9, 9, 9], - step: [8], - }, - pcs: 29, - penalty: 10, - }, -] - -// write your codes -// 쇼트프로그램은 점프 3개, 스핀 3개, 스텝 1개의 수행과제가 반드시 포함돼야 한다. -let checkTasks = inputArray.filter( - el => el.goe.jump.length >= baseAssignment.jump - && el.goe.spin.length >= baseAssignment.spin - && el.goe.step.length >= baseAssignment.step - ) -// 점프와 스핀을 4번 이상 수행했을 시 가장 잘한 3개를 기준으로 한다. -let bestPerformance = checkTasks.map(el => { - return { - name: el.name, - goe: { - jump: el.goe.jump.length > 3 - ? el.goe.jump.sort((a,b) => b-a) - .slice(0,3) - .reduce((acc, cur) => acc+cur, 0) - : el.goe.jump.reduce((acc, cur) => acc+cur, 0), - spin: el.goe.spin.length > 3 - ? el.goe.spin.sort((a,b) => b-a) - .slice(0,3) - .reduce((acc, cur) => acc+cur, 0) - : el.goe.spin.reduce((acc, cur) => acc+cur, 0), - step: el.goe.step.reduce((acc, cur) => acc+cur, 0) - }, - pcs: el.pcs, - penalty: el.penalty - } -}) - -// 점수는 기술점수(TES) + 예술점수(PCS) - 감점 으로 구성된다. -let calculateScore = bestPerformance.map(el => { - return { - name : el.name, - score: (el.goe.jump * baseScore.jump) - + (el.goe.spin * baseScore.spin) - + (el.goe.step * baseScore.step) - + el.pcs - - el.penalty - } -}).sort((a,b) => b.score - a.score) diff --git a/Challenge/harrykim14/filterAge/README.md b/Challenge/harrykim14/filterAge/README.md deleted file mode 100644 index 1c73138e..00000000 --- a/Challenge/harrykim14/filterAge/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소의 age가 30이상 50미만인 사람만 있는 객체의 배열을 만드세요 - -## Expected Output - -[ { name: '일미', age: 35 }, { name: '이미', age: 45 } ] diff --git a/Challenge/harrykim14/filterAge/solve.js b/Challenge/harrykim14/filterAge/solve.js deleted file mode 100644 index 2de9e54a..00000000 --- a/Challenge/harrykim14/filterAge/solve.js +++ /dev/null @@ -1,23 +0,0 @@ -const inputArray = [ - { - name: '영미', - age: 25, - }, - { - name: '일미', - age: 35, - }, - { - name: '이미', - age: 45, - }, - { - name: '삼미', - age: 55, - }, -] -// write your codes -// age가 30이상 50미만인 사람 -const result = inputArray.filter(el => el.age >= 30 && el.age < 50) - -console.log(result) //[ { name: '일미', age: 35 }, { name: '이미', age: 45 } ] diff --git a/Challenge/harrykim14/filterIntersection/README.md b/Challenge/harrykim14/filterIntersection/README.md deleted file mode 100644 index 56c8d04a..00000000 --- a/Challenge/harrykim14/filterIntersection/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -두 배열의 교집합을 출력하세요! - -## Expected Output - -[3, 4, 5] \ No newline at end of file diff --git a/Challenge/harrykim14/filterIntersection/solve.js b/Challenge/harrykim14/filterIntersection/solve.js deleted file mode 100644 index aea1b01e..00000000 --- a/Challenge/harrykim14/filterIntersection/solve.js +++ /dev/null @@ -1,12 +0,0 @@ -const A = [1, 2, 3, 4, 5]; -const B = [3, 4, 5, 6, 7]; -// write your codes - -// 반대로 적용해도 같은 답을 구할 수 있다 -const intersection = A.filter(el => new Set([...B]).has(el)) - -// 함수화하기 -function getIntersection(A, B) { - return A.filter(el => new Set([...B]).has(el)); -} - diff --git a/Challenge/harrykim14/filterOdd/README.md b/Challenge/harrykim14/filterOdd/README.md deleted file mode 100644 index 9bf99a18..00000000 --- a/Challenge/harrykim14/filterOdd/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -홀수만 뽑아 배열로 만드세요 - -## Expected Output - -[5, 1, 3] diff --git a/Challenge/harrykim14/filterOdd/solve.js b/Challenge/harrykim14/filterOdd/solve.js deleted file mode 100644 index 0b5d558f..00000000 --- a/Challenge/harrykim14/filterOdd/solve.js +++ /dev/null @@ -1,4 +0,0 @@ -const inputArray = [4, 2, 5, 1, 3]; - -// write your codes -let oddArray = inputArray.filter(el => el % 2 !== 0) \ No newline at end of file diff --git a/Challenge/harrykim14/findWord/README.md b/Challenge/harrykim14/findWord/README.md deleted file mode 100644 index 8ef123f4..00000000 --- a/Challenge/harrykim14/findWord/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -용가리라는 단어가 있으면 true 없으면 false를 출력 - -## Expected Output - -true diff --git a/Challenge/harrykim14/findWord/solve.js b/Challenge/harrykim14/findWord/solve.js deleted file mode 100644 index 9ee8e6c7..00000000 --- a/Challenge/harrykim14/findWord/solve.js +++ /dev/null @@ -1,4 +0,0 @@ -const inputArray = ['잠', '자', '고', '싶', '다', '용가리']; - -// write your codes -let has용가리 = inputArray.includes('용가리') \ No newline at end of file diff --git a/Challenge/harrykim14/forEachFilter/README.md b/Challenge/harrykim14/forEachFilter/README.md deleted file mode 100644 index 0451ae06..00000000 --- a/Challenge/harrykim14/forEachFilter/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소중 40 이상인 수만 뽑아 배열을 만드세요. - -## Expected Output - -[ 100, 40 ] diff --git a/Challenge/harrykim14/forEachFilter/solve.js b/Challenge/harrykim14/forEachFilter/solve.js deleted file mode 100644 index 8be6ec1c..00000000 --- a/Challenge/harrykim14/forEachFilter/solve.js +++ /dev/null @@ -1,11 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes -let biggerThan40 = []; -inputArray.forEach(el => { - if(el >= 40) { - biggerThan40.push(el) - } -}) - -// let biggerThan40 = inputArray.filter(el => el >= 40) diff --git a/Challenge/harrykim14/forEachFilterIsNaN/README.md b/Challenge/harrykim14/forEachFilterIsNaN/README.md deleted file mode 100644 index ba71774d..00000000 --- a/Challenge/harrykim14/forEachFilterIsNaN/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소중 숫자인 원소만 뽑아 배열을 만드세요. - -## Expected Output - -[ 1, 40, 51.5, 88 ] diff --git a/Challenge/harrykim14/forEachFilterIsNaN/solve.js b/Challenge/harrykim14/forEachFilterIsNaN/solve.js deleted file mode 100644 index fb118699..00000000 --- a/Challenge/harrykim14/forEachFilterIsNaN/solve.js +++ /dev/null @@ -1,11 +0,0 @@ -const inputArray = [ 1, 40, "라매", "개발자", 51.5, 'a', 88 ]; - -// write your codes -let filterNumber = []; -inputArray.forEach(el => { - if(!isNaN(el)) { - filterNumber.push(el); - } -}) - -// let filterNumber = inputArray.filter(el => !isNaN(el)) \ No newline at end of file diff --git a/Challenge/harrykim14/forEachMap/README.md b/Challenge/harrykim14/forEachMap/README.md deleted file mode 100644 index d0e84215..00000000 --- a/Challenge/harrykim14/forEachMap/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# forEachReduce - -## 설명 - -forEach 메소드를 사용해서 배열의 각 원소 끝에 '%'를 붙인 문자열 배열을 출력하세요 - -## Expected Output - -[ '100%', '10%', '20%', '40%' ] diff --git a/Challenge/harrykim14/forEachMap/solve.js b/Challenge/harrykim14/forEachMap/solve.js deleted file mode 100644 index d93fcc4b..00000000 --- a/Challenge/harrykim14/forEachMap/solve.js +++ /dev/null @@ -1,5 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes -let percentage = [] -inputArray.forEach(el => percentage.push(el.toString() + "%")) diff --git a/Challenge/harrykim14/forEachReduce/README.md b/Challenge/harrykim14/forEachReduce/README.md deleted file mode 100644 index 8f369ed9..00000000 --- a/Challenge/harrykim14/forEachReduce/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# forEachReduce - -## 설명 - -forEach 메소드를 사용해서 배열의 총 합을 출력하는 코드를 작성하세요 - -## Expected Output - -170 diff --git a/Challenge/harrykim14/forEachReduce/solve.js b/Challenge/harrykim14/forEachReduce/solve.js deleted file mode 100644 index 447d2385..00000000 --- a/Challenge/harrykim14/forEachReduce/solve.js +++ /dev/null @@ -1,5 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes -let sum = 0; -inputArray.forEach(el => sum += el); diff --git a/Challenge/harrykim14/mapAddPercent/README.md b/Challenge/harrykim14/mapAddPercent/README.md deleted file mode 100644 index 4156a2f9..00000000 --- a/Challenge/harrykim14/mapAddPercent/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -map 메소드를 사용해 배열 각각 숫자 뒤에 %를 붙인 문자열을 만드세요 - -## Expected Output - -['100%', '10%', '20%', '40%'] diff --git a/Challenge/harrykim14/mapAddPercent/solve.js b/Challenge/harrykim14/mapAddPercent/solve.js deleted file mode 100644 index dc4aa105..00000000 --- a/Challenge/harrykim14/mapAddPercent/solve.js +++ /dev/null @@ -1,5 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes - -let percentage = inputArray.map(el => el.toString() + "%") \ No newline at end of file diff --git a/Challenge/harrykim14/mapAppendOrder/README.md b/Challenge/harrykim14/mapAppendOrder/README.md deleted file mode 100644 index 3a478dc6..00000000 --- a/Challenge/harrykim14/mapAppendOrder/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# 문제제목 - -## 설명 - -배열의 값을 name 프로퍼티에 넣고 몇번째 원소인지를 order에 넣은 객체의 배열을 출력하세요 - -## Expected Output - -[ -{ name: '홍길동', order: 1 }, -{ name: '둘리', order: 2 }, -{ name: '루피', order: 3 } -] diff --git a/Challenge/harrykim14/mapAppendOrder/solve.js b/Challenge/harrykim14/mapAppendOrder/solve.js deleted file mode 100644 index f521f28a..00000000 --- a/Challenge/harrykim14/mapAppendOrder/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -const inputArray = ['홍길동', '둘리', '루피']; - -// write your codes -let orderedArray = inputArray.map((el, idx) => { - return { - name: el, - order: idx + 1 - } -}) diff --git a/Challenge/harrykim14/recommendAd/README.md b/Challenge/harrykim14/recommendAd/README.md deleted file mode 100644 index 510df285..00000000 --- a/Challenge/harrykim14/recommendAd/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# 문제제목 - -사용자가 안 본 광고는? - -## 설명 - -유튜브는 사용자가 프리미엄 회원이 아닌 경우 영상 시작이나 중간에 광고가 나오도록 설정되어 있습니다. - -[2020년 유튜브 인기 광고](https://www.thinkwithgoogle.com/intl/ko-kr/marketing-strategies/video/%EB%8C%80%ED%95%9C%EB%AF%BC%EA%B5%AD-youtube-%EC%9D%B8%EA%B8%B0-%EA%B4%91%EA%B3%A0%EC%98%81%EC%83%81-2020%EB%85%84-%EC%97%B0%EB%A7%90%EA%B2%B0%EC%82%B0/)는 총 열 편으로, 사용자의 일주일간 광고 시청 이력을 통해 해당 사용자가 일주일 동안 안 본 광고를 그 다음주에 노출함으로써 사용자가 광고를 골고루 시청하길 원합니다. - -유저가 매일 유튜브에 접속하여 하루 한 편 이상의 광고를 보았다고 가정할 때, 이 유저가 안 본 광고는 무엇인지 출력해주세요. - -## Expected Output - -[ '동원F&B' ] diff --git a/Challenge/harrykim14/recommendAd/solve.js b/Challenge/harrykim14/recommendAd/solve.js deleted file mode 100644 index 2b9aa40b..00000000 --- a/Challenge/harrykim14/recommendAd/solve.js +++ /dev/null @@ -1,16 +0,0 @@ -const userHistory = [ - { date: '2020-11-03', watched: [ 'KT', 'BBQ' ] }, - { date: '2020-11-04', watched: [ '정관장', 'KT', '딱좋은데이' ] }, - { date: '2020-11-05', watched: [ '그랑사가', '농심' ] }, - { date: '2020-11-06', watched: [ 'BBQ' ] }, - { date: '2020-11-07', watched: [ '쌍용자동차', 'BBQ', 'KT' ] }, - { date: '2020-11-08', watched: [ '켈로그코리아', '빙그레' ] }, - { date: '2020-11-09', watched: [ 'KT', '그랑사가', '빙그레' ] }, -]; - -const advList = [ '동원F&B', '정관장', 'KT', 'BBQ', '그랑사가', '농심', '딱좋은데이', '빙그레', '쌍용자동차', '켈로그코리아' ]; - -// write your codes -let allAd = [] -userHistory.forEach(el => allAd.push(...el.watched)); -let notWatched = advList.filter(el => !allAd.includes(el)) \ No newline at end of file diff --git a/Challenge/harrykim14/reduceMaxValueNIndex/README.md b/Challenge/harrykim14/reduceMaxValueNIndex/README.md deleted file mode 100644 index 8f6006b0..00000000 --- a/Challenge/harrykim14/reduceMaxValueNIndex/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -reduce 메소드를 사용해 최댓값의 값을 maxValue에, 해당 값의 index를 idx에 넣은 객체를 출력하세요 - -## Expected Output - -{ maxValue: 85, idx: 7 }. diff --git a/Challenge/harrykim14/reduceMaxValueNIndex/solve.js b/Challenge/harrykim14/reduceMaxValueNIndex/solve.js deleted file mode 100644 index 83410718..00000000 --- a/Challenge/harrykim14/reduceMaxValueNIndex/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -const inputArray = [3, 29, 38, 12, 57, 74, 40, 85, 61]; - -// write your codes -let findMaxValueAndIdx = inputArray.reduce((acc, cur) => { - return { - maxValue : cur > acc.maxValue ? cur : acc.maxValue, - idx : inputArray.indexOf(acc.maxValue) - } -}, { maxValue: 0, idx: 0}) \ No newline at end of file diff --git a/Challenge/harrykim14/reduceNameNickname/README.md b/Challenge/harrykim14/reduceNameNickname/README.md deleted file mode 100644 index aeaf5b31..00000000 --- a/Challenge/harrykim14/reduceNameNickname/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -입력받은 객채배열의 nickname을 key, name을 value로 하는 객체를 출력하세요 - -## Expected Output - -{ hong: '홍길동', '2li': '둘리', '1Cin': '오스트랄로피테쿠스' } diff --git a/Challenge/harrykim14/reduceNameNickname/solve.js b/Challenge/harrykim14/reduceNameNickname/solve.js deleted file mode 100644 index 65d00ee3..00000000 --- a/Challenge/harrykim14/reduceNameNickname/solve.js +++ /dev/null @@ -1,20 +0,0 @@ -const inputArray = [ - { - name: '홍길동', - nickname: 'hong', - }, - { - name: '둘리', - nickname: '2li', - }, - { - name: '오스트랄로피테쿠스', - nickname: '1Cin', - }, -]; - -// write your codes -let extractNameAndNickname = inputArray.reduce((acc, cur) => { - acc[cur.nickname] = cur.name - return acc -}, {}) \ No newline at end of file diff --git a/Challenge/harrykim14/reduceSum/README.md b/Challenge/harrykim14/reduceSum/README.md deleted file mode 100644 index 8c607eb2..00000000 --- a/Challenge/harrykim14/reduceSum/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -reduce 메소드를 사용해서 배열의 모든 수의 합을 구하세요. - -## Expected Output - -106 diff --git a/Challenge/harrykim14/reduceSum/solve.js b/Challenge/harrykim14/reduceSum/solve.js deleted file mode 100644 index b0186f1a..00000000 --- a/Challenge/harrykim14/reduceSum/solve.js +++ /dev/null @@ -1,4 +0,0 @@ -const inputArray = [10, 3, 20, 5, 8, 60]; - -// write your codes -let sum = inputArray.reduce((acc, cur) => acc+cur, 0); \ No newline at end of file diff --git a/Challenge/harrykim14/sortByPrice/README.md b/Challenge/harrykim14/sortByPrice/README.md deleted file mode 100644 index b1ccf70e..00000000 --- a/Challenge/harrykim14/sortByPrice/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 - -## Expected Output - -[ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 } -] diff --git a/Challenge/harrykim14/sortByPrice/solve.js b/Challenge/harrykim14/sortByPrice/solve.js deleted file mode 100644 index a7b9ee08..00000000 --- a/Challenge/harrykim14/sortByPrice/solve.js +++ /dev/null @@ -1,21 +0,0 @@ -const inputArray = [ - { - name: '사과', - price: 1000, - }, - { - name: '수박', - price: 5000, - }, - { - name: '당근', - price: 2000, - }, - { - name: '참외', - price: 10000, - } -]; - -// write your codes -let sortedByPrice = inputArray.sort((a,b) => a.price - b.price); diff --git a/Challenge/harrykim14/sortByPriceAndQuantity/README.md b/Challenge/harrykim14/sortByPriceAndQuantity/README.md deleted file mode 100644 index 41cd5c95..00000000 --- a/Challenge/harrykim14/sortByPriceAndQuantity/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 -만약 price가 같다면 quantity기준으로 오름차순 정렬하세요 - -## Expected Output - -[ - { name: '사과', price: 1000, quantity: 2 }, - { name: '오이', price: 2000, quantity: 49 }, - { name: '당근', price: 2000, quantity: 50 }, - { name: '참외', price: 5000, quantity: 10 }, - { name: '수박', price: 5000, quantity: 20 } -] diff --git a/Challenge/harrykim14/sortByPriceAndQuantity/solve.js b/Challenge/harrykim14/sortByPriceAndQuantity/solve.js deleted file mode 100644 index 3987fa82..00000000 --- a/Challenge/harrykim14/sortByPriceAndQuantity/solve.js +++ /dev/null @@ -1,35 +0,0 @@ -const inputArray = [ - { - name: '사과', - price: 1000, - quantity: 2, - }, - { - name: '수박', - price: 5000, - quantity: 20, - }, - { - name: '당근', - price: 2000, - quantity: 50, - }, - { - name: '참외', - price: 5000, - quantity: 10, - }, - { - name: '오이', - price: 2000, - quantity: 49, - } -]; - -// write your codes -let sortedByPriceNQuantity = inputArray.sort((a,b) => { - if (a.price === b.price) return a.quantity - b.quantity - return a.price - b.price -}) - - diff --git a/Challenge/healtheloper/expDivOdd/README.md b/Challenge/healtheloper/expDivOdd/README.md deleted file mode 100644 index 2d5e0676..00000000 --- a/Challenge/healtheloper/expDivOdd/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# 문제제목 - -## 설명 - -제곱한 후 3으로 나눈 나머지가 홀수인 것의 총 합을 구하세요. - -## Expected Output diff --git a/Challenge/healtheloper/expDivOdd/solve.js b/Challenge/healtheloper/expDivOdd/solve.js deleted file mode 100644 index 2e18a5c4..00000000 --- a/Challenge/healtheloper/expDivOdd/solve.js +++ /dev/null @@ -1,10 +0,0 @@ -const inputArray = [1, 7, 3, 4, 6]; - -// write your codes - -const sum = inputArray - .map((e) => e ** 2) - .filter((e) => e % 3 === 1) - .reduce((acc, el) => acc + el); - -console.log(sum); diff --git a/Challenge/healtheloper/filterAge/README.md b/Challenge/healtheloper/filterAge/README.md deleted file mode 100644 index 1c73138e..00000000 --- a/Challenge/healtheloper/filterAge/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소의 age가 30이상 50미만인 사람만 있는 객체의 배열을 만드세요 - -## Expected Output - -[ { name: '일미', age: 35 }, { name: '이미', age: 45 } ] diff --git a/Challenge/healtheloper/filterAge/solve.js b/Challenge/healtheloper/filterAge/solve.js deleted file mode 100644 index 2c26e443..00000000 --- a/Challenge/healtheloper/filterAge/solve.js +++ /dev/null @@ -1,22 +0,0 @@ -const inputArray = [ - { - name: "영미", - age: 25, - }, - { - name: "일미", - age: 35, - }, - { - name: "이미", - age: 45, - }, - { - name: "삼미", - age: 55, - }, -]; -// write your codes - -const result = inputArray.filter((obj) => obj.age >= 30 && obj.age < 50); -console.log(result); diff --git a/Challenge/healtheloper/filterIntersection/README.md b/Challenge/healtheloper/filterIntersection/README.md deleted file mode 100644 index 56c8d04a..00000000 --- a/Challenge/healtheloper/filterIntersection/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -두 배열의 교집합을 출력하세요! - -## Expected Output - -[3, 4, 5] \ No newline at end of file diff --git a/Challenge/healtheloper/filterIntersection/solve.js b/Challenge/healtheloper/filterIntersection/solve.js deleted file mode 100644 index 752cf9d5..00000000 --- a/Challenge/healtheloper/filterIntersection/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -const A = [1, 2, 3, 4, 5]; -const B = [3, 4, 5, 6, 7]; -// write your codes - -const result = A.filter((a) => B.includes(a)); -console.log(result); diff --git a/Challenge/hwibaski/everyArray/README.md b/Challenge/hwibaski/everyArray/README.md deleted file mode 100644 index 442558f6..00000000 --- a/Challenge/hwibaski/everyArray/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -every를 이용해서 모든 원소가 짝수인지 아닌지를 판별하세요 - -## Expected Output - -true \ No newline at end of file diff --git a/Challenge/hwibaski/everyArray/solve.js b/Challenge/hwibaski/everyArray/solve.js deleted file mode 100644 index f9e71999..00000000 --- a/Challenge/hwibaski/everyArray/solve.js +++ /dev/null @@ -1,5 +0,0 @@ -function solution(inputArray) { - const isEveryElEven = (el) => el % 2 === 0; - return inputArray.every(isEveryElEven); -} -exports.solution = solution; diff --git a/Challenge/hwibaski/everyArray/solve.test.js b/Challenge/hwibaski/everyArray/solve.test.js deleted file mode 100644 index b03e4791..00000000 --- a/Challenge/hwibaski/everyArray/solve.test.js +++ /dev/null @@ -1,21 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [2, 4, 6, 8, 10], - answer: true, -}; - -const test2 = { - input: [2, 3, 6, 8, 10], - answer: false, -}; - -describe('everyArray', () => { - test('모두 짝수면 true여야 한다.', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - - test('홀수가 있으면 false여야 한다.', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); -}); diff --git a/Challenge/hwibaski/expDivOdd/README.md b/Challenge/hwibaski/expDivOdd/README.md deleted file mode 100644 index c07ab10b..00000000 --- a/Challenge/hwibaski/expDivOdd/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -제곱한 후 3으로 나눈 나머지가 홀수인 것 을 뽑은 배열의 총 합을 구하세요. diff --git a/Challenge/hwibaski/expDivOdd/solve.js b/Challenge/hwibaski/expDivOdd/solve.js deleted file mode 100644 index 88ad78f3..00000000 --- a/Challenge/hwibaski/expDivOdd/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -function solution(inputArray) { - const number = inputArray.filter((item) => item ** 2 % 3 === 1); - const calculate = number.map((item) => item ** 2); - const result = calculate.reduce((acc, value) => acc + value, 0); - return result; -} - -exports.solution = solution; diff --git a/Challenge/hwibaski/expDivOdd/solve.test.js b/Challenge/hwibaski/expDivOdd/solve.test.js deleted file mode 100644 index ca37fcc3..00000000 --- a/Challenge/hwibaski/expDivOdd/solve.test.js +++ /dev/null @@ -1,21 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 7, 3, 4, 6], - answer: 66, -}; - -const test2 = { - input: [2, 3, 6, 8, 10], - answer: 168, -}; - -describe('everyArray', () => { - test('1, 7, 3, 4, 6', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - - test('2, 3, 6, 8, 10', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); -}); diff --git a/Challenge/hyunwoome/expDivOdd/README.md b/Challenge/hyunwoome/expDivOdd/README.md deleted file mode 100644 index ca68f81d..00000000 --- a/Challenge/hyunwoome/expDivOdd/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -제곱한 후 3으로 나눈 나머지가 홀수인 것의 총 합을 구하세요. - -## Expected Output - -66 diff --git a/Challenge/hyunwoome/expDivOdd/solve.js b/Challenge/hyunwoome/expDivOdd/solve.js deleted file mode 100644 index 5439f4ae..00000000 --- a/Challenge/hyunwoome/expDivOdd/solve.js +++ /dev/null @@ -1,12 +0,0 @@ -const inputArray = [1, 7, 3, 4, 6]; - -// write your codes - -console.log( - inputArray - .map((el) => el ** 2) - .filter((el) => el % 3 === 1) - .reduce((acc, cur) => { - return acc + cur; - }), -); diff --git a/Challenge/hyunwoome/filterAge/README.md b/Challenge/hyunwoome/filterAge/README.md deleted file mode 100644 index 1c73138e..00000000 --- a/Challenge/hyunwoome/filterAge/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소의 age가 30이상 50미만인 사람만 있는 객체의 배열을 만드세요 - -## Expected Output - -[ { name: '일미', age: 35 }, { name: '이미', age: 45 } ] diff --git a/Challenge/hyunwoome/filterAge/solve.js b/Challenge/hyunwoome/filterAge/solve.js deleted file mode 100644 index 796ba090..00000000 --- a/Challenge/hyunwoome/filterAge/solve.js +++ /dev/null @@ -1,25 +0,0 @@ -const inputArray = [ - { - name: '영미', - age: 25, - }, - { - name: '일미', - age: 35, - }, - { - name: '이미', - age: 45, - }, - { - name: '삼미', - age: 55, - }, -]; -// write your codes - -console.log( - inputArray.filter((el) => { - return el.age >= 30 && el.age < 50; - }), -); diff --git a/Challenge/hyunwoome/filterOdd/README.md b/Challenge/hyunwoome/filterOdd/README.md deleted file mode 100644 index 9bf99a18..00000000 --- a/Challenge/hyunwoome/filterOdd/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -홀수만 뽑아 배열로 만드세요 - -## Expected Output - -[5, 1, 3] diff --git a/Challenge/hyunwoome/filterOdd/solve.js b/Challenge/hyunwoome/filterOdd/solve.js deleted file mode 100644 index c32aea26..00000000 --- a/Challenge/hyunwoome/filterOdd/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -const inputArray = [4, 2, 5, 1, 3]; - -// write your codes - -console.log( - inputArray.filter((el) => { - return el % 2 === 1; - }), -); diff --git a/Challenge/hyunwoome/forEachFilter/README.md b/Challenge/hyunwoome/forEachFilter/README.md deleted file mode 100644 index d826e8e6..00000000 --- a/Challenge/hyunwoome/forEachFilter/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소중 40 이상인 수만 뽑아 배열을 만드세요. - -## Expected Output - -[ 100, 40 ] diff --git a/Challenge/hyunwoome/forEachFilter/solve.js b/Challenge/hyunwoome/forEachFilter/solve.js deleted file mode 100644 index 8b2a1653..00000000 --- a/Challenge/hyunwoome/forEachFilter/solve.js +++ /dev/null @@ -1,13 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes - -console.log( - inputArray.filter((el) => { - return el >= 40; - }), -); - -inputArray.forEach((el) => { - if (el >= 40) return el; -}); diff --git a/Challenge/hyunwoome/forEachFilterIsNaN/README.md b/Challenge/hyunwoome/forEachFilterIsNaN/README.md deleted file mode 100644 index ba71774d..00000000 --- a/Challenge/hyunwoome/forEachFilterIsNaN/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소중 숫자인 원소만 뽑아 배열을 만드세요. - -## Expected Output - -[ 1, 40, 51.5, 88 ] diff --git a/Challenge/hyunwoome/forEachFilterIsNaN/solve.js b/Challenge/hyunwoome/forEachFilterIsNaN/solve.js deleted file mode 100644 index b354d341..00000000 --- a/Challenge/hyunwoome/forEachFilterIsNaN/solve.js +++ /dev/null @@ -1,7 +0,0 @@ -const inputArray = [1, 40, '라매', '개발자', 51.5, 'a', 88]; - -// write your codes - -inputArray.forEach((el) => { - if (!isNaN(el)) console.log(el); -}); diff --git a/Challenge/hyunwoome/forEachMap/README.md b/Challenge/hyunwoome/forEachMap/README.md deleted file mode 100644 index d0e84215..00000000 --- a/Challenge/hyunwoome/forEachMap/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# forEachReduce - -## 설명 - -forEach 메소드를 사용해서 배열의 각 원소 끝에 '%'를 붙인 문자열 배열을 출력하세요 - -## Expected Output - -[ '100%', '10%', '20%', '40%' ] diff --git a/Challenge/hyunwoome/forEachMap/solve.js b/Challenge/hyunwoome/forEachMap/solve.js deleted file mode 100644 index 16b03b75..00000000 --- a/Challenge/hyunwoome/forEachMap/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes - -let tmp = []; -inputArray.forEach((el) => { - tmp.push(`${el}%`); -}); -console.log(tmp); diff --git a/Challenge/hyunwoome/forEachReduce/README.md b/Challenge/hyunwoome/forEachReduce/README.md deleted file mode 100644 index 8f369ed9..00000000 --- a/Challenge/hyunwoome/forEachReduce/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# forEachReduce - -## 설명 - -forEach 메소드를 사용해서 배열의 총 합을 출력하는 코드를 작성하세요 - -## Expected Output - -170 diff --git a/Challenge/hyunwoome/forEachReduce/solve.js b/Challenge/hyunwoome/forEachReduce/solve.js deleted file mode 100644 index adfb8f14..00000000 --- a/Challenge/hyunwoome/forEachReduce/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes - -let sum = 0; -inputArray.forEach((el) => { - sum += el; -}); -console.log(sum); diff --git a/Challenge/hyunwoome/mapAddPercent/README.md b/Challenge/hyunwoome/mapAddPercent/README.md deleted file mode 100644 index 4156a2f9..00000000 --- a/Challenge/hyunwoome/mapAddPercent/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -map 메소드를 사용해 배열 각각 숫자 뒤에 %를 붙인 문자열을 만드세요 - -## Expected Output - -['100%', '10%', '20%', '40%'] diff --git a/Challenge/hyunwoome/mapAddPercent/solve.js b/Challenge/hyunwoome/mapAddPercent/solve.js deleted file mode 100644 index e96f1cbf..00000000 --- a/Challenge/hyunwoome/mapAddPercent/solve.js +++ /dev/null @@ -1,5 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes - -console.log(inputArray.map((el) => `${el}%`)); diff --git a/Challenge/hyunwoome/mapAppendOrder/README.md b/Challenge/hyunwoome/mapAppendOrder/README.md deleted file mode 100644 index fccb0d1a..00000000 --- a/Challenge/hyunwoome/mapAppendOrder/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# 문제제목 - -## 설명 - -배열의 값을 name 프로퍼티에 넣고 몇번째 원소인지를 order에 넣은 객체의 배열을 출력하세요 - -## Expected Output - -[ - { name: '홍길동', order: 1 }, - { name: '둘리', order: 2 }, - { name: '루피', order: 3 } -] diff --git a/Challenge/hyunwoome/mapAppendOrder/solve.js b/Challenge/hyunwoome/mapAppendOrder/solve.js deleted file mode 100644 index aea729dc..00000000 --- a/Challenge/hyunwoome/mapAppendOrder/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -const inputArray = ['홍길동', '둘리', '루피']; - -// write your codes - -console.log( - inputArray.map((el, index) => { - return { name: el, order: index + 1 }; - }), -); diff --git a/Challenge/hyunwoome/reduceSum/README.md b/Challenge/hyunwoome/reduceSum/README.md deleted file mode 100644 index 8c607eb2..00000000 --- a/Challenge/hyunwoome/reduceSum/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -reduce 메소드를 사용해서 배열의 모든 수의 합을 구하세요. - -## Expected Output - -106 diff --git a/Challenge/hyunwoome/reduceSum/solve.js b/Challenge/hyunwoome/reduceSum/solve.js deleted file mode 100644 index 712440a6..00000000 --- a/Challenge/hyunwoome/reduceSum/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -const inputArray = [10, 3, 20, 5, 8, 60]; - -// write your codes - -console.log( - inputArray.reduce((acc, cur) => { - return acc + cur; - }), -); diff --git a/Challenge/hyunwoome/sortByPrice/README.md b/Challenge/hyunwoome/sortByPrice/README.md deleted file mode 100644 index b1ccf70e..00000000 --- a/Challenge/hyunwoome/sortByPrice/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 - -## Expected Output - -[ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 } -] diff --git a/Challenge/hyunwoome/sortByPrice/solve.js b/Challenge/hyunwoome/sortByPrice/solve.js deleted file mode 100644 index 5b265841..00000000 --- a/Challenge/hyunwoome/sortByPrice/solve.js +++ /dev/null @@ -1,26 +0,0 @@ -const inputArray = [ - { - name: '사과', - price: 1000, - }, - { - name: '수박', - price: 5000, - }, - { - name: '당근', - price: 2000, - }, - { - name: '참외', - price: 10000, - }, -]; - -// write your codes - -console.log( - inputArray.sort((a, b) => { - a.price - b.price; - }), -); diff --git a/Challenge/hyunwoome/sortByPriceAndQuantity/README.md b/Challenge/hyunwoome/sortByPriceAndQuantity/README.md deleted file mode 100644 index 41cd5c95..00000000 --- a/Challenge/hyunwoome/sortByPriceAndQuantity/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 -만약 price가 같다면 quantity기준으로 오름차순 정렬하세요 - -## Expected Output - -[ - { name: '사과', price: 1000, quantity: 2 }, - { name: '오이', price: 2000, quantity: 49 }, - { name: '당근', price: 2000, quantity: 50 }, - { name: '참외', price: 5000, quantity: 10 }, - { name: '수박', price: 5000, quantity: 20 } -] diff --git a/Challenge/hyunwoome/sortByPriceAndQuantity/solve.js b/Challenge/hyunwoome/sortByPriceAndQuantity/solve.js deleted file mode 100644 index 28b49b71..00000000 --- a/Challenge/hyunwoome/sortByPriceAndQuantity/solve.js +++ /dev/null @@ -1,35 +0,0 @@ -const inputArray = [ - { - name: '사과', - price: 1000, - quantity: 2, - }, - { - name: '수박', - price: 5000, - quantity: 20, - }, - { - name: '당근', - price: 2000, - quantity: 50, - }, - { - name: '참외', - price: 5000, - quantity: 10, - }, - { - name: '오이', - price: 2000, - quantity: 49, - }, -]; - -// write your codes - -console.log( - inputArray.sort((a, b) => { - return a.price - b.price || a.quantity - b.quantity; - }), -); diff --git a/Challenge/ipadorusa/everyArray/README.md b/Challenge/ipadorusa/everyArray/README.md deleted file mode 100644 index 442558f6..00000000 --- a/Challenge/ipadorusa/everyArray/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -every를 이용해서 모든 원소가 짝수인지 아닌지를 판별하세요 - -## Expected Output - -true \ No newline at end of file diff --git a/Challenge/ipadorusa/everyArray/solve.js b/Challenge/ipadorusa/everyArray/solve.js deleted file mode 100644 index 9fb42568..00000000 --- a/Challenge/ipadorusa/everyArray/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -const inputArray = [2, 4, 6, 8, 10]; - -// write your codes -const result = inputArray.every(n => n % 2 === 0); - -console.log(result); diff --git a/Challenge/ipadorusa/expDivOdd/README.md b/Challenge/ipadorusa/expDivOdd/README.md deleted file mode 100644 index 2d5e0676..00000000 --- a/Challenge/ipadorusa/expDivOdd/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# 문제제목 - -## 설명 - -제곱한 후 3으로 나눈 나머지가 홀수인 것의 총 합을 구하세요. - -## Expected Output diff --git a/Challenge/ipadorusa/expDivOdd/solve.js b/Challenge/ipadorusa/expDivOdd/solve.js deleted file mode 100644 index 19d12f6f..00000000 --- a/Challenge/ipadorusa/expDivOdd/solve.js +++ /dev/null @@ -1,10 +0,0 @@ -const inputArray = [1, 7, 3, 4, 6]; - -// write your codes - -let result = inputArray - .filter(x => { - if (x ** 2 % 3 === 1) return x; - }) - .map(x => x ** 2) - .reduce((acc, cur) => (acc += cur), 0); diff --git a/Challenge/ipadorusa/filterAge/README.md b/Challenge/ipadorusa/filterAge/README.md deleted file mode 100644 index 1c73138e..00000000 --- a/Challenge/ipadorusa/filterAge/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소의 age가 30이상 50미만인 사람만 있는 객체의 배열을 만드세요 - -## Expected Output - -[ { name: '일미', age: 35 }, { name: '이미', age: 45 } ] diff --git a/Challenge/ipadorusa/filterAge/solve.js b/Challenge/ipadorusa/filterAge/solve.js deleted file mode 100644 index 58d14257..00000000 --- a/Challenge/ipadorusa/filterAge/solve.js +++ /dev/null @@ -1,21 +0,0 @@ -const inputArray = [ - { - name: '영미', - age: 25, - }, - { - name: '일미', - age: 35, - }, - { - name: '이미', - age: 45, - }, - { - name: '삼미', - age: 55, - }, -]; -// write your codes - -let result = inputArray.filter(x => x.age > 30 && x.age < 50); diff --git a/Challenge/ipadorusa/filterIntersection/README.md b/Challenge/ipadorusa/filterIntersection/README.md deleted file mode 100644 index d7c9ad39..00000000 --- a/Challenge/ipadorusa/filterIntersection/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# 문제제목 - -## 설명 - -두 배열의 교집합을 출력하세요! diff --git a/Challenge/ipadorusa/filterIntersection/solve.js b/Challenge/ipadorusa/filterIntersection/solve.js deleted file mode 100644 index 44e00e4e..00000000 --- a/Challenge/ipadorusa/filterIntersection/solve.js +++ /dev/null @@ -1,17 +0,0 @@ -function solution(inputArray1, inputArray2) { - let answer = []; - for (let i = 0; i < inputArray1.length; i++) { - for (let j = 0; j < inputArray2.length; j++) { - if (inputArray1[i] === inputArray2[j]) { - answer.push(inputArray1[i]); - } - } - } - return answer; -} -const a = [1, 2, 3, 4, 5]; -const b = [3, 4, 5, 6, 7]; - -solution(a, b); - -exports.solution = solution; diff --git a/Challenge/ipadorusa/filterIntersection/solve.test.js b/Challenge/ipadorusa/filterIntersection/solve.test.js deleted file mode 100644 index 576cbc86..00000000 --- a/Challenge/ipadorusa/filterIntersection/solve.test.js +++ /dev/null @@ -1,15 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: { - A: [1, 2, 3, 4, 5], - B: [3, 4, 5, 6, 7], - }, - answer: [3, 4, 5], -}; - -describe('filterIntersection', () => { - test('test1', () => { - expect(solution(test1.input.A, test1.input.B)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/ipadorusa/filterOdd/README.md b/Challenge/ipadorusa/filterOdd/README.md deleted file mode 100644 index 9bf99a18..00000000 --- a/Challenge/ipadorusa/filterOdd/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -홀수만 뽑아 배열로 만드세요 - -## Expected Output - -[5, 1, 3] diff --git a/Challenge/ipadorusa/filterOdd/solve.js b/Challenge/ipadorusa/filterOdd/solve.js deleted file mode 100644 index ad86f3b8..00000000 --- a/Challenge/ipadorusa/filterOdd/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -const inputArray = [4, 2, 5, 1, 3]; - -// write your codes -let odd = inputArray.filter(val => { - return val % 2 === 1; -}); - -console.log(odd); diff --git a/Challenge/ipadorusa/findWord/README.md b/Challenge/ipadorusa/findWord/README.md deleted file mode 100644 index 8ef123f4..00000000 --- a/Challenge/ipadorusa/findWord/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -용가리라는 단어가 있으면 true 없으면 false를 출력 - -## Expected Output - -true diff --git a/Challenge/ipadorusa/findWord/solve.js b/Challenge/ipadorusa/findWord/solve.js deleted file mode 100644 index f3652dbd..00000000 --- a/Challenge/ipadorusa/findWord/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -// write your codes - -const inputArray = ['고질라', '용가리 ', '울트라맨']; -function solution(inputArray) { - return inputArray.includes('용가리'); -} - -solution(inputArray); -exports.solution = solution; diff --git a/Challenge/ipadorusa/findWord/solve.test.js b/Challenge/ipadorusa/findWord/solve.test.js deleted file mode 100644 index 804114f6..00000000 --- a/Challenge/ipadorusa/findWord/solve.test.js +++ /dev/null @@ -1,26 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: ['잠', '자', '고', '싶', '다', '용가리'], - answer: true, -}; -const test2 = { - input: ['맛있는', '용가리치킨'], - answer: false, -}; -const test3 = { - input: ['고질라', '용가리 ', '울트라맨'], - answer: false, -}; - -describe('findWord', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); \ No newline at end of file diff --git a/Challenge/ipadorusa/forEachFilter/README.md b/Challenge/ipadorusa/forEachFilter/README.md deleted file mode 100644 index 6dcbc7c2..00000000 --- a/Challenge/ipadorusa/forEachFilter/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소중 40 이상인 수만 뽑아 배열을 만드세요. diff --git a/Challenge/ipadorusa/forEachFilter/solve.js b/Challenge/ipadorusa/forEachFilter/solve.js deleted file mode 100644 index 2f4b0234..00000000 --- a/Challenge/ipadorusa/forEachFilter/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.filter(num => num >= 40) -} - -exports.solution = solution; diff --git a/Challenge/ipadorusa/forEachFilter/solve.test.js b/Challenge/ipadorusa/forEachFilter/solve.test.js deleted file mode 100644 index 3d73b25c..00000000 --- a/Challenge/ipadorusa/forEachFilter/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: [100, 40], -}; - -describe('forEachFilter', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/ipadorusa/forEachFilterIsNaN/README.md b/Challenge/ipadorusa/forEachFilterIsNaN/README.md deleted file mode 100644 index 570c030e..00000000 --- a/Challenge/ipadorusa/forEachFilterIsNaN/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소중 숫자인 원소만 뽑아 배열을 만드세요. diff --git a/Challenge/ipadorusa/forEachFilterIsNaN/solve.js b/Challenge/ipadorusa/forEachFilterIsNaN/solve.js deleted file mode 100644 index bf612ef7..00000000 --- a/Challenge/ipadorusa/forEachFilterIsNaN/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.filter(num => !isNaN(num)) -} - -exports.solution = solution; diff --git a/Challenge/ipadorusa/forEachFilterIsNaN/solve.test.js b/Challenge/ipadorusa/forEachFilterIsNaN/solve.test.js deleted file mode 100644 index 360e2de8..00000000 --- a/Challenge/ipadorusa/forEachFilterIsNaN/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 40, '라매', '개발자', 51.5, 'a', 88], - answer: [1, 40, 51.5, 88], -}; - -describe('forEachFilterIsNaN', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/ipadorusa/forEachMap/README.md b/Challenge/ipadorusa/forEachMap/README.md deleted file mode 100644 index 1e8e03c8..00000000 --- a/Challenge/ipadorusa/forEachMap/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -forEach 메소드를 사용해서 배열의 각 원소 끝에 '%'를 붙인 문자열 배열을 출력하세요 diff --git a/Challenge/ipadorusa/forEachMap/solve.js b/Challenge/ipadorusa/forEachMap/solve.js deleted file mode 100644 index fa8380fc..00000000 --- a/Challenge/ipadorusa/forEachMap/solve.js +++ /dev/null @@ -1,10 +0,0 @@ -// write your codes -function solution(inputArray) { - let answer = []; - inputArray.forEach(str => { - answer.push(str + '%'); - }); - return answer; -} - -exports.solution = solution; diff --git a/Challenge/ipadorusa/forEachMap/solve.test.js b/Challenge/ipadorusa/forEachMap/solve.test.js deleted file mode 100644 index de4868c6..00000000 --- a/Challenge/ipadorusa/forEachMap/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: ['100%', '10%', '20%', '40%'], -}; - -describe('forEachMap', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/ipadorusa/forEachReduce/README.md b/Challenge/ipadorusa/forEachReduce/README.md deleted file mode 100644 index a984df2d..00000000 --- a/Challenge/ipadorusa/forEachReduce/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -forEach 메소드를 사용해서 배열의 총 합을 출력하는 코드를 작성하세요 diff --git a/Challenge/ipadorusa/forEachReduce/solve.js b/Challenge/ipadorusa/forEachReduce/solve.js deleted file mode 100644 index 216e7990..00000000 --- a/Challenge/ipadorusa/forEachReduce/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.reduce((acc, cur) => { - return (acc += cur); - }, 0); -} - -exports.solution = solution; diff --git a/Challenge/ipadorusa/forEachReduce/solve.test.js b/Challenge/ipadorusa/forEachReduce/solve.test.js deleted file mode 100644 index 397e4b50..00000000 --- a/Challenge/ipadorusa/forEachReduce/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: 170, -}; - -const test2 = { - input: [120, -20, -30, 0, 15], - answer: 85, -}; - -const test3 = { - input: [-10, -20, -30], - answer: -60, -}; - -describe('forEachReduce', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2: 음수가 포함된 계산', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3: 음수만 존재하는 계산', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/ipadorusa/mapAddPercent/README.md b/Challenge/ipadorusa/mapAddPercent/README.md deleted file mode 100644 index 75e73042..00000000 --- a/Challenge/ipadorusa/mapAddPercent/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -map 메소드를 사용해 배열 각각 숫자 뒤에 %를 붙인 문자열을 만드세요 diff --git a/Challenge/ipadorusa/mapAddPercent/solve.js b/Challenge/ipadorusa/mapAddPercent/solve.js deleted file mode 100644 index 75b39afb..00000000 --- a/Challenge/ipadorusa/mapAddPercent/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.map(str => str + '%'); -} - -exports.solution = solution; diff --git a/Challenge/ipadorusa/mapAddPercent/solve.test.js b/Challenge/ipadorusa/mapAddPercent/solve.test.js deleted file mode 100644 index dac1b3cc..00000000 --- a/Challenge/ipadorusa/mapAddPercent/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: ['100%', '10%', '20%', '40%'], -}; - -describe('mapAddPercent', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/ipadorusa/mapAppendOrder/README.md b/Challenge/ipadorusa/mapAppendOrder/README.md deleted file mode 100644 index 1435623a..00000000 --- a/Challenge/ipadorusa/mapAppendOrder/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열의 값을 name 프로퍼티에 넣고 몇번째 원소인지를 order에 넣은 객체의 배열을 출력하세요 diff --git a/Challenge/ipadorusa/mapAppendOrder/solve.js b/Challenge/ipadorusa/mapAppendOrder/solve.js deleted file mode 100644 index 23db789c..00000000 --- a/Challenge/ipadorusa/mapAppendOrder/solve.js +++ /dev/null @@ -1,11 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.map((val, idx) => { - return { - name: val, - order: idx + 1, - }; - }); -} - -exports.solution = solution; diff --git a/Challenge/ipadorusa/mapAppendOrder/solve.test.js b/Challenge/ipadorusa/mapAppendOrder/solve.test.js deleted file mode 100644 index e08db10c..00000000 --- a/Challenge/ipadorusa/mapAppendOrder/solve.test.js +++ /dev/null @@ -1,16 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: ['홍길동', '둘리', '루피'], - answer: [ - { name: '홍길동', order: 1 }, - { name: '둘리', order: 2 }, - { name: '루피', order: 3 }, - ], -}; - -describe('mapAppendOrder', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/ipadorusa/recommendAd/README.md b/Challenge/ipadorusa/recommendAd/README.md deleted file mode 100644 index 132e8800..00000000 --- a/Challenge/ipadorusa/recommendAd/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# 문제제목 - -사용자가 안 본 광고는? - -## 설명 - -유튜브는 사용자가 프리미엄 회원이 아닌 경우 영상 시작이나 중간에 광고가 나오도록 설정되어 있습니다. - -[2020년 유튜브 인기 광고](https://www.thinkwithgoogle.com/intl/ko-kr/marketing-strategies/video/%EB%8C%80%ED%95%9C%EB%AF%BC%EA%B5%AD-youtube-%EC%9D%B8%EA%B8%B0-%EA%B4%91%EA%B3%A0%EC%98%81%EC%83%81-2020%EB%85%84-%EC%97%B0%EB%A7%90%EA%B2%B0%EC%82%B0/)는 총 열 편으로, 사용자의 일주일간 광고 시청 이력을 통해 해당 사용자가 일주일 동안 안 본 광고를 그 다음주에 노출함으로써 광고들이 사용자에게 골고루 노출되길 원합니다. - -유저가 매일 유튜브에 접속하여 하루 한 편 이상의 광고를 보았다고 가정할 때, 이 유저가 안 본 광고는 무엇인지 출력해주세요. - -## Expected Output - -[ '동원F&B' ] diff --git a/Challenge/ipadorusa/recommendAd/solve.js b/Challenge/ipadorusa/recommendAd/solve.js deleted file mode 100644 index 43cf65d5..00000000 --- a/Challenge/ipadorusa/recommendAd/solve.js +++ /dev/null @@ -1,19 +0,0 @@ -const userHistory = [ - { date: '2020-11-03', watched: ['KT', 'BBQ'] }, - { date: '2020-11-04', watched: ['정관장', 'KT', '딱좋은데이'] }, - { date: '2020-11-05', watched: ['그랑사가', '농심'] }, - { date: '2020-11-06', watched: ['BBQ'] }, - { date: '2020-11-07', watched: ['쌍용자동차', 'BBQ', 'KT'] }, - { date: '2020-11-08', watched: ['켈로그코리아', '빙그레'] }, - { date: '2020-11-09', watched: ['KT', '그랑사가', '빙그레'] }, -]; - -// write your codes -function solution(inputArray) { - const setList = new Set(); - userHistory.map(({ watched }) => watched.map(val => setList.add(val))); - const list = Array.from(setList); - return inputArray.filter(val => !list.includes(val)); -} - -exports.solution = solution; diff --git a/Challenge/ipadorusa/recommendAd/solve.test.js b/Challenge/ipadorusa/recommendAd/solve.test.js deleted file mode 100644 index 8a0f6464..00000000 --- a/Challenge/ipadorusa/recommendAd/solve.test.js +++ /dev/null @@ -1,23 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - '동원F&B', - '정관장', - 'KT', - 'BBQ', - '그랑사가', - '농심', - '딱좋은데이', - '빙그레', - '쌍용자동차', - '켈로그코리아', - ], - answer: ['동원F&B'], -}; - -describe('recommendAd', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/ipadorusa/reduceMaxValueNIndex/README.md b/Challenge/ipadorusa/reduceMaxValueNIndex/README.md deleted file mode 100644 index 965bdec6..00000000 --- a/Challenge/ipadorusa/reduceMaxValueNIndex/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -reduce 메소드를 사용해 최댓값의 값을 maxValue에, 해당 값의 index를 idx에 넣은 객체를 출력하세요 diff --git a/Challenge/ipadorusa/reduceMaxValueNIndex/solve.js b/Challenge/ipadorusa/reduceMaxValueNIndex/solve.js deleted file mode 100644 index 1a888ba6..00000000 --- a/Challenge/ipadorusa/reduceMaxValueNIndex/solve.js +++ /dev/null @@ -1,18 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.reduce( - (acc, cur, index) => { - if (acc.maxValue < cur) { - acc.maxValue = cur; - acc.idx = index; - } - return acc; - }, - { - maxValue: Number.MIN_SAFE_INTEGER, - idx: 0, - } - ); -} - -exports.solution = solution; diff --git a/Challenge/ipadorusa/reduceMaxValueNIndex/solve.test.js b/Challenge/ipadorusa/reduceMaxValueNIndex/solve.test.js deleted file mode 100644 index bbe07133..00000000 --- a/Challenge/ipadorusa/reduceMaxValueNIndex/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [3, 29, 38, 12, 57, 74, 40, 85, 61], - answer: { maxValue: 85, idx: 7 }, -}; - -describe('reduceMaxValueNIndex', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/ipadorusa/reduceNameNickname/README.md b/Challenge/ipadorusa/reduceNameNickname/README.md deleted file mode 100644 index b6920e05..00000000 --- a/Challenge/ipadorusa/reduceNameNickname/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -입력받은 객채배열의 nickname을 key, name을 value로 하는 객체를 출력하세요 diff --git a/Challenge/ipadorusa/reduceNameNickname/solve.js b/Challenge/ipadorusa/reduceNameNickname/solve.js deleted file mode 100644 index 8fe44d1a..00000000 --- a/Challenge/ipadorusa/reduceNameNickname/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.reduce((acc, cur) => { - return { ...acc, [cur.nickname]: cur.name }; - }, {}); -} - -exports.solution = solution; diff --git a/Challenge/ipadorusa/reduceNameNickname/solve.test.js b/Challenge/ipadorusa/reduceNameNickname/solve.test.js deleted file mode 100644 index 67b74529..00000000 --- a/Challenge/ipadorusa/reduceNameNickname/solve.test.js +++ /dev/null @@ -1,25 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '홍길동', - nickname: 'hong', - }, - { - name: '둘리', - nickname: '2li', - }, - { - name: '오스트랄로피테쿠스', - nickname: '1Cin', - }, - ], - answer: { hong: '홍길동', '2li': '둘리', '1Cin': '오스트랄로피테쿠스' }, -}; - -describe('reduceNameNickname', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/ipadorusa/reduceSum/README.md b/Challenge/ipadorusa/reduceSum/README.md deleted file mode 100644 index 8c607eb2..00000000 --- a/Challenge/ipadorusa/reduceSum/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -reduce 메소드를 사용해서 배열의 모든 수의 합을 구하세요. - -## Expected Output - -106 diff --git a/Challenge/ipadorusa/reduceSum/solve.js b/Challenge/ipadorusa/reduceSum/solve.js deleted file mode 100644 index 4a734723..00000000 --- a/Challenge/ipadorusa/reduceSum/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -const inputArray = [10, 3, 20, 5, 8, 60]; - -// write your codes - -let sum = inputArray.reduce((acc, cur) => (acc += cur), 0); -console.log(sum); diff --git a/Challenge/ipadorusa/sortByPrice/README.md b/Challenge/ipadorusa/sortByPrice/README.md deleted file mode 100644 index b1ccf70e..00000000 --- a/Challenge/ipadorusa/sortByPrice/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 - -## Expected Output - -[ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 } -] diff --git a/Challenge/ipadorusa/sortByPrice/solve.js b/Challenge/ipadorusa/sortByPrice/solve.js deleted file mode 100644 index b6b41b28..00000000 --- a/Challenge/ipadorusa/sortByPrice/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.sort((a, b) => a.price - b.price); -} - -exports.solution = solution; diff --git a/Challenge/ipadorusa/sortByPrice/solve.test.js b/Challenge/ipadorusa/sortByPrice/solve.test.js deleted file mode 100644 index 3d6a3431..00000000 --- a/Challenge/ipadorusa/sortByPrice/solve.test.js +++ /dev/null @@ -1,34 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '사과', - price: 1000, - }, - { - name: '수박', - price: 5000, - }, - { - name: '당근', - price: 2000, - }, - { - name: '참외', - price: 10000, - }, - ], - answer: [ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 }, - ], -}; - -describe('sortByPrice', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/ipadorusa/sortByPriceAndQuantity/README.md b/Challenge/ipadorusa/sortByPriceAndQuantity/README.md deleted file mode 100644 index 41cd5c95..00000000 --- a/Challenge/ipadorusa/sortByPriceAndQuantity/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 -만약 price가 같다면 quantity기준으로 오름차순 정렬하세요 - -## Expected Output - -[ - { name: '사과', price: 1000, quantity: 2 }, - { name: '오이', price: 2000, quantity: 49 }, - { name: '당근', price: 2000, quantity: 50 }, - { name: '참외', price: 5000, quantity: 10 }, - { name: '수박', price: 5000, quantity: 20 } -] diff --git a/Challenge/ipadorusa/sortByPriceAndQuantity/solve.js b/Challenge/ipadorusa/sortByPriceAndQuantity/solve.js deleted file mode 100644 index f987b807..00000000 --- a/Challenge/ipadorusa/sortByPriceAndQuantity/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.sort( - (a, b) => a.price - b.price || a.quantity - b.quantity, - ); -} - -exports.solution = solution; diff --git a/Challenge/ipadorusa/sortByPriceAndQuantity/solve.test.js b/Challenge/ipadorusa/sortByPriceAndQuantity/solve.test.js deleted file mode 100644 index 424f42b7..00000000 --- a/Challenge/ipadorusa/sortByPriceAndQuantity/solve.test.js +++ /dev/null @@ -1,44 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '사과', - price: 1000, - quantity: 2, - }, - { - name: '수박', - price: 5000, - quantity: 20, - }, - { - name: '당근', - price: 2000, - quantity: 50, - }, - { - name: '참외', - price: 5000, - quantity: 10, - }, - { - name: '오이', - price: 2000, - quantity: 49, - }, - ], - answer: [ - { name: '사과', price: 1000, quantity: 2 }, - { name: '오이', price: 2000, quantity: 49 }, - { name: '당근', price: 2000, quantity: 50 }, - { name: '참외', price: 5000, quantity: 10 }, - { name: '수박', price: 5000, quantity: 20 }, - ], -}; - -describe('sortByPriceAndQuantity', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/ipadorusa/spreadOperatorMaxValue/README.md b/Challenge/ipadorusa/spreadOperatorMaxValue/README.md deleted file mode 100644 index 164b68a1..00000000 --- a/Challenge/ipadorusa/spreadOperatorMaxValue/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -Spread Operator를 이용해서 값의 최대, 최소값을 구하세요 diff --git a/Challenge/ipadorusa/spreadOperatorMaxValue/solve.js b/Challenge/ipadorusa/spreadOperatorMaxValue/solve.js deleted file mode 100644 index 7d4078a3..00000000 --- a/Challenge/ipadorusa/spreadOperatorMaxValue/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -// write your codes -function solution(inputArray) { - return `max : ${Math.max(...inputArray)}, min : ${Math.min(...inputArray)}`; -} - -exports.solution = solution; - -// 'max : 10, min : 1' diff --git a/Challenge/ipadorusa/spreadOperatorMaxValue/solve.test.js b/Challenge/ipadorusa/spreadOperatorMaxValue/solve.test.js deleted file mode 100644 index 26f2abf9..00000000 --- a/Challenge/ipadorusa/spreadOperatorMaxValue/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], - answer: 'max : 10, min : 1', -}; - -describe('spreadOperatorMaxValue', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/irisdew/everyArray/README.md b/Challenge/irisdew/everyArray/README.md deleted file mode 100644 index 442558f6..00000000 --- a/Challenge/irisdew/everyArray/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -every를 이용해서 모든 원소가 짝수인지 아닌지를 판별하세요 - -## Expected Output - -true \ No newline at end of file diff --git a/Challenge/irisdew/everyArray/solve.js b/Challenge/irisdew/everyArray/solve.js deleted file mode 100644 index 0584f326..00000000 --- a/Challenge/irisdew/everyArray/solve.js +++ /dev/null @@ -1,5 +0,0 @@ -function solution(inputArray) { - return inputArray.every((num) => num % 2 == 0); -} - -exports.solution = solution; diff --git a/Challenge/irisdew/everyArray/solve.test.js b/Challenge/irisdew/everyArray/solve.test.js deleted file mode 100644 index b03e4791..00000000 --- a/Challenge/irisdew/everyArray/solve.test.js +++ /dev/null @@ -1,21 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [2, 4, 6, 8, 10], - answer: true, -}; - -const test2 = { - input: [2, 3, 6, 8, 10], - answer: false, -}; - -describe('everyArray', () => { - test('모두 짝수면 true여야 한다.', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - - test('홀수가 있으면 false여야 한다.', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); -}); diff --git a/Challenge/irisdew/expDivOdd/README.md b/Challenge/irisdew/expDivOdd/README.md deleted file mode 100644 index 729789f6..00000000 --- a/Challenge/irisdew/expDivOdd/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# 문제제목 - -## 설명 - -제곱한 후 3으로 나눈 나머지가 홀수인 것의 총 합을 구하세요. - ---> 제곱한 후 3으로 나눈 나머지가 홀수인 것을 제곱한 것의 총 합을 구하세요. - -## Expected Output - -66 diff --git a/Challenge/irisdew/expDivOdd/solve.js b/Challenge/irisdew/expDivOdd/solve.js deleted file mode 100644 index 3e3c576b..00000000 --- a/Challenge/irisdew/expDivOdd/solve.js +++ /dev/null @@ -1,11 +0,0 @@ -const inputArray = [1, 7, 3, 4, 6]; - -// write your codes -let answer = 0; -inputArray.forEach((x) => { - if (x ** 2 % 3 === 1) { - answer += x; - console.log(x); - } -}); -console.log(answer); diff --git a/Challenge/irisdew/figureSkating/README.md b/Challenge/irisdew/figureSkating/README.md deleted file mode 100644 index 88ec86ed..00000000 --- a/Challenge/irisdew/figureSkating/README.md +++ /dev/null @@ -1,41 +0,0 @@ -# 문제제목 - -## 설명 - -점수를 계산해서 점수가 높은 순으로 name과 score를 가진 객체의 배열을 출력하세요. -단 실격자는 출력하지 않습니다. - -### 피겨 점수 기준 - -피겨 점수는 ‘기술점수(TES)+예술점수(PCS)-감점’으로 구성된다. - -기술점수(TES·Total Element Score)는 기본점수에 수행점수(GOE·Grade Of Execution)를 합산해 도출한다. - -심판은 선수들이 점프와 스핀의 기술을 제대로 수행하는지 살핀다. 점프에선 회전수를 제대로 지켰는지, 에지를 제대로 사용했는지에 따라 ‘롱 에지’(잘못된 에지 사용)나 ‘다운그레이드’(난이도 하락), ‘어텐션’(주의) 등의 판정을 내린다. 스핀과 스텝시퀀스에 붙는 레벨(1~4)도 이들이 결정한다. - -9명의 심판은 선수들이 미리 제출한 연기 구성표를 기준으로 과제별 기본점수에서 가·감점을 한다. 이른바 ‘GOE’라 불리는 수행점수다. - -쇼트프로그램은 점프 3개, 스핀 3개, 스텝 1개의 수행과제가 반드시 포함돼야 한다. - -예술점수(PCS·Total Program Component Score)는 프로그램의 완성도에 영향을 미치는 스케이팅 기술·동작의 연결·연기·안무·곡 해석 등 5가지를 평가한다. - -마지막으로 감점이 반영된다. 감점 항목이 발생할 때마다 1점씩 감점된다. - -원문보기: -http://news.khan.co.kr/kh_news/khan_art_view.html?art_id=201402172146545#csidx6329aebb6a02152bca884614a7f0544 - -### 판정 기준 - -- 점수가 가장 높은 사람이 1등이다. -- 점수는 기술점수(TES) + 예술점수(PCS) - 감점 으로 구성된다. -- 기술점수(TES)는 기본점수 \* 수행점수(GOE)를 합산해 도출한다. -- 필수 수행과제를 수행하지 못했을 시 실격이다. - -### 필수 수행과제 - -- 쇼트프로그램은 점프 3개, 스핀 3개, 스텝 1개의 수행과제가 반드시 포함돼야 한다. -- 점프와 스핀을 4번 이상 수행했을 시 가장 잘한 3개를 기준으로 한다. - -## Expected Output - -[ { name: '김연아', score: 1055 }, { name: '아사다 마오', score: 939 } ] diff --git a/Challenge/irisdew/figureSkating/solve.js b/Challenge/irisdew/figureSkating/solve.js deleted file mode 100644 index 13f47344..00000000 --- a/Challenge/irisdew/figureSkating/solve.js +++ /dev/null @@ -1,88 +0,0 @@ -// 기본 점수 -const baseScore = { - jump: 10, - spin: 20, - step: 15, -}; - -const baseAssignment = { - jump: 3, - spin: 3, - step: 1, -}; - -const inputArray = [ - { - name: "김연아", - goe: { - jump: [10, 9, 10], - spin: [10, 10, 10], - step: [9], - }, - pcs: 30, - penalty: 0, - }, - { - name: "피겨의 신", - goe: { - jump: [10000, 10000], - spin: [10000, 10000, 10000], - step: [10000], - }, - pcs: 100000, - penalty: 0, - }, - { - name: "아사다 마오", - goe: { - jump: [9, 6, 8, 9], - spin: [9, 9, 9], - step: [8], - }, - pcs: 29, - penalty: 10, - }, -]; - -// write your codes - -function Assignment(player, baseAssignment) { - if (player.jump.length >= baseAssignment.jump && player.spin.length >= baseAssignment.spin && player.step.length >= baseAssignment.step) { - return true; - } else { - return false; - } -} - -function Sum(arr) { - return arr.reduce((acc, el) => { - return acc + el; - }, 0); -} - -function Sort(arr, n) { - if (arr.length >= n) { - return arr.sort((a, b) => b - a).slice(0, n); - } - return arr.sort((a, b) => b - a); -} - -function Score(player) { - const jumpTES = baseScore.jump * Sum(Sort(player.goe.jump, baseAssignment.jump)); - const spinTES = baseScore.spin * Sum(Sort(player.goe.spin, baseAssignment.spin)); - const stepTES = baseScore.step * Sum(Sort(player.goe.step, baseAssignment.step)); - return jumpTES + spinTES + stepTES + player.pcs - player.penalty; -} - -const answer = inputArray - .filter((player) => Assignment(player.goe, baseAssignment)) - .map((player) => { - const rObj = {}; - rObj["name"] = player.name; - rObj["score"] = Score(player); - return rObj; - }); - -console.log(answer); - -console.log(Sort([9, 6, 8, 9], 3)); diff --git a/Challenge/irisdew/filterAge/README.md b/Challenge/irisdew/filterAge/README.md deleted file mode 100644 index 1c73138e..00000000 --- a/Challenge/irisdew/filterAge/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소의 age가 30이상 50미만인 사람만 있는 객체의 배열을 만드세요 - -## Expected Output - -[ { name: '일미', age: 35 }, { name: '이미', age: 45 } ] diff --git a/Challenge/irisdew/filterAge/solve.js b/Challenge/irisdew/filterAge/solve.js deleted file mode 100644 index c2685370..00000000 --- a/Challenge/irisdew/filterAge/solve.js +++ /dev/null @@ -1,21 +0,0 @@ -const inputArray = [ - { - name: "영미", - age: 25, - }, - { - name: "일미", - age: 35, - }, - { - name: "이미", - age: 45, - }, - { - name: "삼미", - age: 55, - }, -]; -// write your codes -const answer = inputArray.filter((person) => person.age >= 30 && person.age < 50); -console.log(answer); diff --git a/Challenge/irisdew/filterIntersection/README.md b/Challenge/irisdew/filterIntersection/README.md deleted file mode 100644 index d7c9ad39..00000000 --- a/Challenge/irisdew/filterIntersection/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# 문제제목 - -## 설명 - -두 배열의 교집합을 출력하세요! diff --git a/Challenge/irisdew/filterIntersection/solve.js b/Challenge/irisdew/filterIntersection/solve.js deleted file mode 100644 index bc4b6641..00000000 --- a/Challenge/irisdew/filterIntersection/solve.js +++ /dev/null @@ -1,5 +0,0 @@ -function solution(inputArray1, inputArray2) { - return inputArray1.filter((el) => inputArray2.includes(el)); -} - -exports.solution = solution; diff --git a/Challenge/irisdew/filterIntersection/solve.test.js b/Challenge/irisdew/filterIntersection/solve.test.js deleted file mode 100644 index 576cbc86..00000000 --- a/Challenge/irisdew/filterIntersection/solve.test.js +++ /dev/null @@ -1,15 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: { - A: [1, 2, 3, 4, 5], - B: [3, 4, 5, 6, 7], - }, - answer: [3, 4, 5], -}; - -describe('filterIntersection', () => { - test('test1', () => { - expect(solution(test1.input.A, test1.input.B)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/irisdew/filterOdd/README.md b/Challenge/irisdew/filterOdd/README.md deleted file mode 100644 index 9bf99a18..00000000 --- a/Challenge/irisdew/filterOdd/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -홀수만 뽑아 배열로 만드세요 - -## Expected Output - -[5, 1, 3] diff --git a/Challenge/irisdew/filterOdd/solve.js b/Challenge/irisdew/filterOdd/solve.js deleted file mode 100644 index 9f8b3dc2..00000000 --- a/Challenge/irisdew/filterOdd/solve.js +++ /dev/null @@ -1,7 +0,0 @@ -const inputArray = [4, 2, 5, 1, 3]; - -// write your codes - -const answer = inputArray.filter((num) => num % 2 === 1); - -console.log(answer); diff --git a/Challenge/irisdew/forEachFilter/README.md b/Challenge/irisdew/forEachFilter/README.md deleted file mode 100644 index d826e8e6..00000000 --- a/Challenge/irisdew/forEachFilter/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소중 40 이상인 수만 뽑아 배열을 만드세요. - -## Expected Output - -[ 100, 40 ] diff --git a/Challenge/irisdew/forEachFilter/solve.js b/Challenge/irisdew/forEachFilter/solve.js deleted file mode 100644 index 9e78decd..00000000 --- a/Challenge/irisdew/forEachFilter/solve.js +++ /dev/null @@ -1,18 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes - -// filter -const a = inputArray.filter((num) => num >= 40); - -console.log(a); - -// forEach -const b = []; -inputArray.forEach((num) => { - if (num >= 40) { - b.push(num); - } -}); - -console.log(b); diff --git a/Challenge/irisdew/forEachFilterIsNaN/README.md b/Challenge/irisdew/forEachFilterIsNaN/README.md deleted file mode 100644 index ba71774d..00000000 --- a/Challenge/irisdew/forEachFilterIsNaN/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소중 숫자인 원소만 뽑아 배열을 만드세요. - -## Expected Output - -[ 1, 40, 51.5, 88 ] diff --git a/Challenge/irisdew/forEachFilterIsNaN/solve.js b/Challenge/irisdew/forEachFilterIsNaN/solve.js deleted file mode 100644 index f0233928..00000000 --- a/Challenge/irisdew/forEachFilterIsNaN/solve.js +++ /dev/null @@ -1,28 +0,0 @@ -const inputArray = [1, 40, "라매", "개발자", 51.5, "a", 88]; - -// write your codes - -// first solve -const answer = []; -inputArray.forEach((el) => { - if (typeof el === "number") { - answer.push(el); - } -}); -console.log(answer); - -// second solve -console.log(isNaN(null)); // NaN (Not-A-Number) 숫자가 아님 -console.log(NaN === NaN); // NaN은 다른 NaN과도 같지 않음 - -const b = []; -inputArray.forEach((el) => { - if (isNaN(el) === false) { - b.push(el); - } -}); -console.log(b); - -// filter -const c = inputArray.filter((el) => !isNaN(el)); -console.log(c); diff --git a/Challenge/irisdew/forEachMap/README.md b/Challenge/irisdew/forEachMap/README.md deleted file mode 100644 index d0e84215..00000000 --- a/Challenge/irisdew/forEachMap/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# forEachReduce - -## 설명 - -forEach 메소드를 사용해서 배열의 각 원소 끝에 '%'를 붙인 문자열 배열을 출력하세요 - -## Expected Output - -[ '100%', '10%', '20%', '40%' ] diff --git a/Challenge/irisdew/forEachMap/solve.js b/Challenge/irisdew/forEachMap/solve.js deleted file mode 100644 index cf81d9c9..00000000 --- a/Challenge/irisdew/forEachMap/solve.js +++ /dev/null @@ -1,17 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes - -// forEach -const a = []; - -inputArray.forEach((num) => { - a.push(`${num}%`); -}); - -console.log(a); - -// map -const b = inputArray.map((num) => `${num}%`); - -console.log(b); diff --git a/Challenge/irisdew/forEachReduce/README.md b/Challenge/irisdew/forEachReduce/README.md deleted file mode 100644 index 8f369ed9..00000000 --- a/Challenge/irisdew/forEachReduce/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# forEachReduce - -## 설명 - -forEach 메소드를 사용해서 배열의 총 합을 출력하는 코드를 작성하세요 - -## Expected Output - -170 diff --git a/Challenge/irisdew/forEachReduce/solve.js b/Challenge/irisdew/forEachReduce/solve.js deleted file mode 100644 index f4c874ed..00000000 --- a/Challenge/irisdew/forEachReduce/solve.js +++ /dev/null @@ -1,14 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes - -// forEach -let a = 0; -inputArray.forEach((num) => (a = a + num)); -console.log(a); - -// reduce -const b = inputArray.reduce((sum, num) => { - return sum + num; -}, 0); -console.log(b); diff --git a/Challenge/irisdew/mapAddPercent/README.md b/Challenge/irisdew/mapAddPercent/README.md deleted file mode 100644 index 4156a2f9..00000000 --- a/Challenge/irisdew/mapAddPercent/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -map 메소드를 사용해 배열 각각 숫자 뒤에 %를 붙인 문자열을 만드세요 - -## Expected Output - -['100%', '10%', '20%', '40%'] diff --git a/Challenge/irisdew/mapAddPercent/solve.js b/Challenge/irisdew/mapAddPercent/solve.js deleted file mode 100644 index aaf98511..00000000 --- a/Challenge/irisdew/mapAddPercent/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes - -const answer = inputArray.map((el) => el + "%"); -console.log(answer); diff --git a/Challenge/irisdew/mapAppendOrder/README.md b/Challenge/irisdew/mapAppendOrder/README.md deleted file mode 100644 index fccb0d1a..00000000 --- a/Challenge/irisdew/mapAppendOrder/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# 문제제목 - -## 설명 - -배열의 값을 name 프로퍼티에 넣고 몇번째 원소인지를 order에 넣은 객체의 배열을 출력하세요 - -## Expected Output - -[ - { name: '홍길동', order: 1 }, - { name: '둘리', order: 2 }, - { name: '루피', order: 3 } -] diff --git a/Challenge/irisdew/mapAppendOrder/solve.js b/Challenge/irisdew/mapAppendOrder/solve.js deleted file mode 100644 index d1001f1a..00000000 --- a/Challenge/irisdew/mapAppendOrder/solve.js +++ /dev/null @@ -1,14 +0,0 @@ -const inputArray = []; - -// write your codes - -const names = ["홍길동", "둘리", "루피"]; - -let count = 1; -const answer = names.map((name, index) => { - return { name, order: index + 1 }; -}); -console.log(answer); - -// arr.map(callback(currentValue[, index[, array]])[, thisArg]) -// map의 callback함수가 세가지 인자를 가진다는 것을 알게되었다! currentValue(처리할 현재 요소), index, array(배열 전체) diff --git a/Challenge/irisdew/reduceNameNickname/README.md b/Challenge/irisdew/reduceNameNickname/README.md deleted file mode 100644 index aeaf5b31..00000000 --- a/Challenge/irisdew/reduceNameNickname/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -입력받은 객채배열의 nickname을 key, name을 value로 하는 객체를 출력하세요 - -## Expected Output - -{ hong: '홍길동', '2li': '둘리', '1Cin': '오스트랄로피테쿠스' } diff --git a/Challenge/irisdew/reduceNameNickname/solve.js b/Challenge/irisdew/reduceNameNickname/solve.js deleted file mode 100644 index 0874c54c..00000000 --- a/Challenge/irisdew/reduceNameNickname/solve.js +++ /dev/null @@ -1,20 +0,0 @@ -const inputArray = [ - { - name: "홍길동", - nickname: "hong", - }, - { - name: "둘리", - nickname: "2li", - }, - { - name: "오스트랄로피테쿠스", - nickname: "1Cin", - }, -]; - -// write your codes -const answer = inputArray.reduce((accumulator, currentValue) => { - return { ...accumulator, [currentValue.nickname]: currentValue.name }; -}, {}); -console.log(answer); diff --git a/Challenge/irisdew/reduceSum/README.md b/Challenge/irisdew/reduceSum/README.md deleted file mode 100644 index 8c607eb2..00000000 --- a/Challenge/irisdew/reduceSum/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -reduce 메소드를 사용해서 배열의 모든 수의 합을 구하세요. - -## Expected Output - -106 diff --git a/Challenge/irisdew/reduceSum/solve.js b/Challenge/irisdew/reduceSum/solve.js deleted file mode 100644 index 73f8b1f8..00000000 --- a/Challenge/irisdew/reduceSum/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -const inputArray = [10, 3, 20, 5, 8, 60]; - -// write your codes -const answer = inputArray.reduce((sum, num) => { - return sum + num; -}, 0); -console.log(answer); -// 초기값이 없을 때 빈배열일 경우 TypeError 발생 -// 초기값을 설정해야 배열의 모든 항목이 리듀서를 거친다 diff --git a/Challenge/irisdew/sortByPrice/README.md b/Challenge/irisdew/sortByPrice/README.md deleted file mode 100644 index b1ccf70e..00000000 --- a/Challenge/irisdew/sortByPrice/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 - -## Expected Output - -[ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 } -] diff --git a/Challenge/irisdew/sortByPrice/solve.js b/Challenge/irisdew/sortByPrice/solve.js deleted file mode 100644 index d45efac0..00000000 --- a/Challenge/irisdew/sortByPrice/solve.js +++ /dev/null @@ -1,22 +0,0 @@ -const inputArray = [ - { - name: "사과", - price: 1000, - }, - { - name: "수박", - price: 5000, - }, - { - name: "당근", - price: 2000, - }, - { - name: "참외", - price: 10000, - }, -]; - -// write your codes -const answer = inputArray.sort((a, b) => a.price - b.price); -console.log(answer); diff --git a/Challenge/irisdew/sortByPriceAndQuantity/README.md b/Challenge/irisdew/sortByPriceAndQuantity/README.md deleted file mode 100644 index 41cd5c95..00000000 --- a/Challenge/irisdew/sortByPriceAndQuantity/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 -만약 price가 같다면 quantity기준으로 오름차순 정렬하세요 - -## Expected Output - -[ - { name: '사과', price: 1000, quantity: 2 }, - { name: '오이', price: 2000, quantity: 49 }, - { name: '당근', price: 2000, quantity: 50 }, - { name: '참외', price: 5000, quantity: 10 }, - { name: '수박', price: 5000, quantity: 20 } -] diff --git a/Challenge/irisdew/sortByPriceAndQuantity/solve.js b/Challenge/irisdew/sortByPriceAndQuantity/solve.js deleted file mode 100644 index 5a4cc121..00000000 --- a/Challenge/irisdew/sortByPriceAndQuantity/solve.js +++ /dev/null @@ -1,46 +0,0 @@ -const inputArray = [ - { - name: "사과", - price: 1000, - quantity: 2, - }, - { - name: "수박", - price: 5000, - quantity: 20, - }, - { - name: "당근", - price: 2000, - quantity: 50, - }, - { - name: "참외", - price: 5000, - quantity: 10, - }, - { - name: "오이", - price: 2000, - quantity: 49, - }, -]; - -// write your codes - -// my answer -const answer = inputArray.sort((a, b) => { - if (a.price === b.price) { - return a.quantity - b.quantity; - } - return a.price - b.price; -}); - -console.log(answer); - -// answer -const result = inputArray.sort((a, b) => { - return a.price - b.price || a.quantity - b.quantity; -}); - -console.log(result); diff --git a/Challenge/jackma914/expDivOdd/README.md b/Challenge/jackma914/expDivOdd/README.md deleted file mode 100644 index 2d5e0676..00000000 --- a/Challenge/jackma914/expDivOdd/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# 문제제목 - -## 설명 - -제곱한 후 3으로 나눈 나머지가 홀수인 것의 총 합을 구하세요. - -## Expected Output diff --git a/Challenge/jackma914/expDivOdd/solve.js b/Challenge/jackma914/expDivOdd/solve.js deleted file mode 100644 index 752894df..00000000 --- a/Challenge/jackma914/expDivOdd/solve.js +++ /dev/null @@ -1,10 +0,0 @@ -const inputArray = [1, 7, 3, 4, 6]; - -// write your codes -// 제곱한 후 3으로 나눈 나머지가 홀수인 것의 총 합을 구하세요. - -const result = inputArray - .map((el) => el * el) - .filter((el) => el % 3 === 1) - .reduce((acc, el) => acc + el, 0); -console.log(result); diff --git a/Challenge/jackma914/filterAge/README.md b/Challenge/jackma914/filterAge/README.md deleted file mode 100644 index 1c73138e..00000000 --- a/Challenge/jackma914/filterAge/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소의 age가 30이상 50미만인 사람만 있는 객체의 배열을 만드세요 - -## Expected Output - -[ { name: '일미', age: 35 }, { name: '이미', age: 45 } ] diff --git a/Challenge/jackma914/filterAge/solve.js b/Challenge/jackma914/filterAge/solve.js deleted file mode 100644 index cef311ed..00000000 --- a/Challenge/jackma914/filterAge/solve.js +++ /dev/null @@ -1,22 +0,0 @@ -const inputArray = [ - { - name: "영미", - age: 25, - }, - { - name: "일미", - age: 35, - }, - { - name: "이미", - age: 45, - }, - { - name: "삼미", - age: 55, - }, -]; -// write your codes - -const result = inputArray.filter((el) => el.age >= 30 && el.age < 50); -console.log(result); diff --git a/Challenge/jackma914/filterOdd/README.md b/Challenge/jackma914/filterOdd/README.md deleted file mode 100644 index 9bf99a18..00000000 --- a/Challenge/jackma914/filterOdd/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -홀수만 뽑아 배열로 만드세요 - -## Expected Output - -[5, 1, 3] diff --git a/Challenge/jackma914/filterOdd/solve.js b/Challenge/jackma914/filterOdd/solve.js deleted file mode 100644 index 73d3a94f..00000000 --- a/Challenge/jackma914/filterOdd/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -const inputArray = [4, 2, 5, 1, 3]; - -// write your codes - -const result = inputArray.filter((el) => el % 2 === 1); -console.log(result); diff --git a/Challenge/jackma914/findWord/README.md b/Challenge/jackma914/findWord/README.md deleted file mode 100644 index 2ab8fcb2..00000000 --- a/Challenge/jackma914/findWord/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -용가리라는 단어가 있으면 true 없으면 false를 출력 - -## Expected Output - -true diff --git a/Challenge/jackma914/findWord/solve.js b/Challenge/jackma914/findWord/solve.js deleted file mode 100644 index 8b6dc076..00000000 --- a/Challenge/jackma914/findWord/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -const inputArray = ["잠", "자", "고", "싶", "다", "용가리"]; - -// write your codes - -const result = inputArray.includes("용가리"); -console.log(result); diff --git a/Challenge/jackma914/forEachFilter/README.md b/Challenge/jackma914/forEachFilter/README.md deleted file mode 100644 index d826e8e6..00000000 --- a/Challenge/jackma914/forEachFilter/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소중 40 이상인 수만 뽑아 배열을 만드세요. - -## Expected Output - -[ 100, 40 ] diff --git a/Challenge/jackma914/forEachFilter/solve.js b/Challenge/jackma914/forEachFilter/solve.js deleted file mode 100644 index 1f568488..00000000 --- a/Challenge/jackma914/forEachFilter/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes - -const result = inputArray.filter((el) => el >= 40); -console.log(result); diff --git a/Challenge/jackma914/forEachFilterIsNaN/README.md b/Challenge/jackma914/forEachFilterIsNaN/README.md deleted file mode 100644 index ba71774d..00000000 --- a/Challenge/jackma914/forEachFilterIsNaN/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소중 숫자인 원소만 뽑아 배열을 만드세요. - -## Expected Output - -[ 1, 40, 51.5, 88 ] diff --git a/Challenge/jackma914/forEachFilterIsNaN/solve.js b/Challenge/jackma914/forEachFilterIsNaN/solve.js deleted file mode 100644 index 9d6e0499..00000000 --- a/Challenge/jackma914/forEachFilterIsNaN/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -const inputArray = [1, 40, "라매", "개발자", 51.5, "a", 88]; - -// write your codes - -const result = inputArray.filter((el) => isNaN(el) == false); -console.log(result); diff --git a/Challenge/jackma914/forEachMap/README.md b/Challenge/jackma914/forEachMap/README.md deleted file mode 100644 index d0e84215..00000000 --- a/Challenge/jackma914/forEachMap/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# forEachReduce - -## 설명 - -forEach 메소드를 사용해서 배열의 각 원소 끝에 '%'를 붙인 문자열 배열을 출력하세요 - -## Expected Output - -[ '100%', '10%', '20%', '40%' ] diff --git a/Challenge/jackma914/forEachMap/solve.js b/Challenge/jackma914/forEachMap/solve.js deleted file mode 100644 index f15fffbc..00000000 --- a/Challenge/jackma914/forEachMap/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes - -let answer = []; -let result = inputArray.forEach((el) => { - answer.push(el + "%"); -}); -console.log(answer); diff --git a/Challenge/jackma914/forEachReduce/README.md b/Challenge/jackma914/forEachReduce/README.md deleted file mode 100644 index 076ee1b6..00000000 --- a/Challenge/jackma914/forEachReduce/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# forEachReduce - -## 설명 - -forEach 메소드를 사용해서 배열의 총 합을 출력하는 코드를 작성하세요 - -## Expected Output - -170 diff --git a/Challenge/jackma914/forEachReduce/solve.js b/Challenge/jackma914/forEachReduce/solve.js deleted file mode 100644 index e0ede80e..00000000 --- a/Challenge/jackma914/forEachReduce/solve.js +++ /dev/null @@ -1,13 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes - -// const result = inputArray.reduce((acc, value) => acc + value, 0); -// console.log(result); - -let sum = 0; -inputArray.forEach((el) => { - sum = sum + el; -}); - -console.log(sum); diff --git a/Challenge/jackma914/mapAddPercent/README.md b/Challenge/jackma914/mapAddPercent/README.md deleted file mode 100644 index 692cc20b..00000000 --- a/Challenge/jackma914/mapAddPercent/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -map 메소드를 사용해 배열 각각 숫자 뒤에 %를 붙인 문자열을 만드세요 - -## Expected Output - -['100%', '10%', '20%', '40%'] diff --git a/Challenge/jackma914/mapAddPercent/solve.js b/Challenge/jackma914/mapAddPercent/solve.js deleted file mode 100644 index 08c82add..00000000 --- a/Challenge/jackma914/mapAddPercent/solve.js +++ /dev/null @@ -1,7 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes - -// map 메소드를 사용해 배열 각각 숫자 뒤에 %를 붙인 문자열을 만드세요 -const result = inputArray.map((el) => el + "%"); -console.log(result); diff --git a/Challenge/jackma914/mapAppendOrder/README.md b/Challenge/jackma914/mapAppendOrder/README.md deleted file mode 100644 index fccb0d1a..00000000 --- a/Challenge/jackma914/mapAppendOrder/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# 문제제목 - -## 설명 - -배열의 값을 name 프로퍼티에 넣고 몇번째 원소인지를 order에 넣은 객체의 배열을 출력하세요 - -## Expected Output - -[ - { name: '홍길동', order: 1 }, - { name: '둘리', order: 2 }, - { name: '루피', order: 3 } -] diff --git a/Challenge/jackma914/mapAppendOrder/solve.js b/Challenge/jackma914/mapAppendOrder/solve.js deleted file mode 100644 index 0a7eafb5..00000000 --- a/Challenge/jackma914/mapAppendOrder/solve.js +++ /dev/null @@ -1,12 +0,0 @@ -const inputArray = ["홍길동", "둘리", "루피"]; - -// write your codes - -const answer = inputArray.map((el, idx, str) => { - return { - name: el, - order: idx + 1, - }; -}); - -console.log(answer); diff --git a/Challenge/jaharim/everyArray/README.md b/Challenge/jaharim/everyArray/README.md deleted file mode 100644 index e69de29b..00000000 diff --git a/Challenge/jaharim/everyArray/solve.js b/Challenge/jaharim/everyArray/solve.js deleted file mode 100644 index a648e2e5..00000000 --- a/Challenge/jaharim/everyArray/solve.js +++ /dev/null @@ -1,7 +0,0 @@ -const inputArray = [2, 4, 6, 8, 10]; - -// write your codes - -const result = inputArray.every((el) => el % 2 == 0); - -console.log(result); diff --git a/Challenge/jaharim/expDivOdd/README.md b/Challenge/jaharim/expDivOdd/README.md deleted file mode 100644 index 0eb76aea..00000000 --- a/Challenge/jaharim/expDivOdd/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -제곱한 후 3으로 나눈 나머지가 홀수인 것의 총 합을 구하세요. - -## Expected Output - -12 diff --git a/Challenge/jaharim/expDivOdd/solve.js b/Challenge/jaharim/expDivOdd/solve.js deleted file mode 100644 index 31a76646..00000000 --- a/Challenge/jaharim/expDivOdd/solve.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict' - -const inputArray = [ 1, 7, 3, 4, 6 ]; - -// write your codes - -// 제곱한 후 3으로 나눈 나머지가 홀수인 것의 총 합을 구하세요. - -const result = inputArray -.filter((inputElement)=>(((inputElement**2)%3%2) === 1)) -.reduce((prev,curr)=>prev + curr,0); - -console.log(result); diff --git a/Challenge/jaharim/figureSkating/README.md b/Challenge/jaharim/figureSkating/README.md deleted file mode 100644 index 648eeaa4..00000000 --- a/Challenge/jaharim/figureSkating/README.md +++ /dev/null @@ -1,41 +0,0 @@ -# 문제제목 - -## 설명 - -점수를 계산해서 점수가 높은 순으로 name과 score를 가진 객체의 배열을 출력하세요. -단 실격자는 출력하지 않습니다. - -### 피겨 점수 기준 - -피겨 점수는 ‘기술점수(TES)+예술점수(PCS)-감점’으로 구성된다. - -기술점수(TES·Total Element Score)는 기본점수에 수행점수(GOE·Grade Of Execution)를 합산해 도출한다. - -심판은 선수들이 점프와 스핀의 기술을 제대로 수행하는지 살핀다. 점프에선 회전수를 제대로 지켰는지, 에지를 제대로 사용했는지에 따라 ‘롱 에지’(잘못된 에지 사용)나 ‘다운그레이드’(난이도 하락), ‘어텐션’(주의) 등의 판정을 내린다. 스핀과 스텝시퀀스에 붙는 레벨(1~4)도 이들이 결정한다. - -9명의 심판은 선수들이 미리 제출한 연기 구성표를 기준으로 과제별 기본점수에서 가·감점을 한다. 이른바 ‘GOE’라 불리는 수행점수다. - -쇼트프로그램은 점프 3개, 스핀 3개, 스텝 1개의 수행과제가 반드시 포함돼야 한다. - -예술점수(PCS·Total Program Component Score)는 프로그램의 완성도에 영향을 미치는 스케이팅 기술·동작의 연결·연기·안무·곡 해석 등 5가지를 평가한다. - -마지막으로 감점이 반영된다. 감점 항목이 발생할 때마다 1점씩 감점된다. - -원문보기: -http://news.khan.co.kr/kh_news/khan_art_view.html?art_id=201402172146545#csidx6329aebb6a02152bca884614a7f0544 - -### 판정 기준 - -* 점수가 가장 높은 사람이 1등이다. -* 점수는 기술점수(TES) + 예술점수(PCS) - 감점 으로 구성된다. -* 기술점수(TES)는 기본점수 * 수행점수(GOE)를 합산해 도출한다. -* 필수 수행과제를 수행하지 못했을 시 실격이다. - -### 필수 수행과제 - -* 쇼트프로그램은 점프 3개, 스핀 3개, 스텝 1개의 수행과제가 반드시 포함돼야 한다. -* 점프와 스핀을 4번 이상 수행했을 시 가장 잘한 3개를 기준으로 한다. - -## Expected Output - -[ { name: '김연아', score: 1055 }, { name: '아사다 마오', score: 939 } ] diff --git a/Challenge/jaharim/figureSkating/solve.js b/Challenge/jaharim/figureSkating/solve.js deleted file mode 100644 index ee6a5b7a..00000000 --- a/Challenge/jaharim/figureSkating/solve.js +++ /dev/null @@ -1,69 +0,0 @@ -// 기본 점수 -const baseScore = { - jump: 10, - spin: 20, - step: 15, -} - -const baseAssignment = { - jump: 3, - spin: 3, - step: 1, -} - -const inputArray = [ - { - name: '김연아', - goe: { - jump: [10, 9, 10], - spin: [10, 10, 10], - step: [9], - }, - pcs: 30, - penalty: 0, - }, - { - name: '피겨의 신', - goe: { - jump: [10000, 10000], - spin: [10000, 10000, 10000], - step: [10000] - }, - pcs: 100000, - penalty: 0, - }, - { - name: '아사다 마오', - goe: { - jump: [9, 6, 8, 9], - spin: [9, 9, 9], - step: [8], - }, - pcs: 29, - penalty: 10, - }, -] - -// write your codes -let arr=[]; - -const filterFailer = inputArray.filter((player) => player.goe.jump.length >= 3 && player.goe.spin.length >= 3 && player.goe.step.length >= 1); - -filterFailer.forEach((el)=> { - el.goe.jump.sort((a,b)=>b-a).splice(baseAssignment.jump); - el.goe.spin.sort((a,b)=>b-a).splice(baseAssignment.spin); - } -); - -arr = filterFailer.map((curr) => { - return { - [`name`] : curr.name, - [`score`] : (curr.goe.jump.reduce((prev2,curr2) => prev2+curr2,0) * baseScore.jump) + - (curr.goe.spin.reduce((prev3,curr3) => prev3+curr3,0) * baseScore.spin) + - (curr.goe.step[0] * baseScore.step) + - curr.pcs - curr.penalty, - } - } -); - -console.log(arr); diff --git a/Challenge/jaharim/filterAge/README.md b/Challenge/jaharim/filterAge/README.md deleted file mode 100644 index 1c73138e..00000000 --- a/Challenge/jaharim/filterAge/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소의 age가 30이상 50미만인 사람만 있는 객체의 배열을 만드세요 - -## Expected Output - -[ { name: '일미', age: 35 }, { name: '이미', age: 45 } ] diff --git a/Challenge/jaharim/filterAge/solve.js b/Challenge/jaharim/filterAge/solve.js deleted file mode 100644 index 651b7d1a..00000000 --- a/Challenge/jaharim/filterAge/solve.js +++ /dev/null @@ -1,22 +0,0 @@ -const inputArray = [ - { - name: '영미', - age: 25, - }, - { - name: '일미', - age: 35, - }, - { - name: '이미', - age: 45, - }, - { - name: '삼미', - age: 55, - }, -] - -// write your codes -const result = inputArray.filter((inputElement)=> inputElement.age >= 30 && inputElement.age < 50); -console.log(result); diff --git a/Challenge/jaharim/filterIntersection/README.md b/Challenge/jaharim/filterIntersection/README.md deleted file mode 100644 index 56c8d04a..00000000 --- a/Challenge/jaharim/filterIntersection/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -두 배열의 교집합을 출력하세요! - -## Expected Output - -[3, 4, 5] \ No newline at end of file diff --git a/Challenge/jaharim/filterIntersection/solve.js b/Challenge/jaharim/filterIntersection/solve.js deleted file mode 100644 index b26a3259..00000000 --- a/Challenge/jaharim/filterIntersection/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -const A = [1, 2, 3, 4, 5]; -const B = [3, 4, 5, 6, 7]; -// write your codes - -const result = A.filter((arrayElement) => (B.indexOf(arrayElement) !== -1)); -console.log(result); \ No newline at end of file diff --git a/Challenge/jaharim/filterOdd/README.md b/Challenge/jaharim/filterOdd/README.md deleted file mode 100644 index 9bf99a18..00000000 --- a/Challenge/jaharim/filterOdd/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -홀수만 뽑아 배열로 만드세요 - -## Expected Output - -[5, 1, 3] diff --git a/Challenge/jaharim/filterOdd/solve.js b/Challenge/jaharim/filterOdd/solve.js deleted file mode 100644 index 0a618ac8..00000000 --- a/Challenge/jaharim/filterOdd/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -'use strict' - -const inputArray = [4, 2, 5, 1, 3]; - -// write your codes - -const result = inputArray.filter((InputElement)=> InputElement % 2 === 1); -console.log(result); diff --git a/Challenge/jaharim/findWord/README.md b/Challenge/jaharim/findWord/README.md deleted file mode 100644 index 8ef123f4..00000000 --- a/Challenge/jaharim/findWord/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -용가리라는 단어가 있으면 true 없으면 false를 출력 - -## Expected Output - -true diff --git a/Challenge/jaharim/findWord/solve.js b/Challenge/jaharim/findWord/solve.js deleted file mode 100644 index be309caa..00000000 --- a/Challenge/jaharim/findWord/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -const inputArray = ['잠', '자', '고', '싶', '다', '용가리']; - -// write your codes - -const result = inputArray.some((inputElement) => inputElement === "용가리"); -console.log(result); \ No newline at end of file diff --git a/Challenge/jaharim/forEachFilter/README.md b/Challenge/jaharim/forEachFilter/README.md deleted file mode 100644 index d826e8e6..00000000 --- a/Challenge/jaharim/forEachFilter/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소중 40 이상인 수만 뽑아 배열을 만드세요. - -## Expected Output - -[ 100, 40 ] diff --git a/Challenge/jaharim/forEachFilter/solve.js b/Challenge/jaharim/forEachFilter/solve.js deleted file mode 100644 index 8292afd6..00000000 --- a/Challenge/jaharim/forEachFilter/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes - -const result = inputArray.filter((inputElement) => inputElement >= 40 ); -console.log(result); diff --git a/Challenge/jaharim/forEachFilterIsNaN/README.md b/Challenge/jaharim/forEachFilterIsNaN/README.md deleted file mode 100644 index ba71774d..00000000 --- a/Challenge/jaharim/forEachFilterIsNaN/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소중 숫자인 원소만 뽑아 배열을 만드세요. - -## Expected Output - -[ 1, 40, 51.5, 88 ] diff --git a/Challenge/jaharim/forEachFilterIsNaN/solve.js b/Challenge/jaharim/forEachFilterIsNaN/solve.js deleted file mode 100644 index 22fccfc4..00000000 --- a/Challenge/jaharim/forEachFilterIsNaN/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -const inputArray = [ 1, 40, "라매", "개발자", 51.5, 'a', 88 ]; - -// write your codes - -const result = inputArray.filter((remainElement) => remainElement / 1); -console.log(result); diff --git a/Challenge/jaharim/forEachMap/README.md b/Challenge/jaharim/forEachMap/README.md deleted file mode 100644 index d0e84215..00000000 --- a/Challenge/jaharim/forEachMap/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# forEachReduce - -## 설명 - -forEach 메소드를 사용해서 배열의 각 원소 끝에 '%'를 붙인 문자열 배열을 출력하세요 - -## Expected Output - -[ '100%', '10%', '20%', '40%' ] diff --git a/Challenge/jaharim/forEachMap/solve.js b/Challenge/jaharim/forEachMap/solve.js deleted file mode 100644 index 99335732..00000000 --- a/Challenge/jaharim/forEachMap/solve.js +++ /dev/null @@ -1,12 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes - -// In case of using 'map' method -//const result = inputArray.map((inputElement) => `${inputElement}%`); - -let newArray = []; -const result = inputArray.forEach((inputElement)=> -newArray.push(`${inputElement}%`) -); -console.log(newArray); diff --git a/Challenge/jaharim/forEachReduce/README.md b/Challenge/jaharim/forEachReduce/README.md deleted file mode 100644 index 8f369ed9..00000000 --- a/Challenge/jaharim/forEachReduce/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# forEachReduce - -## 설명 - -forEach 메소드를 사용해서 배열의 총 합을 출력하는 코드를 작성하세요 - -## Expected Output - -170 diff --git a/Challenge/jaharim/forEachReduce/solve.js b/Challenge/jaharim/forEachReduce/solve.js deleted file mode 100644 index 12d18c4d..00000000 --- a/Challenge/jaharim/forEachReduce/solve.js +++ /dev/null @@ -1,7 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes - -let acc = 0; -const result = inputArray.forEach((inputElement) => acc += inputElement ); -console.log(acc); diff --git a/Challenge/jaharim/mapAddPercent/README.md b/Challenge/jaharim/mapAddPercent/README.md deleted file mode 100644 index 4156a2f9..00000000 --- a/Challenge/jaharim/mapAddPercent/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -map 메소드를 사용해 배열 각각 숫자 뒤에 %를 붙인 문자열을 만드세요 - -## Expected Output - -['100%', '10%', '20%', '40%'] diff --git a/Challenge/jaharim/mapAddPercent/solve.js b/Challenge/jaharim/mapAddPercent/solve.js deleted file mode 100644 index 7990f34f..00000000 --- a/Challenge/jaharim/mapAddPercent/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes - -const result = inputArray.map((inputElement) => `${inputElement}%`); -console.log(result); diff --git a/Challenge/jaharim/mapAppendOrder/README.md b/Challenge/jaharim/mapAppendOrder/README.md deleted file mode 100644 index fccb0d1a..00000000 --- a/Challenge/jaharim/mapAppendOrder/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# 문제제목 - -## 설명 - -배열의 값을 name 프로퍼티에 넣고 몇번째 원소인지를 order에 넣은 객체의 배열을 출력하세요 - -## Expected Output - -[ - { name: '홍길동', order: 1 }, - { name: '둘리', order: 2 }, - { name: '루피', order: 3 } -] diff --git a/Challenge/jaharim/mapAppendOrder/solve.js b/Challenge/jaharim/mapAppendOrder/solve.js deleted file mode 100644 index 2b4db462..00000000 --- a/Challenge/jaharim/mapAppendOrder/solve.js +++ /dev/null @@ -1,12 +0,0 @@ -const inputArray = ['홍길동', '둘리', '루피']; - -// write your codes - -let arr = []; -const result = inputArray -.map((inputElement) => arr.push( - { name : inputElement, - order : inputArray.indexOf(inputElement)+1 - }) -); -console.log(arr); diff --git a/Challenge/jaharim/recommendAd/README.md b/Challenge/jaharim/recommendAd/README.md deleted file mode 100644 index 132e8800..00000000 --- a/Challenge/jaharim/recommendAd/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# 문제제목 - -사용자가 안 본 광고는? - -## 설명 - -유튜브는 사용자가 프리미엄 회원이 아닌 경우 영상 시작이나 중간에 광고가 나오도록 설정되어 있습니다. - -[2020년 유튜브 인기 광고](https://www.thinkwithgoogle.com/intl/ko-kr/marketing-strategies/video/%EB%8C%80%ED%95%9C%EB%AF%BC%EA%B5%AD-youtube-%EC%9D%B8%EA%B8%B0-%EA%B4%91%EA%B3%A0%EC%98%81%EC%83%81-2020%EB%85%84-%EC%97%B0%EB%A7%90%EA%B2%B0%EC%82%B0/)는 총 열 편으로, 사용자의 일주일간 광고 시청 이력을 통해 해당 사용자가 일주일 동안 안 본 광고를 그 다음주에 노출함으로써 광고들이 사용자에게 골고루 노출되길 원합니다. - -유저가 매일 유튜브에 접속하여 하루 한 편 이상의 광고를 보았다고 가정할 때, 이 유저가 안 본 광고는 무엇인지 출력해주세요. - -## Expected Output - -[ '동원F&B' ] diff --git a/Challenge/jaharim/recommendAd/solve.js b/Challenge/jaharim/recommendAd/solve.js deleted file mode 100644 index da3eefd8..00000000 --- a/Challenge/jaharim/recommendAd/solve.js +++ /dev/null @@ -1,33 +0,0 @@ -'use strict' - -const userHistory = [ - { date: '2020-11-03', watched: [ 'KT', 'BBQ' ] }, - { date: '2020-11-04', watched: [ '정관장', 'KT', '딱좋은데이' ] }, - { date: '2020-11-05', watched: [ '그랑사가', '농심' ] }, - { date: '2020-11-06', watched: [ 'BBQ' ] }, - { date: '2020-11-07', watched: [ '쌍용자동차', 'BBQ', 'KT' ] }, - { date: '2020-11-08', watched: [ '켈로그코리아', '빙그레' ] }, - { date: '2020-11-09', watched: [ 'KT', '그랑사가', '빙그레' ] }, -]; - -const advList = [ '동원F&B', '정관장', 'KT', 'BBQ', '그랑사가', '농심', '딱좋은데이', '빙그레', '쌍용자동차', '켈로그코리아' ]; - -// write your codes -const indexOfadvList = [0,1,2,3,4,5,6,7,8,9]; -const indexOfuserHistory = [0,1,2,3,4,5,6]; - -const watched_adv_Array = []; -const ArrayFromSet = []; - -const gatherWA = indexOfuserHistory.map((el)=> watched_adv_Array.concat(userHistory[el].watched)).join(",").split(","); -// userHistory의 watched_adv 한 배열에 모으기 - -const deleteOverlap = new Set(gatherWA); -for( let i of deleteOverlap){ - ArrayFromSet.push(i); -} // 모인 watched_adv를 Set을 이용해 중복값 없애고 ArrayFromSet에 push 해주기 - -const result = advList.filter((el2) => ArrayFromSet.indexOf(el2) === -1); -// advList의 요소 중에서 ArrayFromSet에 존재하지 않는 요소를 찾아서 리턴해주기 - -console.log(result); diff --git a/Challenge/jaharim/reduceMaxValueNIndex/README.md b/Challenge/jaharim/reduceMaxValueNIndex/README.md deleted file mode 100644 index 02a22b52..00000000 --- a/Challenge/jaharim/reduceMaxValueNIndex/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -reduce 메소드를 사용해 최댓값의 값을 maxValue에, 해당 값의 index를 idx에 넣은 객체를 출력하세요 - -## Expected Output - -{ maxValue: 85, idx: 7 }. diff --git a/Challenge/jaharim/reduceMaxValueNIndex/solve.js b/Challenge/jaharim/reduceMaxValueNIndex/solve.js deleted file mode 100644 index 86bc4f3d..00000000 --- a/Challenge/jaharim/reduceMaxValueNIndex/solve.js +++ /dev/null @@ -1,10 +0,0 @@ -const inputArray = [3, 29, 38, 12, 57, 74, 40, 85, 61]; - -// write your codes - -let arr = []; -const findMaxIndex = inputArray.indexOf( - inputArray.reduce((prev, curr) => prev < curr ? curr : prev,0) - ); -const result = arr.push({ maxValue: inputArray[findMaxIndex], idx: findMaxIndex }); -console.log(arr[0]); diff --git a/Challenge/jaharim/reduceNameNickname/README.md b/Challenge/jaharim/reduceNameNickname/README.md deleted file mode 100644 index aeaf5b31..00000000 --- a/Challenge/jaharim/reduceNameNickname/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -입력받은 객채배열의 nickname을 key, name을 value로 하는 객체를 출력하세요 - -## Expected Output - -{ hong: '홍길동', '2li': '둘리', '1Cin': '오스트랄로피테쿠스' } diff --git a/Challenge/jaharim/reduceNameNickname/solve.js b/Challenge/jaharim/reduceNameNickname/solve.js deleted file mode 100644 index 6429d7fe..00000000 --- a/Challenge/jaharim/reduceNameNickname/solve.js +++ /dev/null @@ -1,20 +0,0 @@ -const inputArray = [ - { - name: '홍길동', - nickname: 'hong', - }, - { - name: '둘리', - nickname: '2li', - }, - { - name: '오스트랄로피테쿠스', - nickname: '1Cin', - }, -]; - -// write your codes - -const doReduce = inputArray.reduce((prev,curr) => { return {...prev, [curr.nickname] : curr.name, }},{}); - -console.log(doReduce); \ No newline at end of file diff --git a/Challenge/jaharim/reduceSum/README.md b/Challenge/jaharim/reduceSum/README.md deleted file mode 100644 index 8c607eb2..00000000 --- a/Challenge/jaharim/reduceSum/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -reduce 메소드를 사용해서 배열의 모든 수의 합을 구하세요. - -## Expected Output - -106 diff --git a/Challenge/jaharim/reduceSum/solve.js b/Challenge/jaharim/reduceSum/solve.js deleted file mode 100644 index d59e4d0c..00000000 --- a/Challenge/jaharim/reduceSum/solve.js +++ /dev/null @@ -1,7 +0,0 @@ -const inputArray = [10, 3, 20, 5, 8, 60]; - -// write your codes - -const result = inputArray.reduce((prev, curr) => prev + curr, 0); -console.log(result); - diff --git a/Challenge/jaharim/sortByPrice/README.md b/Challenge/jaharim/sortByPrice/README.md deleted file mode 100644 index b1ccf70e..00000000 --- a/Challenge/jaharim/sortByPrice/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 - -## Expected Output - -[ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 } -] diff --git a/Challenge/jaharim/sortByPrice/solve.js b/Challenge/jaharim/sortByPrice/solve.js deleted file mode 100644 index da91e0ff..00000000 --- a/Challenge/jaharim/sortByPrice/solve.js +++ /dev/null @@ -1,25 +0,0 @@ -const inputArray = [ - { - name: '사과', - price: 1000, - }, - { - name: '수박', - price: 5000, - }, - { - name: '당근', - price: 2000, - }, - { - name: '참외', - price: 10000, - } -]; - -// write your codes - -const result = inputArray.sort((a,b) => a.price - b.price); - -console.log(result); - diff --git a/Challenge/jaharim/sortByPriceAndQuantity/README.md b/Challenge/jaharim/sortByPriceAndQuantity/README.md deleted file mode 100644 index 41cd5c95..00000000 --- a/Challenge/jaharim/sortByPriceAndQuantity/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 -만약 price가 같다면 quantity기준으로 오름차순 정렬하세요 - -## Expected Output - -[ - { name: '사과', price: 1000, quantity: 2 }, - { name: '오이', price: 2000, quantity: 49 }, - { name: '당근', price: 2000, quantity: 50 }, - { name: '참외', price: 5000, quantity: 10 }, - { name: '수박', price: 5000, quantity: 20 } -] diff --git a/Challenge/jaharim/sortByPriceAndQuantity/solve.js b/Challenge/jaharim/sortByPriceAndQuantity/solve.js deleted file mode 100644 index 5fb617a0..00000000 --- a/Challenge/jaharim/sortByPriceAndQuantity/solve.js +++ /dev/null @@ -1,33 +0,0 @@ -const inputArray = [ - { - name: '사과', - price: 1000, - quantity: 2, - }, - { - name: '수박', - price: 5000, - quantity: 20, - }, - { - name: '당근', - price: 2000, - quantity: 50, - }, - { - name: '참외', - price: 5000, - quantity: 10, - }, - { - name: '오이', - price: 2000, - quantity: 49, - } -]; - -// write your codes - -const result = inputArray.sort((a,b) => a.price !== b.price ? a.price - b.price : a.quantity - b.quantity); - -console.log(result); diff --git a/Challenge/jaharim/spreadOperatorMaxValue/README.md b/Challenge/jaharim/spreadOperatorMaxValue/README.md deleted file mode 100644 index bbe94ad6..00000000 --- a/Challenge/jaharim/spreadOperatorMaxValue/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -Spread Operator를 이용해서 값의 최대, 최소값을 구하세요 - -## Expected Output - -max : 10, min : 1 diff --git a/Challenge/jaharim/spreadOperatorMaxValue/solve.js b/Challenge/jaharim/spreadOperatorMaxValue/solve.js deleted file mode 100644 index d868a9e1..00000000 --- a/Challenge/jaharim/spreadOperatorMaxValue/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -const inputArray = [1,2,3,4,5,6,7,8,9,10]; - -// write your codes - -console.log(`max : ${Math.max(...inputArray)}, min : ${Math.min(...inputArray)}`); - diff --git a/Challenge/jiho-bae/everyArray/README.md b/Challenge/jiho-bae/everyArray/README.md deleted file mode 100644 index 442558f6..00000000 --- a/Challenge/jiho-bae/everyArray/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -every를 이용해서 모든 원소가 짝수인지 아닌지를 판별하세요 - -## Expected Output - -true \ No newline at end of file diff --git a/Challenge/jiho-bae/everyArray/solve.js b/Challenge/jiho-bae/everyArray/solve.js deleted file mode 100644 index 42f613ee..00000000 --- a/Challenge/jiho-bae/everyArray/solve.js +++ /dev/null @@ -1,5 +0,0 @@ -const inputArray = [2, 4, 6, 8, 10]; - -// write your codes -let answer = inputArray.every((val) => val % 2 === 0); -console.log(answer); diff --git a/Challenge/jiho-bae/expDivOdd/README.md b/Challenge/jiho-bae/expDivOdd/README.md deleted file mode 100644 index 2d5e0676..00000000 --- a/Challenge/jiho-bae/expDivOdd/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# 문제제목 - -## 설명 - -제곱한 후 3으로 나눈 나머지가 홀수인 것의 총 합을 구하세요. - -## Expected Output diff --git a/Challenge/jiho-bae/expDivOdd/solve.js b/Challenge/jiho-bae/expDivOdd/solve.js deleted file mode 100644 index 9d4afc69..00000000 --- a/Challenge/jiho-bae/expDivOdd/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -const inputArray = [1, 7, 3, 4, 6]; - -// write your codes - -let answer = inputArray - .filter((val) => (val * val) % 3) - .reduce((sum, val) => sum + val, 0); -console.log(answer); diff --git a/Challenge/jiho-bae/figureSkating/README.md b/Challenge/jiho-bae/figureSkating/README.md deleted file mode 100644 index 648eeaa4..00000000 --- a/Challenge/jiho-bae/figureSkating/README.md +++ /dev/null @@ -1,41 +0,0 @@ -# 문제제목 - -## 설명 - -점수를 계산해서 점수가 높은 순으로 name과 score를 가진 객체의 배열을 출력하세요. -단 실격자는 출력하지 않습니다. - -### 피겨 점수 기준 - -피겨 점수는 ‘기술점수(TES)+예술점수(PCS)-감점’으로 구성된다. - -기술점수(TES·Total Element Score)는 기본점수에 수행점수(GOE·Grade Of Execution)를 합산해 도출한다. - -심판은 선수들이 점프와 스핀의 기술을 제대로 수행하는지 살핀다. 점프에선 회전수를 제대로 지켰는지, 에지를 제대로 사용했는지에 따라 ‘롱 에지’(잘못된 에지 사용)나 ‘다운그레이드’(난이도 하락), ‘어텐션’(주의) 등의 판정을 내린다. 스핀과 스텝시퀀스에 붙는 레벨(1~4)도 이들이 결정한다. - -9명의 심판은 선수들이 미리 제출한 연기 구성표를 기준으로 과제별 기본점수에서 가·감점을 한다. 이른바 ‘GOE’라 불리는 수행점수다. - -쇼트프로그램은 점프 3개, 스핀 3개, 스텝 1개의 수행과제가 반드시 포함돼야 한다. - -예술점수(PCS·Total Program Component Score)는 프로그램의 완성도에 영향을 미치는 스케이팅 기술·동작의 연결·연기·안무·곡 해석 등 5가지를 평가한다. - -마지막으로 감점이 반영된다. 감점 항목이 발생할 때마다 1점씩 감점된다. - -원문보기: -http://news.khan.co.kr/kh_news/khan_art_view.html?art_id=201402172146545#csidx6329aebb6a02152bca884614a7f0544 - -### 판정 기준 - -* 점수가 가장 높은 사람이 1등이다. -* 점수는 기술점수(TES) + 예술점수(PCS) - 감점 으로 구성된다. -* 기술점수(TES)는 기본점수 * 수행점수(GOE)를 합산해 도출한다. -* 필수 수행과제를 수행하지 못했을 시 실격이다. - -### 필수 수행과제 - -* 쇼트프로그램은 점프 3개, 스핀 3개, 스텝 1개의 수행과제가 반드시 포함돼야 한다. -* 점프와 스핀을 4번 이상 수행했을 시 가장 잘한 3개를 기준으로 한다. - -## Expected Output - -[ { name: '김연아', score: 1055 }, { name: '아사다 마오', score: 939 } ] diff --git a/Challenge/jiho-bae/figureSkating/solve.js b/Challenge/jiho-bae/figureSkating/solve.js deleted file mode 100644 index 842b00f0..00000000 --- a/Challenge/jiho-bae/figureSkating/solve.js +++ /dev/null @@ -1,98 +0,0 @@ -// 기본 점수 -const baseScore = { - jump: 10, - spin: 20, - step: 15, -}; - -const baseAssignment = { - jump: 3, - spin: 3, - step: 1, -}; - -const inputArray = [ - { - name: "김연아", - goe: { - jump: [10, 9, 10], - spin: [10, 10, 10], - step: [9], - }, - pcs: 30, - penalty: 0, - }, - { - name: "피겨의 신", - goe: { - jump: [10000, 10000], - spin: [10000, 10000, 10000], - step: [10000], - }, - pcs: 100000, - penalty: 0, - }, - { - name: "아사다 마오", - goe: { - jump: [9, 6, 8, 9], - spin: [9, 9, 9], - step: [8], - }, - pcs: 29, - penalty: 10, - }, -]; - -// write your codes - -const players = inputArray.filter((player) => { - const { - goe: { jump, spin, step }, - } = player; - return ( - jump.length >= baseAssignment.jump && - spin.length >= baseAssignment.spin && - step.length >= baseAssignment.step - ); -}); - -let answer = players.map((player) => { - let score = 0; - const { - name, - goe: { jump, spin, step: stepScore }, - pcs, - penalty, - } = player; - - let jumpScore = - jump.length > 3 - ? jump - .sort((a, b) => b - a) - .slice(0, 3) - .reduce((s, v) => s + v, 0) - : jump.reduce((s, v) => s + v, 0); - - let spinScore = - spin.length > 3 - ? spin - .sort((a, b) => b - a) - .slice(0, 3) - .reduce((s, v) => s + v, 0) - : spin.reduce((s, v) => s + v, 0); - - score = - jumpScore * baseScore.jump + - spinScore * baseScore.spin + - stepScore * baseScore.step + - pcs - - penalty; - - return { - name, - score, - }; -}); - -console.log(answer.sort((a, b) => b - a)); diff --git a/Challenge/jiho-bae/filterAge/README.md b/Challenge/jiho-bae/filterAge/README.md deleted file mode 100644 index 1c73138e..00000000 --- a/Challenge/jiho-bae/filterAge/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소의 age가 30이상 50미만인 사람만 있는 객체의 배열을 만드세요 - -## Expected Output - -[ { name: '일미', age: 35 }, { name: '이미', age: 45 } ] diff --git a/Challenge/jiho-bae/filterAge/solve.js b/Challenge/jiho-bae/filterAge/solve.js deleted file mode 100644 index 0cba479f..00000000 --- a/Challenge/jiho-bae/filterAge/solve.js +++ /dev/null @@ -1,22 +0,0 @@ -const inputArray = [ - { - name: "영미", - age: 25, - }, - { - name: "일미", - age: 35, - }, - { - name: "이미", - age: 45, - }, - { - name: "삼미", - age: 55, - }, -]; -// write your codes - -const answer = inputArray.filter((elem) => elem.age >= 30 && elem.age < 50); -console.log(answer); diff --git a/Challenge/jiho-bae/filterIntersection/README.md b/Challenge/jiho-bae/filterIntersection/README.md deleted file mode 100644 index 56c8d04a..00000000 --- a/Challenge/jiho-bae/filterIntersection/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -두 배열의 교집합을 출력하세요! - -## Expected Output - -[3, 4, 5] \ No newline at end of file diff --git a/Challenge/jiho-bae/filterIntersection/solve.js b/Challenge/jiho-bae/filterIntersection/solve.js deleted file mode 100644 index 0c646189..00000000 --- a/Challenge/jiho-bae/filterIntersection/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -const A = [1, 2, 3, 4, 5]; -const B = [3, 4, 5, 6, 7]; -// write your codes - -const answer = A.filter((val) => B.includes(val)); -console.log(answer); diff --git a/Challenge/jiho-bae/filterOdd/README.md b/Challenge/jiho-bae/filterOdd/README.md deleted file mode 100644 index 9bf99a18..00000000 --- a/Challenge/jiho-bae/filterOdd/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -홀수만 뽑아 배열로 만드세요 - -## Expected Output - -[5, 1, 3] diff --git a/Challenge/jiho-bae/filterOdd/solve.js b/Challenge/jiho-bae/filterOdd/solve.js deleted file mode 100644 index 30814adf..00000000 --- a/Challenge/jiho-bae/filterOdd/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -const inputArray = [4, 2, 5, 1, 3]; - -// write your codes - -const answer = inputArray.filter((val) => val % 2); -console.log(answer); diff --git a/Challenge/jiho-bae/findWord/README.md b/Challenge/jiho-bae/findWord/README.md deleted file mode 100644 index 8ef123f4..00000000 --- a/Challenge/jiho-bae/findWord/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -용가리라는 단어가 있으면 true 없으면 false를 출력 - -## Expected Output - -true diff --git a/Challenge/jiho-bae/findWord/solve.js b/Challenge/jiho-bae/findWord/solve.js deleted file mode 100644 index 330750fa..00000000 --- a/Challenge/jiho-bae/findWord/solve.js +++ /dev/null @@ -1,11 +0,0 @@ -const inputArray = ["잠", "자", "고", "싶", "다", "용가리"]; - -// write your codes - -// 1. -const answer = inputArray.some((val) => val === "용가리"); -console.log(answer); - -// 2. -const answer2 = inputArray.includes("용가리"); -console.log(answer2); diff --git a/Challenge/jiho-bae/forEachFilter/README.md b/Challenge/jiho-bae/forEachFilter/README.md deleted file mode 100644 index d826e8e6..00000000 --- a/Challenge/jiho-bae/forEachFilter/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소중 40 이상인 수만 뽑아 배열을 만드세요. - -## Expected Output - -[ 100, 40 ] diff --git a/Challenge/jiho-bae/forEachFilter/solve.js b/Challenge/jiho-bae/forEachFilter/solve.js deleted file mode 100644 index f52d9143..00000000 --- a/Challenge/jiho-bae/forEachFilter/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes - -const answer = inputArray.filter((val) => val >= 40); -console.log(answer); diff --git a/Challenge/jiho-bae/forEachFilterIsNaN/README.md b/Challenge/jiho-bae/forEachFilterIsNaN/README.md deleted file mode 100644 index ba71774d..00000000 --- a/Challenge/jiho-bae/forEachFilterIsNaN/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소중 숫자인 원소만 뽑아 배열을 만드세요. - -## Expected Output - -[ 1, 40, 51.5, 88 ] diff --git a/Challenge/jiho-bae/forEachFilterIsNaN/solve.js b/Challenge/jiho-bae/forEachFilterIsNaN/solve.js deleted file mode 100644 index 4c748a5b..00000000 --- a/Challenge/jiho-bae/forEachFilterIsNaN/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -const inputArray = [1, 40, "라매", "개발자", 51.5, "a", 88]; - -// write your codes - -const answer = inputArray.filter((val) => !isNaN(val)); -console.log(answer); diff --git a/Challenge/jiho-bae/forEachMap/README.md b/Challenge/jiho-bae/forEachMap/README.md deleted file mode 100644 index d0e84215..00000000 --- a/Challenge/jiho-bae/forEachMap/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# forEachReduce - -## 설명 - -forEach 메소드를 사용해서 배열의 각 원소 끝에 '%'를 붙인 문자열 배열을 출력하세요 - -## Expected Output - -[ '100%', '10%', '20%', '40%' ] diff --git a/Challenge/jiho-bae/forEachMap/solve.js b/Challenge/jiho-bae/forEachMap/solve.js deleted file mode 100644 index 515c9b38..00000000 --- a/Challenge/jiho-bae/forEachMap/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes -let answer = []; -inputArray.forEach((val) => answer.push(val + "%")); -console.log(answer); diff --git a/Challenge/jiho-bae/forEachReduce/README.md b/Challenge/jiho-bae/forEachReduce/README.md deleted file mode 100644 index 8f369ed9..00000000 --- a/Challenge/jiho-bae/forEachReduce/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# forEachReduce - -## 설명 - -forEach 메소드를 사용해서 배열의 총 합을 출력하는 코드를 작성하세요 - -## Expected Output - -170 diff --git a/Challenge/jiho-bae/forEachReduce/solve.js b/Challenge/jiho-bae/forEachReduce/solve.js deleted file mode 100644 index 1f36a0f9..00000000 --- a/Challenge/jiho-bae/forEachReduce/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes -let sum = 0; -inputArray.forEach((val) => (sum += val)); -console.log(sum); diff --git a/Challenge/jiho-bae/mapAddPercent/README.md b/Challenge/jiho-bae/mapAddPercent/README.md deleted file mode 100644 index 4156a2f9..00000000 --- a/Challenge/jiho-bae/mapAddPercent/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -map 메소드를 사용해 배열 각각 숫자 뒤에 %를 붙인 문자열을 만드세요 - -## Expected Output - -['100%', '10%', '20%', '40%'] diff --git a/Challenge/jiho-bae/mapAddPercent/solve.js b/Challenge/jiho-bae/mapAddPercent/solve.js deleted file mode 100644 index e0e47818..00000000 --- a/Challenge/jiho-bae/mapAddPercent/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes - -const answer = inputArray.map((val) => val + "%"); -console.log(answer); diff --git a/Challenge/jiho-bae/mapAppendOrder/README.md b/Challenge/jiho-bae/mapAppendOrder/README.md deleted file mode 100644 index fccb0d1a..00000000 --- a/Challenge/jiho-bae/mapAppendOrder/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# 문제제목 - -## 설명 - -배열의 값을 name 프로퍼티에 넣고 몇번째 원소인지를 order에 넣은 객체의 배열을 출력하세요 - -## Expected Output - -[ - { name: '홍길동', order: 1 }, - { name: '둘리', order: 2 }, - { name: '루피', order: 3 } -] diff --git a/Challenge/jiho-bae/mapAppendOrder/solve.js b/Challenge/jiho-bae/mapAppendOrder/solve.js deleted file mode 100644 index 3244cdf8..00000000 --- a/Challenge/jiho-bae/mapAppendOrder/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -const inputArray = ["홍길동", "둘리", "루피"]; - -// write your codes - -const answer = inputArray.map((name, idx) => { - return { name, order: idx + 1 }; -}); -console.log(answer); diff --git a/Challenge/jiho-bae/recommendAd/README.md b/Challenge/jiho-bae/recommendAd/README.md deleted file mode 100644 index 132e8800..00000000 --- a/Challenge/jiho-bae/recommendAd/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# 문제제목 - -사용자가 안 본 광고는? - -## 설명 - -유튜브는 사용자가 프리미엄 회원이 아닌 경우 영상 시작이나 중간에 광고가 나오도록 설정되어 있습니다. - -[2020년 유튜브 인기 광고](https://www.thinkwithgoogle.com/intl/ko-kr/marketing-strategies/video/%EB%8C%80%ED%95%9C%EB%AF%BC%EA%B5%AD-youtube-%EC%9D%B8%EA%B8%B0-%EA%B4%91%EA%B3%A0%EC%98%81%EC%83%81-2020%EB%85%84-%EC%97%B0%EB%A7%90%EA%B2%B0%EC%82%B0/)는 총 열 편으로, 사용자의 일주일간 광고 시청 이력을 통해 해당 사용자가 일주일 동안 안 본 광고를 그 다음주에 노출함으로써 광고들이 사용자에게 골고루 노출되길 원합니다. - -유저가 매일 유튜브에 접속하여 하루 한 편 이상의 광고를 보았다고 가정할 때, 이 유저가 안 본 광고는 무엇인지 출력해주세요. - -## Expected Output - -[ '동원F&B' ] diff --git a/Challenge/jiho-bae/recommendAd/solve.js b/Challenge/jiho-bae/recommendAd/solve.js deleted file mode 100644 index f899b2c9..00000000 --- a/Challenge/jiho-bae/recommendAd/solve.js +++ /dev/null @@ -1,31 +0,0 @@ -const userHistory = [ - { date: "2020-11-03", watched: ["KT", "BBQ"] }, - { date: "2020-11-04", watched: ["정관장", "KT", "딱좋은데이"] }, - { date: "2020-11-05", watched: ["그랑사가", "농심"] }, - { date: "2020-11-06", watched: ["BBQ"] }, - { date: "2020-11-07", watched: ["쌍용자동차", "BBQ", "KT"] }, - { date: "2020-11-08", watched: ["켈로그코리아", "빙그레"] }, - { date: "2020-11-09", watched: ["KT", "그랑사가", "빙그레"] }, -]; - -let advList = [ - "동원F&B", - "정관장", - "KT", - "BBQ", - "그랑사가", - "농심", - "딱좋은데이", - "빙그레", - "쌍용자동차", - "켈로그코리아", -]; - -// write your codes - -const set = new Set(); -userHistory.map((day) => day.watched.map((ad) => set.add(ad))); - -const watchedAd = Array.from(set); -let answer = advList.filter((ad) => !watchedAd.includes(ad)); -console.log(answer); diff --git a/Challenge/jiho-bae/reduceMaxValueNIndex/README.md b/Challenge/jiho-bae/reduceMaxValueNIndex/README.md deleted file mode 100644 index 02a22b52..00000000 --- a/Challenge/jiho-bae/reduceMaxValueNIndex/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -reduce 메소드를 사용해 최댓값의 값을 maxValue에, 해당 값의 index를 idx에 넣은 객체를 출력하세요 - -## Expected Output - -{ maxValue: 85, idx: 7 }. diff --git a/Challenge/jiho-bae/reduceMaxValueNIndex/solve.js b/Challenge/jiho-bae/reduceMaxValueNIndex/solve.js deleted file mode 100644 index 6b3a7951..00000000 --- a/Challenge/jiho-bae/reduceMaxValueNIndex/solve.js +++ /dev/null @@ -1,13 +0,0 @@ -const inputArray = [3, 29, 38, 12, 57, 74, 40, 85, 61]; - -// write your codes -const answer = inputArray.reduce( - (acc, val, i) => { - return { - maxValue: Math.max(acc.maxValue, val), - idx: val > acc.maxValue ? i : acc.idx, - }; - }, - { maxValue: 0, idx: 0 } -); -console.log(answer); diff --git a/Challenge/jiho-bae/reduceNameNickname/README.md b/Challenge/jiho-bae/reduceNameNickname/README.md deleted file mode 100644 index aeaf5b31..00000000 --- a/Challenge/jiho-bae/reduceNameNickname/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -입력받은 객채배열의 nickname을 key, name을 value로 하는 객체를 출력하세요 - -## Expected Output - -{ hong: '홍길동', '2li': '둘리', '1Cin': '오스트랄로피테쿠스' } diff --git a/Challenge/jiho-bae/reduceNameNickname/solve.js b/Challenge/jiho-bae/reduceNameNickname/solve.js deleted file mode 100644 index 5b933a79..00000000 --- a/Challenge/jiho-bae/reduceNameNickname/solve.js +++ /dev/null @@ -1,22 +0,0 @@ -const inputArray = [ - { - name: "홍길동", - nickname: "hong", - }, - { - name: "둘리", - nickname: "2li", - }, - { - name: "오스트랄로피테쿠스", - nickname: "1Cin", - }, -]; - -// write your codes - -const answer = inputArray.reduce((acc, { name, nickname }) => { - acc[nickname] = name; - return acc; -}, {}); -console.log(answer); diff --git a/Challenge/jiho-bae/reduceSum/README.md b/Challenge/jiho-bae/reduceSum/README.md deleted file mode 100644 index 8c607eb2..00000000 --- a/Challenge/jiho-bae/reduceSum/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -reduce 메소드를 사용해서 배열의 모든 수의 합을 구하세요. - -## Expected Output - -106 diff --git a/Challenge/jiho-bae/reduceSum/solve.js b/Challenge/jiho-bae/reduceSum/solve.js deleted file mode 100644 index 0f48c693..00000000 --- a/Challenge/jiho-bae/reduceSum/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -const inputArray = [10, 3, 20, 5, 8, 60]; - -// write your codes - -const answer = inputArray.reduce((sum, val) => sum + val, 0); -console.log(answer); diff --git a/Challenge/jiho-bae/sample/README.md b/Challenge/jiho-bae/sample/README.md deleted file mode 100644 index fe8db8d9..00000000 --- a/Challenge/jiho-bae/sample/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# 문제제목 - -## 설명 - - -## Expected Output - -나와야 하는 output을 적는 곳입니다. diff --git a/Challenge/jiho-bae/sample/solve.js b/Challenge/jiho-bae/sample/solve.js deleted file mode 100644 index 533d937a..00000000 --- a/Challenge/jiho-bae/sample/solve.js +++ /dev/null @@ -1,4 +0,0 @@ -const inputArray = []; - -// write your codes - diff --git a/Challenge/jiho-bae/sortByPrice/README.md b/Challenge/jiho-bae/sortByPrice/README.md deleted file mode 100644 index b1ccf70e..00000000 --- a/Challenge/jiho-bae/sortByPrice/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 - -## Expected Output - -[ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 } -] diff --git a/Challenge/jiho-bae/sortByPrice/solve.js b/Challenge/jiho-bae/sortByPrice/solve.js deleted file mode 100644 index ef74a449..00000000 --- a/Challenge/jiho-bae/sortByPrice/solve.js +++ /dev/null @@ -1,23 +0,0 @@ -const inputArray = [ - { - name: "사과", - price: 1000, - }, - { - name: "수박", - price: 5000, - }, - { - name: "당근", - price: 2000, - }, - { - name: "참외", - price: 10000, - }, -]; - -// write your codes - -inputArray.sort((a, b) => a.price - b.price); -console.log(inputArray); diff --git a/Challenge/jiho-bae/sortByPriceAndQuantity/README.md b/Challenge/jiho-bae/sortByPriceAndQuantity/README.md deleted file mode 100644 index 41cd5c95..00000000 --- a/Challenge/jiho-bae/sortByPriceAndQuantity/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 -만약 price가 같다면 quantity기준으로 오름차순 정렬하세요 - -## Expected Output - -[ - { name: '사과', price: 1000, quantity: 2 }, - { name: '오이', price: 2000, quantity: 49 }, - { name: '당근', price: 2000, quantity: 50 }, - { name: '참외', price: 5000, quantity: 10 }, - { name: '수박', price: 5000, quantity: 20 } -] diff --git a/Challenge/jiho-bae/sortByPriceAndQuantity/solve.js b/Challenge/jiho-bae/sortByPriceAndQuantity/solve.js deleted file mode 100644 index 61b88ae9..00000000 --- a/Challenge/jiho-bae/sortByPriceAndQuantity/solve.js +++ /dev/null @@ -1,35 +0,0 @@ -const inputArray = [ - { - name: "사과", - price: 1000, - quantity: 2, - }, - { - name: "수박", - price: 5000, - quantity: 20, - }, - { - name: "당근", - price: 2000, - quantity: 50, - }, - { - name: "참외", - price: 5000, - quantity: 10, - }, - { - name: "오이", - price: 2000, - quantity: 49, - }, -]; - -// write your codes - -inputArray.sort((a, b) => - a.price === b.price ? a.quantity - b.quantity : a.price - b.price -); - -console.log(inputArray); diff --git a/Challenge/jiho-bae/spreadOperatorMaxValue/README.md b/Challenge/jiho-bae/spreadOperatorMaxValue/README.md deleted file mode 100644 index b4ffffdb..00000000 --- a/Challenge/jiho-bae/spreadOperatorMaxValue/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# 문제제목 - -## 설명 - -Spread Operator를 이용해서 값의 최대, 최소값을 구하세요 - - -## Expected Output - - -max : 10, min : 1 \ No newline at end of file diff --git a/Challenge/jiho-bae/spreadOperatorMaxValue/solve.js b/Challenge/jiho-bae/spreadOperatorMaxValue/solve.js deleted file mode 100644 index dda65eec..00000000 --- a/Challenge/jiho-bae/spreadOperatorMaxValue/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -const inputArray = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; - -// write your codes - -let answer = `max : ${Math.max(...inputArray)}, min : ${Math.min( - ...inputArray -)}`; -console.log(answer); diff --git a/Challenge/jiyoung-dev/findWord/README.md b/Challenge/jiyoung-dev/findWord/README.md deleted file mode 100644 index 8ef123f4..00000000 --- a/Challenge/jiyoung-dev/findWord/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -용가리라는 단어가 있으면 true 없으면 false를 출력 - -## Expected Output - -true diff --git a/Challenge/jiyoung-dev/findWord/solve.js b/Challenge/jiyoung-dev/findWord/solve.js deleted file mode 100644 index 701fa9e1..00000000 --- a/Challenge/jiyoung-dev/findWord/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.includes('용가리'); -} - -exports.solution = solution; - -// includes 메서드는 배열 내에 특정 요소가 포함되어 있는지 확인하여 true 또는 false를 반환한다. \ No newline at end of file diff --git a/Challenge/jiyoung-dev/findWord/solve.test.js b/Challenge/jiyoung-dev/findWord/solve.test.js deleted file mode 100644 index 804114f6..00000000 --- a/Challenge/jiyoung-dev/findWord/solve.test.js +++ /dev/null @@ -1,26 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: ['잠', '자', '고', '싶', '다', '용가리'], - answer: true, -}; -const test2 = { - input: ['맛있는', '용가리치킨'], - answer: false, -}; -const test3 = { - input: ['고질라', '용가리 ', '울트라맨'], - answer: false, -}; - -describe('findWord', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); \ No newline at end of file diff --git a/Challenge/jw-97/filterOdd/README.md b/Challenge/jw-97/filterOdd/README.md deleted file mode 100644 index cf9eda79..00000000 --- a/Challenge/jw-97/filterOdd/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -홀수만 뽑아 배열로 만드세요 diff --git a/Challenge/jw-97/filterOdd/solve.js b/Challenge/jw-97/filterOdd/solve.js deleted file mode 100644 index 4993af22..00000000 --- a/Challenge/jw-97/filterOdd/solve.js +++ /dev/null @@ -1,7 +0,0 @@ -// write your codes -function solution(inputArray) { - const result = inputArray.filter((el) => el %2 ===1); - return result; -} - -exports.solution = solution; diff --git a/Challenge/jw-97/filterOdd/solve.test.js b/Challenge/jw-97/filterOdd/solve.test.js deleted file mode 100644 index 8cfd7f5a..00000000 --- a/Challenge/jw-97/filterOdd/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [4, 2, 5, 1, 3], - answer: [5, 1, 3], -}; - -const test2 = { - input: [4, 2, 6, 8, 50, 16], - answer: [], -}; - -const test3 = { - input: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], - answer: [1, 3, 5, 7, 9, 11], -}; - -describe('filterOdd', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/jybaek96/everyArray/README.md b/Challenge/jybaek96/everyArray/README.md deleted file mode 100644 index 442558f6..00000000 --- a/Challenge/jybaek96/everyArray/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -every를 이용해서 모든 원소가 짝수인지 아닌지를 판별하세요 - -## Expected Output - -true \ No newline at end of file diff --git a/Challenge/jybaek96/everyArray/solve.js b/Challenge/jybaek96/everyArray/solve.js deleted file mode 100644 index eea694cf..00000000 --- a/Challenge/jybaek96/everyArray/solve.js +++ /dev/null @@ -1,5 +0,0 @@ -function solution(inputArray) { - return inputArray.every(item => item % 2 === 0); -} - -exports.solution = solution; diff --git a/Challenge/jybaek96/everyArray/solve.test.js b/Challenge/jybaek96/everyArray/solve.test.js deleted file mode 100644 index b03e4791..00000000 --- a/Challenge/jybaek96/everyArray/solve.test.js +++ /dev/null @@ -1,21 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [2, 4, 6, 8, 10], - answer: true, -}; - -const test2 = { - input: [2, 3, 6, 8, 10], - answer: false, -}; - -describe('everyArray', () => { - test('모두 짝수면 true여야 한다.', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - - test('홀수가 있으면 false여야 한다.', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); -}); diff --git a/Challenge/jybaek96/expDivOdd/README.md b/Challenge/jybaek96/expDivOdd/README.md deleted file mode 100644 index c07ab10b..00000000 --- a/Challenge/jybaek96/expDivOdd/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -제곱한 후 3으로 나눈 나머지가 홀수인 것 을 뽑은 배열의 총 합을 구하세요. diff --git a/Challenge/jybaek96/expDivOdd/solve.js b/Challenge/jybaek96/expDivOdd/solve.js deleted file mode 100644 index ffdcb59f..00000000 --- a/Challenge/jybaek96/expDivOdd/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -function solution(inputArray) { - return inputArray - .map(item => item * item) - .filter(item => item % 3 === 1) - .reduce((prev, cur) => prev + cur); -} - -exports.solution = solution; diff --git a/Challenge/jybaek96/expDivOdd/solve.test.js b/Challenge/jybaek96/expDivOdd/solve.test.js deleted file mode 100644 index ca37fcc3..00000000 --- a/Challenge/jybaek96/expDivOdd/solve.test.js +++ /dev/null @@ -1,21 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 7, 3, 4, 6], - answer: 66, -}; - -const test2 = { - input: [2, 3, 6, 8, 10], - answer: 168, -}; - -describe('everyArray', () => { - test('1, 7, 3, 4, 6', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - - test('2, 3, 6, 8, 10', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); -}); diff --git a/Challenge/jybaek96/filterAge/README.md b/Challenge/jybaek96/filterAge/README.md deleted file mode 100644 index 873a15c1..00000000 --- a/Challenge/jybaek96/filterAge/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소의 age가 30이상 50미만인 사람만 있는 객체의 배열을 만드세요 diff --git a/Challenge/jybaek96/filterAge/solve.js b/Challenge/jybaek96/filterAge/solve.js deleted file mode 100644 index 6fca3a9f..00000000 --- a/Challenge/jybaek96/filterAge/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.filter((item) => item.age >= 30 && item.age < 50); -} - -exports.solution = solution; diff --git a/Challenge/jybaek96/filterAge/solve.test.js b/Challenge/jybaek96/filterAge/solve.test.js deleted file mode 100644 index b9081601..00000000 --- a/Challenge/jybaek96/filterAge/solve.test.js +++ /dev/null @@ -1,32 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '영미', - age: 25, - }, - { - name: '일미', - age: 35, - }, - { - name: '이미', - age: 45, - }, - { - name: '삼미', - age: 55, - }, - ], - answer: [ - { name: '일미', age: 35 }, - { name: '이미', age: 45 }, - ], -}; - -describe('filterAge', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/jybaek96/filterIntersection/README.md b/Challenge/jybaek96/filterIntersection/README.md deleted file mode 100644 index d7c9ad39..00000000 --- a/Challenge/jybaek96/filterIntersection/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# 문제제목 - -## 설명 - -두 배열의 교집합을 출력하세요! diff --git a/Challenge/jybaek96/filterIntersection/solve.js b/Challenge/jybaek96/filterIntersection/solve.js deleted file mode 100644 index 0b3549c1..00000000 --- a/Challenge/jybaek96/filterIntersection/solve.js +++ /dev/null @@ -1,5 +0,0 @@ -function solution(inputArray1, inputArray2) { - return inputArray1.filter(item => inputArray2.includes(item)); -} - -exports.solution = solution; diff --git a/Challenge/jybaek96/filterIntersection/solve.test.js b/Challenge/jybaek96/filterIntersection/solve.test.js deleted file mode 100644 index 576cbc86..00000000 --- a/Challenge/jybaek96/filterIntersection/solve.test.js +++ /dev/null @@ -1,15 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: { - A: [1, 2, 3, 4, 5], - B: [3, 4, 5, 6, 7], - }, - answer: [3, 4, 5], -}; - -describe('filterIntersection', () => { - test('test1', () => { - expect(solution(test1.input.A, test1.input.B)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/jybaek96/filterOdd/README.md b/Challenge/jybaek96/filterOdd/README.md deleted file mode 100644 index cf9eda79..00000000 --- a/Challenge/jybaek96/filterOdd/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -홀수만 뽑아 배열로 만드세요 diff --git a/Challenge/jybaek96/filterOdd/solve.js b/Challenge/jybaek96/filterOdd/solve.js deleted file mode 100644 index 610e7331..00000000 --- a/Challenge/jybaek96/filterOdd/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.filter((item) => item % 2 === 1); -} - -exports.solution = solution; diff --git a/Challenge/jybaek96/filterOdd/solve.test.js b/Challenge/jybaek96/filterOdd/solve.test.js deleted file mode 100644 index 8cfd7f5a..00000000 --- a/Challenge/jybaek96/filterOdd/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [4, 2, 5, 1, 3], - answer: [5, 1, 3], -}; - -const test2 = { - input: [4, 2, 6, 8, 50, 16], - answer: [], -}; - -const test3 = { - input: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], - answer: [1, 3, 5, 7, 9, 11], -}; - -describe('filterOdd', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/jybaek96/findWord/README.md b/Challenge/jybaek96/findWord/README.md deleted file mode 100644 index 8ef123f4..00000000 --- a/Challenge/jybaek96/findWord/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -용가리라는 단어가 있으면 true 없으면 false를 출력 - -## Expected Output - -true diff --git a/Challenge/jybaek96/findWord/solve.js b/Challenge/jybaek96/findWord/solve.js deleted file mode 100644 index 7604c724..00000000 --- a/Challenge/jybaek96/findWord/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.some((item) => item === "용가리"); -} - -exports.solution = solution; diff --git a/Challenge/jybaek96/findWord/solve.test.js b/Challenge/jybaek96/findWord/solve.test.js deleted file mode 100644 index 804114f6..00000000 --- a/Challenge/jybaek96/findWord/solve.test.js +++ /dev/null @@ -1,26 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: ['잠', '자', '고', '싶', '다', '용가리'], - answer: true, -}; -const test2 = { - input: ['맛있는', '용가리치킨'], - answer: false, -}; -const test3 = { - input: ['고질라', '용가리 ', '울트라맨'], - answer: false, -}; - -describe('findWord', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); \ No newline at end of file diff --git a/Challenge/jybaek96/forEachFilter/README.md b/Challenge/jybaek96/forEachFilter/README.md deleted file mode 100644 index 6dcbc7c2..00000000 --- a/Challenge/jybaek96/forEachFilter/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소중 40 이상인 수만 뽑아 배열을 만드세요. diff --git a/Challenge/jybaek96/forEachFilter/solve.js b/Challenge/jybaek96/forEachFilter/solve.js deleted file mode 100644 index 744406f2..00000000 --- a/Challenge/jybaek96/forEachFilter/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.filter((item)=>item>=40); -} - -exports.solution = solution; diff --git a/Challenge/jybaek96/forEachFilter/solve.test.js b/Challenge/jybaek96/forEachFilter/solve.test.js deleted file mode 100644 index 3d73b25c..00000000 --- a/Challenge/jybaek96/forEachFilter/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: [100, 40], -}; - -describe('forEachFilter', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/jybaek96/forEachFilterIsNaN/README.md b/Challenge/jybaek96/forEachFilterIsNaN/README.md deleted file mode 100644 index 570c030e..00000000 --- a/Challenge/jybaek96/forEachFilterIsNaN/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소중 숫자인 원소만 뽑아 배열을 만드세요. diff --git a/Challenge/jybaek96/forEachFilterIsNaN/solve.js b/Challenge/jybaek96/forEachFilterIsNaN/solve.js deleted file mode 100644 index 44f15951..00000000 --- a/Challenge/jybaek96/forEachFilterIsNaN/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.filter(item => typeof item === "number"); -} - -exports.solution = solution; diff --git a/Challenge/jybaek96/forEachFilterIsNaN/solve.test.js b/Challenge/jybaek96/forEachFilterIsNaN/solve.test.js deleted file mode 100644 index d6e118bb..00000000 --- a/Challenge/jybaek96/forEachFilterIsNaN/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 40, '라매', '개발자', 51.5, 'a', 88], - answer: [1, 40, 51.5, 88], -}; - -const test2 = { - input: [1, 2, 3, '4', 5, '6'], - answer: [1, 2, 3, 5], -}; - -const test3 = { - input: [-3, -2, -1, 0, 1, 2, 3], - answer: [-3, -2, -1, 0, 1, 2, 3], -}; - -describe('forEachFilterIsNaN', () => { - test('test1: 숫자,문자 판별', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2: 문자로된 숫자 판별', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3: 음수 양수 포함', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); \ No newline at end of file diff --git a/Challenge/jybaek96/forEachMap/README.md b/Challenge/jybaek96/forEachMap/README.md deleted file mode 100644 index 1e8e03c8..00000000 --- a/Challenge/jybaek96/forEachMap/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -forEach 메소드를 사용해서 배열의 각 원소 끝에 '%'를 붙인 문자열 배열을 출력하세요 diff --git a/Challenge/jybaek96/forEachMap/solve.js b/Challenge/jybaek96/forEachMap/solve.js deleted file mode 100644 index 1434edda..00000000 --- a/Challenge/jybaek96/forEachMap/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -// write your codes -function solution(inputArray) { - inputArray.forEach((item, index, arr) => { - arr[index] = `${item}%`; - }); - return inputArray; -} - -exports.solution = solution; diff --git a/Challenge/jybaek96/forEachMap/solve.test.js b/Challenge/jybaek96/forEachMap/solve.test.js deleted file mode 100644 index de4868c6..00000000 --- a/Challenge/jybaek96/forEachMap/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: ['100%', '10%', '20%', '40%'], -}; - -describe('forEachMap', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/jybaek96/forEachReduce/README.md b/Challenge/jybaek96/forEachReduce/README.md deleted file mode 100644 index a984df2d..00000000 --- a/Challenge/jybaek96/forEachReduce/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -forEach 메소드를 사용해서 배열의 총 합을 출력하는 코드를 작성하세요 diff --git a/Challenge/jybaek96/forEachReduce/solve.js b/Challenge/jybaek96/forEachReduce/solve.js deleted file mode 100644 index 1506a81e..00000000 --- a/Challenge/jybaek96/forEachReduce/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -// write your codes -function solution(inputArray) { - let result = 0; - inputArray.forEach(element => result += element); - return result; -} - -exports.solution = solution; diff --git a/Challenge/jybaek96/forEachReduce/solve.test.js b/Challenge/jybaek96/forEachReduce/solve.test.js deleted file mode 100644 index 397e4b50..00000000 --- a/Challenge/jybaek96/forEachReduce/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: 170, -}; - -const test2 = { - input: [120, -20, -30, 0, 15], - answer: 85, -}; - -const test3 = { - input: [-10, -20, -30], - answer: -60, -}; - -describe('forEachReduce', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2: 음수가 포함된 계산', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3: 음수만 존재하는 계산', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/jybaek96/mapAddPercent/README.md b/Challenge/jybaek96/mapAddPercent/README.md deleted file mode 100644 index 75e73042..00000000 --- a/Challenge/jybaek96/mapAddPercent/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -map 메소드를 사용해 배열 각각 숫자 뒤에 %를 붙인 문자열을 만드세요 diff --git a/Challenge/jybaek96/mapAddPercent/solve.js b/Challenge/jybaek96/mapAddPercent/solve.js deleted file mode 100644 index f9832889..00000000 --- a/Challenge/jybaek96/mapAddPercent/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.map((item) => `${item}%`); -} - -exports.solution = solution; diff --git a/Challenge/jybaek96/mapAddPercent/solve.test.js b/Challenge/jybaek96/mapAddPercent/solve.test.js deleted file mode 100644 index dac1b3cc..00000000 --- a/Challenge/jybaek96/mapAddPercent/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: ['100%', '10%', '20%', '40%'], -}; - -describe('mapAddPercent', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/jybaek96/mapAppendOrder/README.md b/Challenge/jybaek96/mapAppendOrder/README.md deleted file mode 100644 index 1435623a..00000000 --- a/Challenge/jybaek96/mapAppendOrder/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열의 값을 name 프로퍼티에 넣고 몇번째 원소인지를 order에 넣은 객체의 배열을 출력하세요 diff --git a/Challenge/jybaek96/mapAppendOrder/solve.js b/Challenge/jybaek96/mapAppendOrder/solve.js deleted file mode 100644 index 668e02c4..00000000 --- a/Challenge/jybaek96/mapAppendOrder/solve.js +++ /dev/null @@ -1,12 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.map((item, idx) => { - let obj = {}; - obj["name"] = item; - obj["order"] = idx+1; - return obj; - }); - -} - -exports.solution = solution; diff --git a/Challenge/jybaek96/mapAppendOrder/solve.test.js b/Challenge/jybaek96/mapAppendOrder/solve.test.js deleted file mode 100644 index e08db10c..00000000 --- a/Challenge/jybaek96/mapAppendOrder/solve.test.js +++ /dev/null @@ -1,16 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: ['홍길동', '둘리', '루피'], - answer: [ - { name: '홍길동', order: 1 }, - { name: '둘리', order: 2 }, - { name: '루피', order: 3 }, - ], -}; - -describe('mapAppendOrder', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/jybaek96/reduceMaxValueNIndex/README.md b/Challenge/jybaek96/reduceMaxValueNIndex/README.md deleted file mode 100644 index 965bdec6..00000000 --- a/Challenge/jybaek96/reduceMaxValueNIndex/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -reduce 메소드를 사용해 최댓값의 값을 maxValue에, 해당 값의 index를 idx에 넣은 객체를 출력하세요 diff --git a/Challenge/jybaek96/reduceMaxValueNIndex/solve.js b/Challenge/jybaek96/reduceMaxValueNIndex/solve.js deleted file mode 100644 index 7d2180c3..00000000 --- a/Challenge/jybaek96/reduceMaxValueNIndex/solve.js +++ /dev/null @@ -1,10 +0,0 @@ -// write your codes -function solution(inputArray) { - let obj = {}; - const maxNum = inputArray.reduce((acc, cur) => acc > cur ? acc : cur, inputArray[0]); - obj["maxValue"] = maxNum - obj["idx"] = inputArray.indexOf(maxNum); - return obj; -} - -exports.solution = solution; diff --git a/Challenge/jybaek96/reduceMaxValueNIndex/solve.test.js b/Challenge/jybaek96/reduceMaxValueNIndex/solve.test.js deleted file mode 100644 index 0daef5b8..00000000 --- a/Challenge/jybaek96/reduceMaxValueNIndex/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [3, 29, 38, 12, 57, 74, 40, 85, 61], - answer: { maxValue: 85, idx: 7 }, -}; - -const test2 = { - input: [-24, -2, -13, -49, -999999, -17], - answer: { maxValue: -2, idx: 1 }, -}; -//최댓값이 중복일 때에는 먼저 나온 최댓값의 인덱스를 유지하도록 설정하였습니다. -const test3 = { - input: [2, -20, 21, -874, 99, -16, -29, 99], - answer: { maxValue: 99, idx: 4 }, -}; - -describe('reduceMaxValueNIndex', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2 : 음수 테스트', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3 : 중복된 최대값 테스트', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/jybaek96/reduceNameNickname/README.md b/Challenge/jybaek96/reduceNameNickname/README.md deleted file mode 100644 index b6920e05..00000000 --- a/Challenge/jybaek96/reduceNameNickname/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -입력받은 객채배열의 nickname을 key, name을 value로 하는 객체를 출력하세요 diff --git a/Challenge/jybaek96/reduceNameNickname/solve.js b/Challenge/jybaek96/reduceNameNickname/solve.js deleted file mode 100644 index e1f87603..00000000 --- a/Challenge/jybaek96/reduceNameNickname/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.reduce((acc, cur) => { - acc[cur.nickname] = cur.name; - return acc; - }, {}); -} - -exports.solution = solution; diff --git a/Challenge/jybaek96/reduceNameNickname/solve.test.js b/Challenge/jybaek96/reduceNameNickname/solve.test.js deleted file mode 100644 index 67b74529..00000000 --- a/Challenge/jybaek96/reduceNameNickname/solve.test.js +++ /dev/null @@ -1,25 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '홍길동', - nickname: 'hong', - }, - { - name: '둘리', - nickname: '2li', - }, - { - name: '오스트랄로피테쿠스', - nickname: '1Cin', - }, - ], - answer: { hong: '홍길동', '2li': '둘리', '1Cin': '오스트랄로피테쿠스' }, -}; - -describe('reduceNameNickname', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/jybaek96/reduceSum/README.md b/Challenge/jybaek96/reduceSum/README.md deleted file mode 100644 index 8c607eb2..00000000 --- a/Challenge/jybaek96/reduceSum/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -reduce 메소드를 사용해서 배열의 모든 수의 합을 구하세요. - -## Expected Output - -106 diff --git a/Challenge/jybaek96/reduceSum/solve.js b/Challenge/jybaek96/reduceSum/solve.js deleted file mode 100644 index 6a4356ae..00000000 --- a/Challenge/jybaek96/reduceSum/solve.js +++ /dev/null @@ -1,5 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.reduce((prev, cur) => prev + cur); -} -exports.solution = solution; diff --git a/Challenge/jybaek96/reduceSum/solve.test.js b/Challenge/jybaek96/reduceSum/solve.test.js deleted file mode 100644 index 046c40cb..00000000 --- a/Challenge/jybaek96/reduceSum/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [10, 3, 20, 5, 8, 60], - answer: 106, -}; - -describe('reduceSum', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/jybaek96/sortByPrice/README.md b/Challenge/jybaek96/sortByPrice/README.md deleted file mode 100644 index b1ccf70e..00000000 --- a/Challenge/jybaek96/sortByPrice/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 - -## Expected Output - -[ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 } -] diff --git a/Challenge/jybaek96/sortByPrice/solve.js b/Challenge/jybaek96/sortByPrice/solve.js deleted file mode 100644 index ec6e2bba..00000000 --- a/Challenge/jybaek96/sortByPrice/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.sort((a,b) => a.price - b.price); -} - -exports.solution = solution; diff --git a/Challenge/jybaek96/sortByPrice/solve.test.js b/Challenge/jybaek96/sortByPrice/solve.test.js deleted file mode 100644 index 3d6a3431..00000000 --- a/Challenge/jybaek96/sortByPrice/solve.test.js +++ /dev/null @@ -1,34 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '사과', - price: 1000, - }, - { - name: '수박', - price: 5000, - }, - { - name: '당근', - price: 2000, - }, - { - name: '참외', - price: 10000, - }, - ], - answer: [ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 }, - ], -}; - -describe('sortByPrice', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/jybaek96/sortByPriceAndQuantity/README.md b/Challenge/jybaek96/sortByPriceAndQuantity/README.md deleted file mode 100644 index 41cd5c95..00000000 --- a/Challenge/jybaek96/sortByPriceAndQuantity/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 -만약 price가 같다면 quantity기준으로 오름차순 정렬하세요 - -## Expected Output - -[ - { name: '사과', price: 1000, quantity: 2 }, - { name: '오이', price: 2000, quantity: 49 }, - { name: '당근', price: 2000, quantity: 50 }, - { name: '참외', price: 5000, quantity: 10 }, - { name: '수박', price: 5000, quantity: 20 } -] diff --git a/Challenge/jybaek96/sortByPriceAndQuantity/solve.js b/Challenge/jybaek96/sortByPriceAndQuantity/solve.js deleted file mode 100644 index 577cfca5..00000000 --- a/Challenge/jybaek96/sortByPriceAndQuantity/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.sort((a,b) => a.price - b.price || a.quantity - b.quantity); -} - -exports.solution = solution; \ No newline at end of file diff --git a/Challenge/jybaek96/sortByPriceAndQuantity/solve.test.js b/Challenge/jybaek96/sortByPriceAndQuantity/solve.test.js deleted file mode 100644 index 424f42b7..00000000 --- a/Challenge/jybaek96/sortByPriceAndQuantity/solve.test.js +++ /dev/null @@ -1,44 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '사과', - price: 1000, - quantity: 2, - }, - { - name: '수박', - price: 5000, - quantity: 20, - }, - { - name: '당근', - price: 2000, - quantity: 50, - }, - { - name: '참외', - price: 5000, - quantity: 10, - }, - { - name: '오이', - price: 2000, - quantity: 49, - }, - ], - answer: [ - { name: '사과', price: 1000, quantity: 2 }, - { name: '오이', price: 2000, quantity: 49 }, - { name: '당근', price: 2000, quantity: 50 }, - { name: '참외', price: 5000, quantity: 10 }, - { name: '수박', price: 5000, quantity: 20 }, - ], -}; - -describe('sortByPriceAndQuantity', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/kimmsoll/everyArray/README.md b/Challenge/kimmsoll/everyArray/README.md deleted file mode 100644 index 442558f6..00000000 --- a/Challenge/kimmsoll/everyArray/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -every를 이용해서 모든 원소가 짝수인지 아닌지를 판별하세요 - -## Expected Output - -true \ No newline at end of file diff --git a/Challenge/kimmsoll/everyArray/solve.js b/Challenge/kimmsoll/everyArray/solve.js deleted file mode 100644 index 902194bb..00000000 --- a/Challenge/kimmsoll/everyArray/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -function solution(inputArray) { - const isEven = (cur) => (cur)%2 === 0; - return inputArray.every(isEven); -} - -exports.solution = solution; diff --git a/Challenge/kimmsoll/everyArray/solve.test.js b/Challenge/kimmsoll/everyArray/solve.test.js deleted file mode 100644 index b03e4791..00000000 --- a/Challenge/kimmsoll/everyArray/solve.test.js +++ /dev/null @@ -1,21 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [2, 4, 6, 8, 10], - answer: true, -}; - -const test2 = { - input: [2, 3, 6, 8, 10], - answer: false, -}; - -describe('everyArray', () => { - test('모두 짝수면 true여야 한다.', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - - test('홀수가 있으면 false여야 한다.', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); -}); diff --git a/Challenge/kimmsoll/expDivOdd/README.md b/Challenge/kimmsoll/expDivOdd/README.md deleted file mode 100644 index c07ab10b..00000000 --- a/Challenge/kimmsoll/expDivOdd/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -제곱한 후 3으로 나눈 나머지가 홀수인 것 을 뽑은 배열의 총 합을 구하세요. diff --git a/Challenge/kimmsoll/expDivOdd/solve.js b/Challenge/kimmsoll/expDivOdd/solve.js deleted file mode 100644 index 9b0bbc0b..00000000 --- a/Challenge/kimmsoll/expDivOdd/solve.js +++ /dev/null @@ -1,7 +0,0 @@ -function solution(inputArray) { - let arr = inputArray.map((a)=>Math.pow(a,2)); - let answer = arr.filter((a)=> (a%3)%2 !== 0); - return answer.reduce((pre, cur)=> pre+cur); -} - -exports.solution = solution; diff --git a/Challenge/kimmsoll/expDivOdd/solve.test.js b/Challenge/kimmsoll/expDivOdd/solve.test.js deleted file mode 100644 index ca37fcc3..00000000 --- a/Challenge/kimmsoll/expDivOdd/solve.test.js +++ /dev/null @@ -1,21 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 7, 3, 4, 6], - answer: 66, -}; - -const test2 = { - input: [2, 3, 6, 8, 10], - answer: 168, -}; - -describe('everyArray', () => { - test('1, 7, 3, 4, 6', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - - test('2, 3, 6, 8, 10', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); -}); diff --git a/Challenge/kimmsoll/figureSkating/README.md b/Challenge/kimmsoll/figureSkating/README.md deleted file mode 100644 index 54b85fbd..00000000 --- a/Challenge/kimmsoll/figureSkating/README.md +++ /dev/null @@ -1,35 +0,0 @@ -## 설명 - -점수를 계산해서 점수가 높은 순으로 name과 score를 가진 객체의 배열을 출력하세요. -단 실격자는 출력하지 않습니다. - -### 피겨 점수 기준 - -피겨 점수는 ‘기술점수(TES)+예술점수(PCS)-감점’으로 구성된다. - -기술점수(TES·Total Element Score)는 기본점수에 수행점수(GOE·Grade Of Execution)를 합산해 도출한다. - -심판은 선수들이 점프와 스핀의 기술을 제대로 수행하는지 살핀다. 점프에선 회전수를 제대로 지켰는지, 에지를 제대로 사용했는지에 따라 ‘롱 에지’(잘못된 에지 사용)나 ‘다운그레이드’(난이도 하락), ‘어텐션’(주의) 등의 판정을 내린다. 스핀과 스텝시퀀스에 붙는 레벨(1~4)도 이들이 결정한다. - -9명의 심판은 선수들이 미리 제출한 연기 구성표를 기준으로 과제별 기본점수에서 가·감점을 한다. 이른바 ‘GOE’라 불리는 수행점수다. - -쇼트프로그램은 점프 3개, 스핀 3개, 스텝 1개의 수행과제가 반드시 포함돼야 한다. - -예술점수(PCS·Total Program Component Score)는 프로그램의 완성도에 영향을 미치는 스케이팅 기술·동작의 연결·연기·안무·곡 해석 등 5가지를 평가한다. - -마지막으로 감점이 반영된다. 감점 항목이 발생할 때마다 1점씩 감점된다. - -원문보기: -http://news.khan.co.kr/kh_news/khan_art_view.html?art_id=201402172146545#csidx6329aebb6a02152bca884614a7f0544 - -### 판정 기준 - -- 점수가 가장 높은 사람이 1등이다. -- 점수는 기술점수(TES) + 예술점수(PCS) - 감점 으로 구성된다. -- 기술점수(TES)는 기본점수 \* 수행점수(GOE)를 합산해 도출한다. -- 필수 수행과제를 수행하지 못했을 시 실격이다. - -### 필수 수행과제 - -- 쇼트프로그램은 점프 3개, 스핀 3개, 스텝 1개의 수행과제가 반드시 포함돼야 한다. -- 점프와 스핀을 4번 이상 수행했을 시 가장 잘한 3개를 기준으로 한다. diff --git a/Challenge/kimmsoll/figureSkating/solve.js b/Challenge/kimmsoll/figureSkating/solve.js deleted file mode 100644 index 2f65864a..00000000 --- a/Challenge/kimmsoll/figureSkating/solve.js +++ /dev/null @@ -1,52 +0,0 @@ -// 기본 점수 -const baseScore = { - jump: 10, - spin: 20, - step: 15, -}; - -const baseAssignment = { - jump: 3, - spin: 3, - step: 1, -}; - -// write your codes -function solution(inputArray) { - // 실격자 배제한 새로운 배열 생성 - let goToNext = inputArray.filter((student) => { - return student.goe.jump.length >= "3" - && student.goe.spin.length >= "3" - && student.goe.step.length >= "1" - }); - - // jump, spin 점수가 3개 이상이면 내림차순 정렬 후 3개로 잘라서 합을 구함 - goToNext.map((student)=>{ - let jumpScore = student.goe.jump; - let spinScore = student.goe.spin; - if(jumpScore.length>3){ - // 내림차순 정렬 후 index 3부터 뒷요소 모두 제거 - jumpScore.sort((a,b) => b-a).splice(3); - } - if(spinScore.length>3){ - spinScore.sort((a,b)=>b-a).splice(3); - } - student.goe.jump = jumpScore.reduce((a,b)=>a+b); - student.goe.spin = spinScore.reduce((a,b)=>a+b); - }); - // 총 score 계산 - goToNext.forEach((student)=>{ - let score = student.goe.jump * baseScore.jump + - student.goe.spin * baseScore.spin + - student.goe.step * baseScore.step + - student.pcs - student.penalty; - student["score"] = score; - }); - // score 기준으로 내림차순 정렬 - goToNext.sort((a,b)=>b.score-a.score); - // answer 구함 - let answer = goToNext.map((student)=>({"name":student.name, "score":student.score})); - return answer; -} - -exports.solution = solution; diff --git a/Challenge/kimmsoll/figureSkating/solve.test.js b/Challenge/kimmsoll/figureSkating/solve.test.js deleted file mode 100644 index 7bceadf1..00000000 --- a/Challenge/kimmsoll/figureSkating/solve.test.js +++ /dev/null @@ -1,46 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '김연아', - goe: { - jump: [10, 9, 10], - spin: [10, 10, 10], - step: [9], - }, - pcs: 30, - penalty: 0, - }, - { - name: '피겨의 신', - goe: { - jump: [10000, 10000], - spin: [10000, 10000, 10000], - step: [10000], - }, - pcs: 100000, - penalty: 0, - }, - { - name: '아사다 마오', - goe: { - jump: [9, 6, 8, 9], - spin: [9, 9, 9], - step: [8], - }, - pcs: 29, - penalty: 10, - }, - ], - answer: [ - { name: '김연아', score: 1055 }, - { name: '아사다 마오', score: 939 }, - ], -}; - -describe('everyArray', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/kimmsoll/filterAge/README.md b/Challenge/kimmsoll/filterAge/README.md deleted file mode 100644 index 873a15c1..00000000 --- a/Challenge/kimmsoll/filterAge/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소의 age가 30이상 50미만인 사람만 있는 객체의 배열을 만드세요 diff --git a/Challenge/kimmsoll/filterAge/solve.js b/Challenge/kimmsoll/filterAge/solve.js deleted file mode 100644 index 47243762..00000000 --- a/Challenge/kimmsoll/filterAge/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.filter(item => item.age>=30 && item.age<50); -} - -exports.solution = solution; diff --git a/Challenge/kimmsoll/filterAge/solve.test.js b/Challenge/kimmsoll/filterAge/solve.test.js deleted file mode 100644 index b9081601..00000000 --- a/Challenge/kimmsoll/filterAge/solve.test.js +++ /dev/null @@ -1,32 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '영미', - age: 25, - }, - { - name: '일미', - age: 35, - }, - { - name: '이미', - age: 45, - }, - { - name: '삼미', - age: 55, - }, - ], - answer: [ - { name: '일미', age: 35 }, - { name: '이미', age: 45 }, - ], -}; - -describe('filterAge', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/kimmsoll/filterIntersection/README.md b/Challenge/kimmsoll/filterIntersection/README.md deleted file mode 100644 index d7c9ad39..00000000 --- a/Challenge/kimmsoll/filterIntersection/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# 문제제목 - -## 설명 - -두 배열의 교집합을 출력하세요! diff --git a/Challenge/kimmsoll/filterIntersection/solve.js b/Challenge/kimmsoll/filterIntersection/solve.js deleted file mode 100644 index ee5b7765..00000000 --- a/Challenge/kimmsoll/filterIntersection/solve.js +++ /dev/null @@ -1,5 +0,0 @@ -function solution(inputArray1, inputArray2) { - return inputArray1.filter((item)=>inputArray2.includes(item)); -} - -exports.solution = solution; diff --git a/Challenge/kimmsoll/filterIntersection/solve.test.js b/Challenge/kimmsoll/filterIntersection/solve.test.js deleted file mode 100644 index 576cbc86..00000000 --- a/Challenge/kimmsoll/filterIntersection/solve.test.js +++ /dev/null @@ -1,15 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: { - A: [1, 2, 3, 4, 5], - B: [3, 4, 5, 6, 7], - }, - answer: [3, 4, 5], -}; - -describe('filterIntersection', () => { - test('test1', () => { - expect(solution(test1.input.A, test1.input.B)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/kimmsoll/filterOdd/README.md b/Challenge/kimmsoll/filterOdd/README.md deleted file mode 100644 index cf9eda79..00000000 --- a/Challenge/kimmsoll/filterOdd/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -홀수만 뽑아 배열로 만드세요 diff --git a/Challenge/kimmsoll/filterOdd/solve.js b/Challenge/kimmsoll/filterOdd/solve.js deleted file mode 100644 index c2df70e5..00000000 --- a/Challenge/kimmsoll/filterOdd/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.filter((item)=> item%2 !== 0); -} - -exports.solution = solution; diff --git a/Challenge/kimmsoll/filterOdd/solve.test.js b/Challenge/kimmsoll/filterOdd/solve.test.js deleted file mode 100644 index 8cfd7f5a..00000000 --- a/Challenge/kimmsoll/filterOdd/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [4, 2, 5, 1, 3], - answer: [5, 1, 3], -}; - -const test2 = { - input: [4, 2, 6, 8, 50, 16], - answer: [], -}; - -const test3 = { - input: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], - answer: [1, 3, 5, 7, 9, 11], -}; - -describe('filterOdd', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/kimmsoll/findWord/README.md b/Challenge/kimmsoll/findWord/README.md deleted file mode 100644 index 8ef123f4..00000000 --- a/Challenge/kimmsoll/findWord/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -용가리라는 단어가 있으면 true 없으면 false를 출력 - -## Expected Output - -true diff --git a/Challenge/kimmsoll/findWord/solve.js b/Challenge/kimmsoll/findWord/solve.js deleted file mode 100644 index d85b7ba5..00000000 --- a/Challenge/kimmsoll/findWord/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.includes("용가리"); -} - -exports.solution = solution; diff --git a/Challenge/kimmsoll/findWord/solve.test.js b/Challenge/kimmsoll/findWord/solve.test.js deleted file mode 100644 index 804114f6..00000000 --- a/Challenge/kimmsoll/findWord/solve.test.js +++ /dev/null @@ -1,26 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: ['잠', '자', '고', '싶', '다', '용가리'], - answer: true, -}; -const test2 = { - input: ['맛있는', '용가리치킨'], - answer: false, -}; -const test3 = { - input: ['고질라', '용가리 ', '울트라맨'], - answer: false, -}; - -describe('findWord', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); \ No newline at end of file diff --git a/Challenge/kimmsoll/forEachFilter/README.md b/Challenge/kimmsoll/forEachFilter/README.md deleted file mode 100644 index 6dcbc7c2..00000000 --- a/Challenge/kimmsoll/forEachFilter/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소중 40 이상인 수만 뽑아 배열을 만드세요. diff --git a/Challenge/kimmsoll/forEachFilter/solve.js b/Challenge/kimmsoll/forEachFilter/solve.js deleted file mode 100644 index 744406f2..00000000 --- a/Challenge/kimmsoll/forEachFilter/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.filter((item)=>item>=40); -} - -exports.solution = solution; diff --git a/Challenge/kimmsoll/forEachFilter/solve.test.js b/Challenge/kimmsoll/forEachFilter/solve.test.js deleted file mode 100644 index 3d73b25c..00000000 --- a/Challenge/kimmsoll/forEachFilter/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: [100, 40], -}; - -describe('forEachFilter', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/kimmsoll/forEachFilterIsNaN/README.md b/Challenge/kimmsoll/forEachFilterIsNaN/README.md deleted file mode 100644 index 570c030e..00000000 --- a/Challenge/kimmsoll/forEachFilterIsNaN/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소중 숫자인 원소만 뽑아 배열을 만드세요. diff --git a/Challenge/kimmsoll/forEachFilterIsNaN/solve.js b/Challenge/kimmsoll/forEachFilterIsNaN/solve.js deleted file mode 100644 index 3397fc7d..00000000 --- a/Challenge/kimmsoll/forEachFilterIsNaN/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.filter(item => (item) === Number(item)); -} - -exports.solution = solution; diff --git a/Challenge/kimmsoll/forEachFilterIsNaN/solve.test.js b/Challenge/kimmsoll/forEachFilterIsNaN/solve.test.js deleted file mode 100644 index d6e118bb..00000000 --- a/Challenge/kimmsoll/forEachFilterIsNaN/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 40, '라매', '개발자', 51.5, 'a', 88], - answer: [1, 40, 51.5, 88], -}; - -const test2 = { - input: [1, 2, 3, '4', 5, '6'], - answer: [1, 2, 3, 5], -}; - -const test3 = { - input: [-3, -2, -1, 0, 1, 2, 3], - answer: [-3, -2, -1, 0, 1, 2, 3], -}; - -describe('forEachFilterIsNaN', () => { - test('test1: 숫자,문자 판별', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2: 문자로된 숫자 판별', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3: 음수 양수 포함', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); \ No newline at end of file diff --git a/Challenge/kimmsoll/forEachMap/README.md b/Challenge/kimmsoll/forEachMap/README.md deleted file mode 100644 index 1e8e03c8..00000000 --- a/Challenge/kimmsoll/forEachMap/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -forEach 메소드를 사용해서 배열의 각 원소 끝에 '%'를 붙인 문자열 배열을 출력하세요 diff --git a/Challenge/kimmsoll/forEachMap/solve.js b/Challenge/kimmsoll/forEachMap/solve.js deleted file mode 100644 index 3d09075f..00000000 --- a/Challenge/kimmsoll/forEachMap/solve.js +++ /dev/null @@ -1,18 +0,0 @@ -// write your codes -function solution(inputArray) { - inputArray.forEach(function(item, idx, arr){ - arr[idx] = `${item}%`; - }); - return inputArray; -} - -exports.solution = solution; - -// let arr = ['가','나','다','라']; -// arr.forEach(function(item,index,arr2){ -// console.log(item,index,arr2[index+1]); -// }) -//첫번쨰 인수는 배열의 각각의 item -//두번쨰 인수는 배열의 index -//세번째 인수는 배열 그자체 - diff --git a/Challenge/kimmsoll/forEachMap/solve.test.js b/Challenge/kimmsoll/forEachMap/solve.test.js deleted file mode 100644 index de4868c6..00000000 --- a/Challenge/kimmsoll/forEachMap/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: ['100%', '10%', '20%', '40%'], -}; - -describe('forEachMap', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/kimmsoll/forEachReduce/README.md b/Challenge/kimmsoll/forEachReduce/README.md deleted file mode 100644 index a984df2d..00000000 --- a/Challenge/kimmsoll/forEachReduce/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -forEach 메소드를 사용해서 배열의 총 합을 출력하는 코드를 작성하세요 diff --git a/Challenge/kimmsoll/forEachReduce/solve.js b/Challenge/kimmsoll/forEachReduce/solve.js deleted file mode 100644 index c0d9e768..00000000 --- a/Challenge/kimmsoll/forEachReduce/solve.js +++ /dev/null @@ -1,10 +0,0 @@ -// write your codes -function solution(inputArray) { - let sum = 0; - inputArray.forEach((item) => { - sum += (item)*1; - }) - return sum; -} - -exports.solution = solution; diff --git a/Challenge/kimmsoll/forEachReduce/solve.test.js b/Challenge/kimmsoll/forEachReduce/solve.test.js deleted file mode 100644 index 397e4b50..00000000 --- a/Challenge/kimmsoll/forEachReduce/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: 170, -}; - -const test2 = { - input: [120, -20, -30, 0, 15], - answer: 85, -}; - -const test3 = { - input: [-10, -20, -30], - answer: -60, -}; - -describe('forEachReduce', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2: 음수가 포함된 계산', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3: 음수만 존재하는 계산', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/kimmsoll/mapAddPercent/README.md b/Challenge/kimmsoll/mapAddPercent/README.md deleted file mode 100644 index 75e73042..00000000 --- a/Challenge/kimmsoll/mapAddPercent/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -map 메소드를 사용해 배열 각각 숫자 뒤에 %를 붙인 문자열을 만드세요 diff --git a/Challenge/kimmsoll/mapAddPercent/solve.js b/Challenge/kimmsoll/mapAddPercent/solve.js deleted file mode 100644 index f84e8bc8..00000000 --- a/Challenge/kimmsoll/mapAddPercent/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.map((item)=>`${item}%`); -} - -exports.solution = solution; diff --git a/Challenge/kimmsoll/mapAddPercent/solve.test.js b/Challenge/kimmsoll/mapAddPercent/solve.test.js deleted file mode 100644 index dac1b3cc..00000000 --- a/Challenge/kimmsoll/mapAddPercent/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: ['100%', '10%', '20%', '40%'], -}; - -describe('mapAddPercent', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/kimmsoll/mapAppendOrder/README.md b/Challenge/kimmsoll/mapAppendOrder/README.md deleted file mode 100644 index 1435623a..00000000 --- a/Challenge/kimmsoll/mapAppendOrder/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열의 값을 name 프로퍼티에 넣고 몇번째 원소인지를 order에 넣은 객체의 배열을 출력하세요 diff --git a/Challenge/kimmsoll/mapAppendOrder/solve.js b/Challenge/kimmsoll/mapAppendOrder/solve.js deleted file mode 100644 index 26614a4d..00000000 --- a/Challenge/kimmsoll/mapAppendOrder/solve.js +++ /dev/null @@ -1,12 +0,0 @@ -// write your codes -function solution(inputArray) { - let newArr = inputArray.map((item)=>{ - let newObj = {}; - newObj["name"] = item; - newObj["order"] = inputArray.indexOf(item) +1; - return newObj; - }) - return newArr; -} - -exports.solution = solution; diff --git a/Challenge/kimmsoll/mapAppendOrder/solve.test.js b/Challenge/kimmsoll/mapAppendOrder/solve.test.js deleted file mode 100644 index e08db10c..00000000 --- a/Challenge/kimmsoll/mapAppendOrder/solve.test.js +++ /dev/null @@ -1,16 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: ['홍길동', '둘리', '루피'], - answer: [ - { name: '홍길동', order: 1 }, - { name: '둘리', order: 2 }, - { name: '루피', order: 3 }, - ], -}; - -describe('mapAppendOrder', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/kimmsoll/recommendAd/README.md b/Challenge/kimmsoll/recommendAd/README.md deleted file mode 100644 index 132e8800..00000000 --- a/Challenge/kimmsoll/recommendAd/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# 문제제목 - -사용자가 안 본 광고는? - -## 설명 - -유튜브는 사용자가 프리미엄 회원이 아닌 경우 영상 시작이나 중간에 광고가 나오도록 설정되어 있습니다. - -[2020년 유튜브 인기 광고](https://www.thinkwithgoogle.com/intl/ko-kr/marketing-strategies/video/%EB%8C%80%ED%95%9C%EB%AF%BC%EA%B5%AD-youtube-%EC%9D%B8%EA%B8%B0-%EA%B4%91%EA%B3%A0%EC%98%81%EC%83%81-2020%EB%85%84-%EC%97%B0%EB%A7%90%EA%B2%B0%EC%82%B0/)는 총 열 편으로, 사용자의 일주일간 광고 시청 이력을 통해 해당 사용자가 일주일 동안 안 본 광고를 그 다음주에 노출함으로써 광고들이 사용자에게 골고루 노출되길 원합니다. - -유저가 매일 유튜브에 접속하여 하루 한 편 이상의 광고를 보았다고 가정할 때, 이 유저가 안 본 광고는 무엇인지 출력해주세요. - -## Expected Output - -[ '동원F&B' ] diff --git a/Challenge/kimmsoll/recommendAd/solve.js b/Challenge/kimmsoll/recommendAd/solve.js deleted file mode 100644 index 844f7abe..00000000 --- a/Challenge/kimmsoll/recommendAd/solve.js +++ /dev/null @@ -1,21 +0,0 @@ -const userHistory = [ - { date: '2020-11-03', watched: ['KT', 'BBQ'] }, - { date: '2020-11-04', watched: ['정관장', 'KT', '딱좋은데이'] }, - { date: '2020-11-05', watched: ['그랑사가', '농심'] }, - { date: '2020-11-06', watched: ['BBQ'] }, - { date: '2020-11-07', watched: ['쌍용자동차', 'BBQ', 'KT'] }, - { date: '2020-11-08', watched: ['켈로그코리아', '빙그레'] }, - { date: '2020-11-09', watched: ['KT', '그랑사가', '빙그레'] }, -]; - -// write your codes -function solution(inputArray) { - let watches = userHistory.map((item)=>item["watched"]); - let watchSet = new Set(); - watches.forEach((watch)=>{ - watch.forEach(item=>watchSet.add(item)); - }) - return inputArray.filter(item => !watchSet.has(item)); -} - -exports.solution = solution; diff --git a/Challenge/kimmsoll/recommendAd/solve.test.js b/Challenge/kimmsoll/recommendAd/solve.test.js deleted file mode 100644 index 8a0f6464..00000000 --- a/Challenge/kimmsoll/recommendAd/solve.test.js +++ /dev/null @@ -1,23 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - '동원F&B', - '정관장', - 'KT', - 'BBQ', - '그랑사가', - '농심', - '딱좋은데이', - '빙그레', - '쌍용자동차', - '켈로그코리아', - ], - answer: ['동원F&B'], -}; - -describe('recommendAd', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/kimmsoll/reduceMaxValueNIndex/README.md b/Challenge/kimmsoll/reduceMaxValueNIndex/README.md deleted file mode 100644 index 965bdec6..00000000 --- a/Challenge/kimmsoll/reduceMaxValueNIndex/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -reduce 메소드를 사용해 최댓값의 값을 maxValue에, 해당 값의 index를 idx에 넣은 객체를 출력하세요 diff --git a/Challenge/kimmsoll/reduceMaxValueNIndex/solve.js b/Challenge/kimmsoll/reduceMaxValueNIndex/solve.js deleted file mode 100644 index 1b308043..00000000 --- a/Challenge/kimmsoll/reduceMaxValueNIndex/solve.js +++ /dev/null @@ -1,10 +0,0 @@ -// write your codes -function solution(inputArray) { - const maxValue = inputArray.reduce((prev, curr) => prev > curr ? prev : curr); - const newObj = {}; - newObj["maxValue"] = maxValue; - newObj["idx"] = inputArray.indexOf(maxValue); - return newObj; -} - -exports.solution = solution; diff --git a/Challenge/kimmsoll/reduceMaxValueNIndex/solve.test.js b/Challenge/kimmsoll/reduceMaxValueNIndex/solve.test.js deleted file mode 100644 index 0daef5b8..00000000 --- a/Challenge/kimmsoll/reduceMaxValueNIndex/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [3, 29, 38, 12, 57, 74, 40, 85, 61], - answer: { maxValue: 85, idx: 7 }, -}; - -const test2 = { - input: [-24, -2, -13, -49, -999999, -17], - answer: { maxValue: -2, idx: 1 }, -}; -//최댓값이 중복일 때에는 먼저 나온 최댓값의 인덱스를 유지하도록 설정하였습니다. -const test3 = { - input: [2, -20, 21, -874, 99, -16, -29, 99], - answer: { maxValue: 99, idx: 4 }, -}; - -describe('reduceMaxValueNIndex', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2 : 음수 테스트', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3 : 중복된 최대값 테스트', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/kimmsoll/reduceNameNickname/README.md b/Challenge/kimmsoll/reduceNameNickname/README.md deleted file mode 100644 index b6920e05..00000000 --- a/Challenge/kimmsoll/reduceNameNickname/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -입력받은 객채배열의 nickname을 key, name을 value로 하는 객체를 출력하세요 diff --git a/Challenge/kimmsoll/reduceNameNickname/solve.js b/Challenge/kimmsoll/reduceNameNickname/solve.js deleted file mode 100644 index d24e2ccc..00000000 --- a/Challenge/kimmsoll/reduceNameNickname/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -// write your codes -function solution(inputArray) { - let newObj = {}; - inputArray.forEach((obj) => newObj[obj["nickname"]] = obj["name"]); - return newObj; -} - -exports.solution = solution; diff --git a/Challenge/kimmsoll/reduceNameNickname/solve.test.js b/Challenge/kimmsoll/reduceNameNickname/solve.test.js deleted file mode 100644 index 67b74529..00000000 --- a/Challenge/kimmsoll/reduceNameNickname/solve.test.js +++ /dev/null @@ -1,25 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '홍길동', - nickname: 'hong', - }, - { - name: '둘리', - nickname: '2li', - }, - { - name: '오스트랄로피테쿠스', - nickname: '1Cin', - }, - ], - answer: { hong: '홍길동', '2li': '둘리', '1Cin': '오스트랄로피테쿠스' }, -}; - -describe('reduceNameNickname', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/kimmsoll/reduceSum/README.md b/Challenge/kimmsoll/reduceSum/README.md deleted file mode 100644 index 8c607eb2..00000000 --- a/Challenge/kimmsoll/reduceSum/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -reduce 메소드를 사용해서 배열의 모든 수의 합을 구하세요. - -## Expected Output - -106 diff --git a/Challenge/kimmsoll/reduceSum/solve.js b/Challenge/kimmsoll/reduceSum/solve.js deleted file mode 100644 index 122a5e0d..00000000 --- a/Challenge/kimmsoll/reduceSum/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.reduce((prev, cur) => prev + cur); -} - -exports.solution = solution; diff --git a/Challenge/kimmsoll/reduceSum/solve.test.js b/Challenge/kimmsoll/reduceSum/solve.test.js deleted file mode 100644 index 046c40cb..00000000 --- a/Challenge/kimmsoll/reduceSum/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [10, 3, 20, 5, 8, 60], - answer: 106, -}; - -describe('reduceSum', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/kimmsoll/sortByPrice/README.md b/Challenge/kimmsoll/sortByPrice/README.md deleted file mode 100644 index b1ccf70e..00000000 --- a/Challenge/kimmsoll/sortByPrice/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 - -## Expected Output - -[ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 } -] diff --git a/Challenge/kimmsoll/sortByPrice/solve.js b/Challenge/kimmsoll/sortByPrice/solve.js deleted file mode 100644 index ec6e2bba..00000000 --- a/Challenge/kimmsoll/sortByPrice/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.sort((a,b) => a.price - b.price); -} - -exports.solution = solution; diff --git a/Challenge/kimmsoll/sortByPrice/solve.test.js b/Challenge/kimmsoll/sortByPrice/solve.test.js deleted file mode 100644 index 3d6a3431..00000000 --- a/Challenge/kimmsoll/sortByPrice/solve.test.js +++ /dev/null @@ -1,34 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '사과', - price: 1000, - }, - { - name: '수박', - price: 5000, - }, - { - name: '당근', - price: 2000, - }, - { - name: '참외', - price: 10000, - }, - ], - answer: [ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 }, - ], -}; - -describe('sortByPrice', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/kimmsoll/sortByPriceAndQuantity/README.md b/Challenge/kimmsoll/sortByPriceAndQuantity/README.md deleted file mode 100644 index 41cd5c95..00000000 --- a/Challenge/kimmsoll/sortByPriceAndQuantity/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 -만약 price가 같다면 quantity기준으로 오름차순 정렬하세요 - -## Expected Output - -[ - { name: '사과', price: 1000, quantity: 2 }, - { name: '오이', price: 2000, quantity: 49 }, - { name: '당근', price: 2000, quantity: 50 }, - { name: '참외', price: 5000, quantity: 10 }, - { name: '수박', price: 5000, quantity: 20 } -] diff --git a/Challenge/kimmsoll/sortByPriceAndQuantity/solve.js b/Challenge/kimmsoll/sortByPriceAndQuantity/solve.js deleted file mode 100644 index e5755fec..00000000 --- a/Challenge/kimmsoll/sortByPriceAndQuantity/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.sort((a,b)=> a.price - b.price || a.quantity - b.quantity); -} - -exports.solution = solution; diff --git a/Challenge/kimmsoll/sortByPriceAndQuantity/solve.test.js b/Challenge/kimmsoll/sortByPriceAndQuantity/solve.test.js deleted file mode 100644 index 424f42b7..00000000 --- a/Challenge/kimmsoll/sortByPriceAndQuantity/solve.test.js +++ /dev/null @@ -1,44 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '사과', - price: 1000, - quantity: 2, - }, - { - name: '수박', - price: 5000, - quantity: 20, - }, - { - name: '당근', - price: 2000, - quantity: 50, - }, - { - name: '참외', - price: 5000, - quantity: 10, - }, - { - name: '오이', - price: 2000, - quantity: 49, - }, - ], - answer: [ - { name: '사과', price: 1000, quantity: 2 }, - { name: '오이', price: 2000, quantity: 49 }, - { name: '당근', price: 2000, quantity: 50 }, - { name: '참외', price: 5000, quantity: 10 }, - { name: '수박', price: 5000, quantity: 20 }, - ], -}; - -describe('sortByPriceAndQuantity', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/kimmsoll/spreadOperatorMaxValue/README.md b/Challenge/kimmsoll/spreadOperatorMaxValue/README.md deleted file mode 100644 index 164b68a1..00000000 --- a/Challenge/kimmsoll/spreadOperatorMaxValue/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -Spread Operator를 이용해서 값의 최대, 최소값을 구하세요 diff --git a/Challenge/kimmsoll/spreadOperatorMaxValue/solve.js b/Challenge/kimmsoll/spreadOperatorMaxValue/solve.js deleted file mode 100644 index b6527465..00000000 --- a/Challenge/kimmsoll/spreadOperatorMaxValue/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -// write your codes -function solution(inputArray) { - const max = Math.max(...inputArray); - const min = Math.min(...inputArray); - return `max : ${max}, min : ${min}`; -} - -exports.solution = solution; diff --git a/Challenge/kimmsoll/spreadOperatorMaxValue/solve.test.js b/Challenge/kimmsoll/spreadOperatorMaxValue/solve.test.js deleted file mode 100644 index 26f2abf9..00000000 --- a/Challenge/kimmsoll/spreadOperatorMaxValue/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], - answer: 'max : 10, min : 1', -}; - -describe('spreadOperatorMaxValue', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/kimyerimweb/everyArray/everyArray/README.md b/Challenge/kimyerimweb/everyArray/everyArray/README.md deleted file mode 100644 index 442558f6..00000000 --- a/Challenge/kimyerimweb/everyArray/everyArray/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -every를 이용해서 모든 원소가 짝수인지 아닌지를 판별하세요 - -## Expected Output - -true \ No newline at end of file diff --git a/Challenge/kimyerimweb/everyArray/everyArray/solve.js b/Challenge/kimyerimweb/everyArray/everyArray/solve.js deleted file mode 100644 index 93ab8224..00000000 --- a/Challenge/kimyerimweb/everyArray/everyArray/solve.js +++ /dev/null @@ -1,4 +0,0 @@ -const inputArray = [2, 4, 6, 8, 10]; - -const answer = inputArray.every(x=> x % 2 === 0); -console.log(answer) \ No newline at end of file diff --git a/Challenge/kimyerimweb/expDivOdd/README.md b/Challenge/kimyerimweb/expDivOdd/README.md deleted file mode 100644 index c07ab10b..00000000 --- a/Challenge/kimyerimweb/expDivOdd/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -제곱한 후 3으로 나눈 나머지가 홀수인 것 을 뽑은 배열의 총 합을 구하세요. diff --git a/Challenge/kimyerimweb/expDivOdd/solve.js b/Challenge/kimyerimweb/expDivOdd/solve.js deleted file mode 100644 index 4c80f9d7..00000000 --- a/Challenge/kimyerimweb/expDivOdd/solve.js +++ /dev/null @@ -1,7 +0,0 @@ -const inputArray = [1, 7, 3, 4, 6]; - -const answer = inputArray.map(x => x*x) - .filter(x => x % 3 === 1) - .reduce((prev,next) => (prev + next),0); - -console.log(answer); \ No newline at end of file diff --git a/Challenge/kimyerimweb/figureSkating/README.md b/Challenge/kimyerimweb/figureSkating/README.md deleted file mode 100644 index 54b85fbd..00000000 --- a/Challenge/kimyerimweb/figureSkating/README.md +++ /dev/null @@ -1,35 +0,0 @@ -## 설명 - -점수를 계산해서 점수가 높은 순으로 name과 score를 가진 객체의 배열을 출력하세요. -단 실격자는 출력하지 않습니다. - -### 피겨 점수 기준 - -피겨 점수는 ‘기술점수(TES)+예술점수(PCS)-감점’으로 구성된다. - -기술점수(TES·Total Element Score)는 기본점수에 수행점수(GOE·Grade Of Execution)를 합산해 도출한다. - -심판은 선수들이 점프와 스핀의 기술을 제대로 수행하는지 살핀다. 점프에선 회전수를 제대로 지켰는지, 에지를 제대로 사용했는지에 따라 ‘롱 에지’(잘못된 에지 사용)나 ‘다운그레이드’(난이도 하락), ‘어텐션’(주의) 등의 판정을 내린다. 스핀과 스텝시퀀스에 붙는 레벨(1~4)도 이들이 결정한다. - -9명의 심판은 선수들이 미리 제출한 연기 구성표를 기준으로 과제별 기본점수에서 가·감점을 한다. 이른바 ‘GOE’라 불리는 수행점수다. - -쇼트프로그램은 점프 3개, 스핀 3개, 스텝 1개의 수행과제가 반드시 포함돼야 한다. - -예술점수(PCS·Total Program Component Score)는 프로그램의 완성도에 영향을 미치는 스케이팅 기술·동작의 연결·연기·안무·곡 해석 등 5가지를 평가한다. - -마지막으로 감점이 반영된다. 감점 항목이 발생할 때마다 1점씩 감점된다. - -원문보기: -http://news.khan.co.kr/kh_news/khan_art_view.html?art_id=201402172146545#csidx6329aebb6a02152bca884614a7f0544 - -### 판정 기준 - -- 점수가 가장 높은 사람이 1등이다. -- 점수는 기술점수(TES) + 예술점수(PCS) - 감점 으로 구성된다. -- 기술점수(TES)는 기본점수 \* 수행점수(GOE)를 합산해 도출한다. -- 필수 수행과제를 수행하지 못했을 시 실격이다. - -### 필수 수행과제 - -- 쇼트프로그램은 점프 3개, 스핀 3개, 스텝 1개의 수행과제가 반드시 포함돼야 한다. -- 점프와 스핀을 4번 이상 수행했을 시 가장 잘한 3개를 기준으로 한다. diff --git a/Challenge/kimyerimweb/figureSkating/solve.js b/Challenge/kimyerimweb/figureSkating/solve.js deleted file mode 100644 index 94530d14..00000000 --- a/Challenge/kimyerimweb/figureSkating/solve.js +++ /dev/null @@ -1,71 +0,0 @@ -// 기본 점수 -const baseScore = { - jump: 10, - spin: 20, - step: 15, -}; - -const baseAssignment = { - jump: 3, - spin: 3, - step: 1, -}; - -const inputArray = [ - { - name: '김연아', - goe: { - jump: [10, 9, 10], - spin: [10, 10, 10], - step: [9], - }, - pcs: 30, - penalty: 0, - }, - { - name: '피겨의 신', - goe: { - jump: [10000, 10000], - spin: [10000, 10000, 10000], - step: [10000], - }, - pcs: 100000, - penalty: 0, - }, - { - name: '아사다 마오', - goe: { - jump: [9, 6, 8, 9], - spin: [9, 9, 9], - step: [8], - }, - pcs: 29, - penalty: 10, - }, -] - -//실격처리 거름 -const nonDQ = inputArray.filter(x => { - return x.goe.jump.length >= baseAssignment.jump && x.goe.spin.length >= baseAssignment.spin && x.goe.step.length >= baseAssignment.step -}) - -//실격 안된 선수들 점수 정렬/상위 3개만 선택/점수 계산 -let result = [] - -const calculPoint = nonDQ.forEach(el => { - let score = Object.entries(el.goe).reduce((acc,goeItem) => { - return acc + goeItem[1] - .sort((a,b)=>b - a) - .slice(0,3) - .reduce((goeItemAcc,x) => goeItemAcc + x * baseScore[goeItem[0]],0) - },0) - - score = score + el.pcs - el.penalty - - result.push({ - name: el.name, - score - }) -}) - -console.log(result.sort((a,b)=> b.score - a.score)) diff --git a/Challenge/kimyerimweb/filterAge/README.md b/Challenge/kimyerimweb/filterAge/README.md deleted file mode 100644 index 873a15c1..00000000 --- a/Challenge/kimyerimweb/filterAge/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소의 age가 30이상 50미만인 사람만 있는 객체의 배열을 만드세요 diff --git a/Challenge/kimyerimweb/filterAge/solve.js b/Challenge/kimyerimweb/filterAge/solve.js deleted file mode 100644 index 58dcfd41..00000000 --- a/Challenge/kimyerimweb/filterAge/solve.js +++ /dev/null @@ -1,22 +0,0 @@ -const inputArray = [ - { - name: '영미', - age: 25, - }, - { - name: '일미', - age: 35, - }, - { - name: '이미', - age: 45, - }, - { - name: '삼미', - age: 55, - }, - ]; - -const answer = inputArray.filter(x => x.age >= 30 && x.age <50) - -console.log(answer) \ No newline at end of file diff --git a/Challenge/kimyerimweb/filterIntersection/README.md b/Challenge/kimyerimweb/filterIntersection/README.md deleted file mode 100644 index d7c9ad39..00000000 --- a/Challenge/kimyerimweb/filterIntersection/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# 문제제목 - -## 설명 - -두 배열의 교집합을 출력하세요! diff --git a/Challenge/kimyerimweb/filterIntersection/solve.js b/Challenge/kimyerimweb/filterIntersection/solve.js deleted file mode 100644 index a8d27b16..00000000 --- a/Challenge/kimyerimweb/filterIntersection/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -const inputArray = { - A: [1, 2, 3, 4, 5], - B: [3, 4, 5, 6, 7], -} - -const answer = inputArray.A.filter(x => inputArray.B.includes(x)) - -console.log(answer) \ No newline at end of file diff --git a/Challenge/kimyerimweb/filterOdd/README.md b/Challenge/kimyerimweb/filterOdd/README.md deleted file mode 100644 index cf9eda79..00000000 --- a/Challenge/kimyerimweb/filterOdd/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -홀수만 뽑아 배열로 만드세요 diff --git a/Challenge/kimyerimweb/filterOdd/solve.js b/Challenge/kimyerimweb/filterOdd/solve.js deleted file mode 100644 index 47d0057e..00000000 --- a/Challenge/kimyerimweb/filterOdd/solve.js +++ /dev/null @@ -1,23 +0,0 @@ -const test1 = { - input: [4, 2, 5, 1, 3], - answer: [5, 1, 3], - }; - - const test2 = { - input: [4, 2, 6, 8, 50, 16], - answer: [], - }; - - const test3 = { - input: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], - answer: [1, 3, 5, 7, 9, 11], - }; - -function solution(inputArray) { - const answer = inputArray.filter(x => x % 2 === 1) - console.log(answer) -} - -solution(test1.input) -solution(test2.input) -solution(test3.input) diff --git a/Challenge/kimyerimweb/findWord/README.md b/Challenge/kimyerimweb/findWord/README.md deleted file mode 100644 index 8ef123f4..00000000 --- a/Challenge/kimyerimweb/findWord/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -용가리라는 단어가 있으면 true 없으면 false를 출력 - -## Expected Output - -true diff --git a/Challenge/kimyerimweb/findWord/solve.js b/Challenge/kimyerimweb/findWord/solve.js deleted file mode 100644 index 46acf883..00000000 --- a/Challenge/kimyerimweb/findWord/solve.js +++ /dev/null @@ -1,20 +0,0 @@ -const test1 = { - input: ['잠', '자', '고', '싶', '다', '용가리'], - answer: true, - }; - const test2 = { - input: ['맛있는', '용가리치킨'], - answer: false, - }; - const test3 = { - input: ['고질라', '용가리 ', '울트라맨'], - answer: false, - }; - -function solution(inputArray) { - console.log(inputArray.includes('용가리')) -} - -solution(test1.input) -solution(test2.input) -solution(test3.input) \ No newline at end of file diff --git a/Challenge/kimyerimweb/forEachFilter/README.md b/Challenge/kimyerimweb/forEachFilter/README.md deleted file mode 100644 index 6dcbc7c2..00000000 --- a/Challenge/kimyerimweb/forEachFilter/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소중 40 이상인 수만 뽑아 배열을 만드세요. diff --git a/Challenge/kimyerimweb/forEachFilter/solve.js b/Challenge/kimyerimweb/forEachFilter/solve.js deleted file mode 100644 index fec461e6..00000000 --- a/Challenge/kimyerimweb/forEachFilter/solve.js +++ /dev/null @@ -1,7 +0,0 @@ -const input = [100, 10, 20, 40] - -function solution(inputArray) { - console.log(inputArray.filter(x => x >= 40)) -} - -solution(input) \ No newline at end of file diff --git a/Challenge/kimyerimweb/forEachFilterIsNaN/README.md b/Challenge/kimyerimweb/forEachFilterIsNaN/README.md deleted file mode 100644 index 570c030e..00000000 --- a/Challenge/kimyerimweb/forEachFilterIsNaN/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소중 숫자인 원소만 뽑아 배열을 만드세요. diff --git a/Challenge/kimyerimweb/forEachFilterIsNaN/solve.js b/Challenge/kimyerimweb/forEachFilterIsNaN/solve.js deleted file mode 100644 index 5c3dba18..00000000 --- a/Challenge/kimyerimweb/forEachFilterIsNaN/solve.js +++ /dev/null @@ -1,25 +0,0 @@ -const test1 = { - input: [1, 40, '라매', '개발자', 51.5, 'a', 88], - answer: [1, 40, 51.5, 88], - }; - - const test2 = { - input: [1, 2, 3, '4', 5, '6'], - answer: [1, 2, 3, 5], - }; - - const test3 = { - input: [-3, -2, -1, 0, 1, 2, 3], - answer: [-3, -2, -1, 0, 1, 2, 3], - }; - - -function solution(inputArray) { - console.log(inputArray.filter(x => !isNaN(x))) -} //'4','6'은 못거름 - -solution(test1.input) -solution(test2.input) -solution(test3.input) - - diff --git a/Challenge/kimyerimweb/forEachMap/README.md b/Challenge/kimyerimweb/forEachMap/README.md deleted file mode 100644 index 1e8e03c8..00000000 --- a/Challenge/kimyerimweb/forEachMap/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -forEach 메소드를 사용해서 배열의 각 원소 끝에 '%'를 붙인 문자열 배열을 출력하세요 diff --git a/Challenge/kimyerimweb/forEachMap/solve.js b/Challenge/kimyerimweb/forEachMap/solve.js deleted file mode 100644 index 2a424a4c..00000000 --- a/Challenge/kimyerimweb/forEachMap/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -const inputArray = [100, 10, 20, 40] -const answer = [] - -inputArray.forEach(x => { - answer.push(x + '%') -}) - -console.log(answer) \ No newline at end of file diff --git a/Challenge/kimyerimweb/forEachReduce/README.md b/Challenge/kimyerimweb/forEachReduce/README.md deleted file mode 100644 index a984df2d..00000000 --- a/Challenge/kimyerimweb/forEachReduce/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -forEach 메소드를 사용해서 배열의 총 합을 출력하는 코드를 작성하세요 diff --git a/Challenge/kimyerimweb/forEachReduce/solve.js b/Challenge/kimyerimweb/forEachReduce/solve.js deleted file mode 100644 index ad973470..00000000 --- a/Challenge/kimyerimweb/forEachReduce/solve.js +++ /dev/null @@ -1,28 +0,0 @@ -const test1 = { - input: [100, 10, 20, 40], - answer: 170, - }; - - const test2 = { - input: [120, -20, -30, 0, 15], - answer: 85, - }; - - const test3 = { - input: [-10, -20, -30], - answer: -60, - }; - -function solution(inputArray) { - let answer = 0 - - inputArray.forEach(el => { - answer += el - }); - - console.log(answer) -} - -solution(test1.input) -solution(test2.input) -solution(test3.input) \ No newline at end of file diff --git a/Challenge/kimyerimweb/mapAddPercent/README.md b/Challenge/kimyerimweb/mapAddPercent/README.md deleted file mode 100644 index 75e73042..00000000 --- a/Challenge/kimyerimweb/mapAddPercent/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -map 메소드를 사용해 배열 각각 숫자 뒤에 %를 붙인 문자열을 만드세요 diff --git a/Challenge/kimyerimweb/mapAddPercent/solve.js b/Challenge/kimyerimweb/mapAddPercent/solve.js deleted file mode 100644 index 3d3634d4..00000000 --- a/Challenge/kimyerimweb/mapAddPercent/solve.js +++ /dev/null @@ -1,2 +0,0 @@ -let input = [100, 10, 20, 40] -console.log(input.map(el => el += '%')) \ No newline at end of file diff --git a/Challenge/kimyerimweb/mapAppendOrder/README.md b/Challenge/kimyerimweb/mapAppendOrder/README.md deleted file mode 100644 index 1435623a..00000000 --- a/Challenge/kimyerimweb/mapAppendOrder/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열의 값을 name 프로퍼티에 넣고 몇번째 원소인지를 order에 넣은 객체의 배열을 출력하세요 diff --git a/Challenge/kimyerimweb/mapAppendOrder/solve.js b/Challenge/kimyerimweb/mapAppendOrder/solve.js deleted file mode 100644 index 5bb7cfa0..00000000 --- a/Challenge/kimyerimweb/mapAppendOrder/solve.js +++ /dev/null @@ -1,11 +0,0 @@ -const input = ['홍길동', '둘리', '루피'] - -const answer = input.map((x,idx) => { - return { - name: x, - order: idx+1, - } -}) - -console.log(answer) - diff --git a/Challenge/kimyerimweb/recommendAd/README.md b/Challenge/kimyerimweb/recommendAd/README.md deleted file mode 100644 index 132e8800..00000000 --- a/Challenge/kimyerimweb/recommendAd/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# 문제제목 - -사용자가 안 본 광고는? - -## 설명 - -유튜브는 사용자가 프리미엄 회원이 아닌 경우 영상 시작이나 중간에 광고가 나오도록 설정되어 있습니다. - -[2020년 유튜브 인기 광고](https://www.thinkwithgoogle.com/intl/ko-kr/marketing-strategies/video/%EB%8C%80%ED%95%9C%EB%AF%BC%EA%B5%AD-youtube-%EC%9D%B8%EA%B8%B0-%EA%B4%91%EA%B3%A0%EC%98%81%EC%83%81-2020%EB%85%84-%EC%97%B0%EB%A7%90%EA%B2%B0%EC%82%B0/)는 총 열 편으로, 사용자의 일주일간 광고 시청 이력을 통해 해당 사용자가 일주일 동안 안 본 광고를 그 다음주에 노출함으로써 광고들이 사용자에게 골고루 노출되길 원합니다. - -유저가 매일 유튜브에 접속하여 하루 한 편 이상의 광고를 보았다고 가정할 때, 이 유저가 안 본 광고는 무엇인지 출력해주세요. - -## Expected Output - -[ '동원F&B' ] diff --git a/Challenge/kimyerimweb/recommendAd/solve.js b/Challenge/kimyerimweb/recommendAd/solve.js deleted file mode 100644 index e696594c..00000000 --- a/Challenge/kimyerimweb/recommendAd/solve.js +++ /dev/null @@ -1,39 +0,0 @@ -const input = [ - '동원F&B', - '정관장', - 'KT', - 'BBQ', - '그랑사가', - '농심', - '딱좋은데이', - '빙그레', - '쌍용자동차', - '켈로그코리아', -] // answer: ['동원F&B'] - -const userHistory = [ - { date: '2020-11-03', watched: ['KT', 'BBQ'] }, - { date: '2020-11-04', watched: ['정관장', 'KT', '딱좋은데이'] }, - { date: '2020-11-05', watched: ['그랑사가', '농심'] }, - { date: '2020-11-06', watched: ['BBQ'] }, - { date: '2020-11-07', watched: ['쌍용자동차', 'BBQ', 'KT'] }, - { date: '2020-11-08', watched: ['켈로그코리아', '빙그레'] }, - { date: '2020-11-09', watched: ['KT', '그랑사가', '빙그레'] }, -]; - -function joinHistory(history) { - const result = [] - history.forEach(el => { - result.push(...el.watched) - }); - - return result -} - -let joinHis = joinHistory(userHistory) -joinHis = new Set(joinHis) -joinHis = [...joinHis] - -const result = input.filter(el => !joinHis.includes(el)) - -console.log(result) \ No newline at end of file diff --git a/Challenge/kimyerimweb/reduceMaxValueNIndex/README.md b/Challenge/kimyerimweb/reduceMaxValueNIndex/README.md deleted file mode 100644 index 965bdec6..00000000 --- a/Challenge/kimyerimweb/reduceMaxValueNIndex/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -reduce 메소드를 사용해 최댓값의 값을 maxValue에, 해당 값의 index를 idx에 넣은 객체를 출력하세요 diff --git a/Challenge/kimyerimweb/reduceMaxValueNIndex/solve.js b/Challenge/kimyerimweb/reduceMaxValueNIndex/solve.js deleted file mode 100644 index 4d685ca1..00000000 --- a/Challenge/kimyerimweb/reduceMaxValueNIndex/solve.js +++ /dev/null @@ -1,38 +0,0 @@ -const inputArray = [3, 29, 38, 12, 57, 74, 40, 85, 61] - -const answer = inputArray.reduce((acc,el,idx) => { - if(acc.maxValue < el){ - return { - maxValue: el, - idx - } - } - - return acc -},{ - maxValue: 0, - idx: -1 -}) - - -console.log(answer) - - - - - - - - - - - - - - - - - - - -// answer: { maxValue: 85, idx: 7 } diff --git a/Challenge/kimyerimweb/reduceNameNickname/README.md b/Challenge/kimyerimweb/reduceNameNickname/README.md deleted file mode 100644 index b6920e05..00000000 --- a/Challenge/kimyerimweb/reduceNameNickname/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -입력받은 객채배열의 nickname을 key, name을 value로 하는 객체를 출력하세요 diff --git a/Challenge/kimyerimweb/reduceNameNickname/solve.js b/Challenge/kimyerimweb/reduceNameNickname/solve.js deleted file mode 100644 index 990833fe..00000000 --- a/Challenge/kimyerimweb/reduceNameNickname/solve.js +++ /dev/null @@ -1,23 +0,0 @@ -const inputArray = [ - { - name: '홍길동', - nickname: 'hong', - }, - { - name: '둘리', - nickname: '2li', - }, - { - name: '오스트랄로피테쿠스', - nickname: '1Cin', - }, -] - -const answer = inputArray.reduce((acc,el) => { - return { - ...acc, - [el.nickname] : el.name, - } -},{}) - -console.log(answer) \ No newline at end of file diff --git a/Challenge/kimyerimweb/reduceSum/README.md b/Challenge/kimyerimweb/reduceSum/README.md deleted file mode 100644 index 8c607eb2..00000000 --- a/Challenge/kimyerimweb/reduceSum/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -reduce 메소드를 사용해서 배열의 모든 수의 합을 구하세요. - -## Expected Output - -106 diff --git a/Challenge/kimyerimweb/reduceSum/solve.js b/Challenge/kimyerimweb/reduceSum/solve.js deleted file mode 100644 index 43d744c3..00000000 --- a/Challenge/kimyerimweb/reduceSum/solve.js +++ /dev/null @@ -1,3 +0,0 @@ -const input = [10, 3, 20, 5, 8, 60] - -console.log(input.reduce((acc,el) => acc+el ,0)) \ No newline at end of file diff --git a/Challenge/kimyerimweb/sortByPrice/README.md b/Challenge/kimyerimweb/sortByPrice/README.md deleted file mode 100644 index b1ccf70e..00000000 --- a/Challenge/kimyerimweb/sortByPrice/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 - -## Expected Output - -[ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 } -] diff --git a/Challenge/kimyerimweb/sortByPrice/solve.js b/Challenge/kimyerimweb/sortByPrice/solve.js deleted file mode 100644 index 0decf5da..00000000 --- a/Challenge/kimyerimweb/sortByPrice/solve.js +++ /dev/null @@ -1,22 +0,0 @@ -const input = [ - { - name: '사과', - price: 1000, - }, - { - name: '수박', - price: 5000, - }, - { - name: '당근', - price: 2000, - }, - { - name: '참외', - price: 10000, - }, -] - -const answer = input.sort((x,y) => x.price - y.price) - -console.log(answer) \ No newline at end of file diff --git a/Challenge/kimyerimweb/sortByPriceAndQuantity/README.md b/Challenge/kimyerimweb/sortByPriceAndQuantity/README.md deleted file mode 100644 index 41cd5c95..00000000 --- a/Challenge/kimyerimweb/sortByPriceAndQuantity/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 -만약 price가 같다면 quantity기준으로 오름차순 정렬하세요 - -## Expected Output - -[ - { name: '사과', price: 1000, quantity: 2 }, - { name: '오이', price: 2000, quantity: 49 }, - { name: '당근', price: 2000, quantity: 50 }, - { name: '참외', price: 5000, quantity: 10 }, - { name: '수박', price: 5000, quantity: 20 } -] diff --git a/Challenge/kimyerimweb/sortByPriceAndQuantity/solve.js b/Challenge/kimyerimweb/sortByPriceAndQuantity/solve.js deleted file mode 100644 index 893e38d6..00000000 --- a/Challenge/kimyerimweb/sortByPriceAndQuantity/solve.js +++ /dev/null @@ -1,33 +0,0 @@ -const input = [ - { - name: '사과', - price: 1000, - quantity: 2, - }, - { - name: '수박', - price: 5000, - quantity: 20, - }, - { - name: '당근', - price: 2000, - quantity: 50, - }, - { - name: '참외', - price: 5000, - quantity: 10, - }, - { - name: '오이', - price: 2000, - quantity: 49, - }, -] - -const answer = input.sort(a,b => { - return a.price - b.price || a.quantity - b.quantity -}) - -console.log(answer) \ No newline at end of file diff --git a/Challenge/kimyerimweb/spreadOperatorMaxValue/README.md b/Challenge/kimyerimweb/spreadOperatorMaxValue/README.md deleted file mode 100644 index 164b68a1..00000000 --- a/Challenge/kimyerimweb/spreadOperatorMaxValue/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -Spread Operator를 이용해서 값의 최대, 최소값을 구하세요 diff --git a/Challenge/kimyerimweb/spreadOperatorMaxValue/solve.js b/Challenge/kimyerimweb/spreadOperatorMaxValue/solve.js deleted file mode 100644 index 0b275a7a..00000000 --- a/Challenge/kimyerimweb/spreadOperatorMaxValue/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -const input = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] - -const maxVal = Math.max(...input) -const minVal = Math.min(...input) - -console.log(`max : ${maxVal}, min : ${minVal}`) diff --git a/Challenge/lazy-sky/everyArray/README.md b/Challenge/lazy-sky/everyArray/README.md deleted file mode 100644 index 442558f6..00000000 --- a/Challenge/lazy-sky/everyArray/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -every를 이용해서 모든 원소가 짝수인지 아닌지를 판별하세요 - -## Expected Output - -true \ No newline at end of file diff --git a/Challenge/lazy-sky/everyArray/solve.js b/Challenge/lazy-sky/everyArray/solve.js deleted file mode 100644 index cb1413fd..00000000 --- a/Challenge/lazy-sky/everyArray/solve.js +++ /dev/null @@ -1,7 +0,0 @@ -// every를 이용해서 모든 원소가 짝수인지 아닌지를 판별하세요 - -function solution(inputArray) { - return inputArray.every((x) => x % 2 === 0); -} - -exports.solution = solution; diff --git a/Challenge/lazy-sky/everyArray/solve.test.js b/Challenge/lazy-sky/everyArray/solve.test.js deleted file mode 100644 index b03e4791..00000000 --- a/Challenge/lazy-sky/everyArray/solve.test.js +++ /dev/null @@ -1,21 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [2, 4, 6, 8, 10], - answer: true, -}; - -const test2 = { - input: [2, 3, 6, 8, 10], - answer: false, -}; - -describe('everyArray', () => { - test('모두 짝수면 true여야 한다.', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - - test('홀수가 있으면 false여야 한다.', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); -}); diff --git a/Challenge/lazy-sky/expDivOdd/README.md b/Challenge/lazy-sky/expDivOdd/README.md deleted file mode 100644 index c07ab10b..00000000 --- a/Challenge/lazy-sky/expDivOdd/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -제곱한 후 3으로 나눈 나머지가 홀수인 것 을 뽑은 배열의 총 합을 구하세요. diff --git a/Challenge/lazy-sky/expDivOdd/solve.js b/Challenge/lazy-sky/expDivOdd/solve.js deleted file mode 100644 index 601a2365..00000000 --- a/Challenge/lazy-sky/expDivOdd/solve.js +++ /dev/null @@ -1,7 +0,0 @@ -// 제곱한 후 3으로 나눈 나머지가 홀수인 것 을 뽑은 배열의 총 합을 구하세요. - -function solution(inputArray) { - return inputArray.map((x) => x * x).filter((x) => x % 3 === 1).reduce((acc, cur) => acc + cur); -} - -exports.solution = solution; diff --git a/Challenge/lazy-sky/expDivOdd/solve.test.js b/Challenge/lazy-sky/expDivOdd/solve.test.js deleted file mode 100644 index ca37fcc3..00000000 --- a/Challenge/lazy-sky/expDivOdd/solve.test.js +++ /dev/null @@ -1,21 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 7, 3, 4, 6], - answer: 66, -}; - -const test2 = { - input: [2, 3, 6, 8, 10], - answer: 168, -}; - -describe('everyArray', () => { - test('1, 7, 3, 4, 6', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - - test('2, 3, 6, 8, 10', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); -}); diff --git a/Challenge/lazy-sky/filterAge/README.md b/Challenge/lazy-sky/filterAge/README.md deleted file mode 100644 index 873a15c1..00000000 --- a/Challenge/lazy-sky/filterAge/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소의 age가 30이상 50미만인 사람만 있는 객체의 배열을 만드세요 diff --git a/Challenge/lazy-sky/filterAge/solve.js b/Challenge/lazy-sky/filterAge/solve.js deleted file mode 100644 index 36d14d35..00000000 --- a/Challenge/lazy-sky/filterAge/solve.js +++ /dev/null @@ -1,7 +0,0 @@ -// 배열 원소의 age가 30이상 50미만인 사람만 있는 객체의 배열을 만드세요 - -function solution(inputArray) { - return inputArray.filter((x) => (x.age >= 30 && x.age < 50)); -} - -exports.solution = solution; diff --git a/Challenge/lazy-sky/filterAge/solve.test.js b/Challenge/lazy-sky/filterAge/solve.test.js deleted file mode 100644 index b9081601..00000000 --- a/Challenge/lazy-sky/filterAge/solve.test.js +++ /dev/null @@ -1,32 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '영미', - age: 25, - }, - { - name: '일미', - age: 35, - }, - { - name: '이미', - age: 45, - }, - { - name: '삼미', - age: 55, - }, - ], - answer: [ - { name: '일미', age: 35 }, - { name: '이미', age: 45 }, - ], -}; - -describe('filterAge', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/lazy-sky/filterIntersection/README.md b/Challenge/lazy-sky/filterIntersection/README.md deleted file mode 100644 index d7c9ad39..00000000 --- a/Challenge/lazy-sky/filterIntersection/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# 문제제목 - -## 설명 - -두 배열의 교집합을 출력하세요! diff --git a/Challenge/lazy-sky/filterIntersection/solve.js b/Challenge/lazy-sky/filterIntersection/solve.js deleted file mode 100644 index 870d1b02..00000000 --- a/Challenge/lazy-sky/filterIntersection/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// 두 배열의 교집합을 출력하세요! -function solution(inputArray1, inputArray2) { - return inputArray1.filter((x) => inputArray2.includes(x)); -} - -exports.solution = solution; diff --git a/Challenge/lazy-sky/filterIntersection/solve.test.js b/Challenge/lazy-sky/filterIntersection/solve.test.js deleted file mode 100644 index 576cbc86..00000000 --- a/Challenge/lazy-sky/filterIntersection/solve.test.js +++ /dev/null @@ -1,15 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: { - A: [1, 2, 3, 4, 5], - B: [3, 4, 5, 6, 7], - }, - answer: [3, 4, 5], -}; - -describe('filterIntersection', () => { - test('test1', () => { - expect(solution(test1.input.A, test1.input.B)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/lazy-sky/filterOdd/README.md b/Challenge/lazy-sky/filterOdd/README.md deleted file mode 100644 index cf9eda79..00000000 --- a/Challenge/lazy-sky/filterOdd/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -홀수만 뽑아 배열로 만드세요 diff --git a/Challenge/lazy-sky/filterOdd/solve.js b/Challenge/lazy-sky/filterOdd/solve.js deleted file mode 100644 index 0f11f6e3..00000000 --- a/Challenge/lazy-sky/filterOdd/solve.js +++ /dev/null @@ -1,7 +0,0 @@ -// 홀수만 뽑아 배열로 만드세요 - -function solution(inputArray) { - return inputArray.filter((x) => x % 2 === 1); -} - -exports.solution = solution; diff --git a/Challenge/lazy-sky/filterOdd/solve.test.js b/Challenge/lazy-sky/filterOdd/solve.test.js deleted file mode 100644 index 8cfd7f5a..00000000 --- a/Challenge/lazy-sky/filterOdd/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [4, 2, 5, 1, 3], - answer: [5, 1, 3], -}; - -const test2 = { - input: [4, 2, 6, 8, 50, 16], - answer: [], -}; - -const test3 = { - input: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], - answer: [1, 3, 5, 7, 9, 11], -}; - -describe('filterOdd', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/lazy-sky/findWord/README.md b/Challenge/lazy-sky/findWord/README.md deleted file mode 100644 index 8ef123f4..00000000 --- a/Challenge/lazy-sky/findWord/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -용가리라는 단어가 있으면 true 없으면 false를 출력 - -## Expected Output - -true diff --git a/Challenge/lazy-sky/findWord/solve.js b/Challenge/lazy-sky/findWord/solve.js deleted file mode 100644 index e1ef5eae..00000000 --- a/Challenge/lazy-sky/findWord/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// 용가리라는 단어가 있으면 true 없으면 false를 출력 -function solution(inputArray) { - return inputArray.includes('용가리'); -} - -exports.solution = solution; diff --git a/Challenge/lazy-sky/findWord/solve.test.js b/Challenge/lazy-sky/findWord/solve.test.js deleted file mode 100644 index 804114f6..00000000 --- a/Challenge/lazy-sky/findWord/solve.test.js +++ /dev/null @@ -1,26 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: ['잠', '자', '고', '싶', '다', '용가리'], - answer: true, -}; -const test2 = { - input: ['맛있는', '용가리치킨'], - answer: false, -}; -const test3 = { - input: ['고질라', '용가리 ', '울트라맨'], - answer: false, -}; - -describe('findWord', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); \ No newline at end of file diff --git a/Challenge/lazy-sky/forEachFilter/README.md b/Challenge/lazy-sky/forEachFilter/README.md deleted file mode 100644 index 6dcbc7c2..00000000 --- a/Challenge/lazy-sky/forEachFilter/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소중 40 이상인 수만 뽑아 배열을 만드세요. diff --git a/Challenge/lazy-sky/forEachFilter/solve.js b/Challenge/lazy-sky/forEachFilter/solve.js deleted file mode 100644 index 0fe0451b..00000000 --- a/Challenge/lazy-sky/forEachFilter/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// 배열 원소중 40 이상인 수만 뽑아 배열을 만드세요. -function solution(inputArray) { - return inputArray.filter((x) => x >= 40); -} - -exports.solution = solution; diff --git a/Challenge/lazy-sky/forEachFilter/solve.test.js b/Challenge/lazy-sky/forEachFilter/solve.test.js deleted file mode 100644 index 3d73b25c..00000000 --- a/Challenge/lazy-sky/forEachFilter/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: [100, 40], -}; - -describe('forEachFilter', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/lazy-sky/forEachFilterIsNaN/README.md b/Challenge/lazy-sky/forEachFilterIsNaN/README.md deleted file mode 100644 index 570c030e..00000000 --- a/Challenge/lazy-sky/forEachFilterIsNaN/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소중 숫자인 원소만 뽑아 배열을 만드세요. diff --git a/Challenge/lazy-sky/forEachFilterIsNaN/solve.js b/Challenge/lazy-sky/forEachFilterIsNaN/solve.js deleted file mode 100644 index ef8e61fe..00000000 --- a/Challenge/lazy-sky/forEachFilterIsNaN/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// 배열 원소중 숫자인 원소만 뽑아 배열을 만드세요. -function solution(inputArray) { - return inputArray.filter((x) => typeof x === 'number'); -} - -exports.solution = solution; diff --git a/Challenge/lazy-sky/forEachFilterIsNaN/solve.test.js b/Challenge/lazy-sky/forEachFilterIsNaN/solve.test.js deleted file mode 100644 index d6e118bb..00000000 --- a/Challenge/lazy-sky/forEachFilterIsNaN/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 40, '라매', '개발자', 51.5, 'a', 88], - answer: [1, 40, 51.5, 88], -}; - -const test2 = { - input: [1, 2, 3, '4', 5, '6'], - answer: [1, 2, 3, 5], -}; - -const test3 = { - input: [-3, -2, -1, 0, 1, 2, 3], - answer: [-3, -2, -1, 0, 1, 2, 3], -}; - -describe('forEachFilterIsNaN', () => { - test('test1: 숫자,문자 판별', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2: 문자로된 숫자 판별', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3: 음수 양수 포함', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); \ No newline at end of file diff --git a/Challenge/lazy-sky/forEachMap/README.md b/Challenge/lazy-sky/forEachMap/README.md deleted file mode 100644 index 1e8e03c8..00000000 --- a/Challenge/lazy-sky/forEachMap/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -forEach 메소드를 사용해서 배열의 각 원소 끝에 '%'를 붙인 문자열 배열을 출력하세요 diff --git a/Challenge/lazy-sky/forEachMap/solve.js b/Challenge/lazy-sky/forEachMap/solve.js deleted file mode 100644 index 559b5245..00000000 --- a/Challenge/lazy-sky/forEachMap/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// forEach 메소드를 사용해서 배열의 각 원소 끝에 '%'를 붙인 문자열 배열을 출력하세요 -function solution(inputArray) { - return inputArray.map((x) => `${x}%`); -} - -exports.solution = solution; diff --git a/Challenge/lazy-sky/forEachMap/solve.test.js b/Challenge/lazy-sky/forEachMap/solve.test.js deleted file mode 100644 index de4868c6..00000000 --- a/Challenge/lazy-sky/forEachMap/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: ['100%', '10%', '20%', '40%'], -}; - -describe('forEachMap', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/lazy-sky/forEachReduce/README.md b/Challenge/lazy-sky/forEachReduce/README.md deleted file mode 100644 index a984df2d..00000000 --- a/Challenge/lazy-sky/forEachReduce/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -forEach 메소드를 사용해서 배열의 총 합을 출력하는 코드를 작성하세요 diff --git a/Challenge/lazy-sky/forEachReduce/solve.js b/Challenge/lazy-sky/forEachReduce/solve.js deleted file mode 100644 index 5c55eedb..00000000 --- a/Challenge/lazy-sky/forEachReduce/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// forEach 메소드를 사용해서 배열의 총 합을 출력하는 코드를 작성하세요 -function solution(inputArray) { - return inputArray.reduce((acc, cur) => acc + cur); -} - -exports.solution = solution; diff --git a/Challenge/lazy-sky/forEachReduce/solve.test.js b/Challenge/lazy-sky/forEachReduce/solve.test.js deleted file mode 100644 index 397e4b50..00000000 --- a/Challenge/lazy-sky/forEachReduce/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: 170, -}; - -const test2 = { - input: [120, -20, -30, 0, 15], - answer: 85, -}; - -const test3 = { - input: [-10, -20, -30], - answer: -60, -}; - -describe('forEachReduce', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2: 음수가 포함된 계산', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3: 음수만 존재하는 계산', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/lazy-sky/mapAddPercent/README.md b/Challenge/lazy-sky/mapAddPercent/README.md deleted file mode 100644 index 75e73042..00000000 --- a/Challenge/lazy-sky/mapAddPercent/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -map 메소드를 사용해 배열 각각 숫자 뒤에 %를 붙인 문자열을 만드세요 diff --git a/Challenge/lazy-sky/mapAddPercent/solve.js b/Challenge/lazy-sky/mapAddPercent/solve.js deleted file mode 100644 index 4bdd49c0..00000000 --- a/Challenge/lazy-sky/mapAddPercent/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// map 메소드를 사용해 배열 각각 숫자 뒤에 %를 붙인 문자열을 만드세요 -function solution(inputArray) { - return inputArray.map((x) => `${x}%`); -} - -exports.solution = solution; diff --git a/Challenge/lazy-sky/mapAddPercent/solve.test.js b/Challenge/lazy-sky/mapAddPercent/solve.test.js deleted file mode 100644 index dac1b3cc..00000000 --- a/Challenge/lazy-sky/mapAddPercent/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: ['100%', '10%', '20%', '40%'], -}; - -describe('mapAddPercent', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/lazy-sky/mapAppendOrder/README.md b/Challenge/lazy-sky/mapAppendOrder/README.md deleted file mode 100644 index 1435623a..00000000 --- a/Challenge/lazy-sky/mapAppendOrder/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열의 값을 name 프로퍼티에 넣고 몇번째 원소인지를 order에 넣은 객체의 배열을 출력하세요 diff --git a/Challenge/lazy-sky/mapAppendOrder/solve.js b/Challenge/lazy-sky/mapAppendOrder/solve.js deleted file mode 100644 index f8f15e2c..00000000 --- a/Challenge/lazy-sky/mapAppendOrder/solve.js +++ /dev/null @@ -1,11 +0,0 @@ -// 배열의 값을 name 프로퍼티에 넣고 몇번째 원소인지를 -// order에 넣은 객체의 배열을 출력하세요 - -function solution(inputArray) { - return inputArray.reduce((acc, cur, i) => { - acc.push({ name: cur, order: i + 1 }); - return acc; - }, []); -} - -exports.solution = solution; diff --git a/Challenge/lazy-sky/mapAppendOrder/solve.test.js b/Challenge/lazy-sky/mapAppendOrder/solve.test.js deleted file mode 100644 index e08db10c..00000000 --- a/Challenge/lazy-sky/mapAppendOrder/solve.test.js +++ /dev/null @@ -1,16 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: ['홍길동', '둘리', '루피'], - answer: [ - { name: '홍길동', order: 1 }, - { name: '둘리', order: 2 }, - { name: '루피', order: 3 }, - ], -}; - -describe('mapAppendOrder', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/lazy-sky/recommendAd/README.md b/Challenge/lazy-sky/recommendAd/README.md deleted file mode 100644 index 132e8800..00000000 --- a/Challenge/lazy-sky/recommendAd/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# 문제제목 - -사용자가 안 본 광고는? - -## 설명 - -유튜브는 사용자가 프리미엄 회원이 아닌 경우 영상 시작이나 중간에 광고가 나오도록 설정되어 있습니다. - -[2020년 유튜브 인기 광고](https://www.thinkwithgoogle.com/intl/ko-kr/marketing-strategies/video/%EB%8C%80%ED%95%9C%EB%AF%BC%EA%B5%AD-youtube-%EC%9D%B8%EA%B8%B0-%EA%B4%91%EA%B3%A0%EC%98%81%EC%83%81-2020%EB%85%84-%EC%97%B0%EB%A7%90%EA%B2%B0%EC%82%B0/)는 총 열 편으로, 사용자의 일주일간 광고 시청 이력을 통해 해당 사용자가 일주일 동안 안 본 광고를 그 다음주에 노출함으로써 광고들이 사용자에게 골고루 노출되길 원합니다. - -유저가 매일 유튜브에 접속하여 하루 한 편 이상의 광고를 보았다고 가정할 때, 이 유저가 안 본 광고는 무엇인지 출력해주세요. - -## Expected Output - -[ '동원F&B' ] diff --git a/Challenge/lazy-sky/recommendAd/solve.js b/Challenge/lazy-sky/recommendAd/solve.js deleted file mode 100644 index 1d71ac35..00000000 --- a/Challenge/lazy-sky/recommendAd/solve.js +++ /dev/null @@ -1,30 +0,0 @@ -const userHistory = [ - { date: '2020-11-03', watched: ['KT', 'BBQ'] }, - { date: '2020-11-04', watched: ['정관장', 'KT', '딱좋은데이'] }, - { date: '2020-11-05', watched: ['그랑사가', '농심'] }, - { date: '2020-11-06', watched: ['BBQ'] }, - { date: '2020-11-07', watched: ['쌍용자동차', 'BBQ', 'KT'] }, - { date: '2020-11-08', watched: ['켈로그코리아', '빙그레'] }, - { date: '2020-11-09', watched: ['KT', '그랑사가', '빙그레'] }, -]; - -/* -유튜브는 사용자가 프리미엄 회원이 아닌 경우 영상 시작이나 -중간에 광고가 나오도록 설정되어 있습니다. -[2020년 유튜브 인기 광고]는 총 열 편으로, -사용자의 일주일간 광고 시청 이력을 통해 -해당 사용자가 일주일 동안 안 본 광고를 그 다음주에 노출함으로써 -광고들이 사용자에게 골고루 노출되길 원합니다. -유저가 매일 유튜브에 접속하여 하루 한 편 이상의 광고를 보았다고 가정할 때, -이 유저가 안 본 광고는 무엇인지 출력해주세요. -*/ - -function solution(inputArray) { - return inputArray - .filter((ad) => !userHistory - .map((x) => x.watched) - .reduce((acc, cur) => acc + cur) - .includes(ad)); -} - -exports.solution = solution; diff --git a/Challenge/lazy-sky/recommendAd/solve.test.js b/Challenge/lazy-sky/recommendAd/solve.test.js deleted file mode 100644 index 8a0f6464..00000000 --- a/Challenge/lazy-sky/recommendAd/solve.test.js +++ /dev/null @@ -1,23 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - '동원F&B', - '정관장', - 'KT', - 'BBQ', - '그랑사가', - '농심', - '딱좋은데이', - '빙그레', - '쌍용자동차', - '켈로그코리아', - ], - answer: ['동원F&B'], -}; - -describe('recommendAd', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/lazy-sky/reduceMaxValueNIndex/README.md b/Challenge/lazy-sky/reduceMaxValueNIndex/README.md deleted file mode 100644 index 965bdec6..00000000 --- a/Challenge/lazy-sky/reduceMaxValueNIndex/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -reduce 메소드를 사용해 최댓값의 값을 maxValue에, 해당 값의 index를 idx에 넣은 객체를 출력하세요 diff --git a/Challenge/lazy-sky/reduceMaxValueNIndex/solve.js b/Challenge/lazy-sky/reduceMaxValueNIndex/solve.js deleted file mode 100644 index 50c2e116..00000000 --- a/Challenge/lazy-sky/reduceMaxValueNIndex/solve.js +++ /dev/null @@ -1,17 +0,0 @@ -// reduce 메소드를 사용해 최댓값의 값을 maxValue에, -// 해당 값의 index를 idx에 넣은 객체를 출력하세요 - -function solution(inputArray) { - let idx = 0; - const maxValue = inputArray.reduce((pre, cur, i) => { - if (pre < cur) { - idx = i; - return cur; - } - return pre; - }); - - return `maxValue: ${maxValue}, idx: ${idx}`; -} - -exports.solution = solution; diff --git a/Challenge/lazy-sky/reduceMaxValueNIndex/solve.test.js b/Challenge/lazy-sky/reduceMaxValueNIndex/solve.test.js deleted file mode 100644 index 7b9904a7..00000000 --- a/Challenge/lazy-sky/reduceMaxValueNIndex/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [3, 29, 38, 12, 57, 74, 40, 85, 61], - answer: 'maxValue: 85, idx: 7', -}; - -const test2 = { - input: [-24, -2, -13, -49, -999999, -17], - answer: 'maxValue: -2, idx: 1', -}; -// 최댓값이 중복일 때에는 먼저 나온 최댓값의 인덱스를 유지하도록 설정하였습니다. -const test3 = { - input: [2, -20, 21, -874, 99, -16, -29, 99], - answer: 'maxValue: 99, idx: 4', -}; - -describe('reduceMaxValueNIndex', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2 : 음수 테스트', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3 : 중복된 최대값 테스트', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/lazy-sky/reduceNameNickname/README.md b/Challenge/lazy-sky/reduceNameNickname/README.md deleted file mode 100644 index b6920e05..00000000 --- a/Challenge/lazy-sky/reduceNameNickname/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -입력받은 객채배열의 nickname을 key, name을 value로 하는 객체를 출력하세요 diff --git a/Challenge/lazy-sky/reduceNameNickname/solve.js b/Challenge/lazy-sky/reduceNameNickname/solve.js deleted file mode 100644 index a79eaa46..00000000 --- a/Challenge/lazy-sky/reduceNameNickname/solve.js +++ /dev/null @@ -1,11 +0,0 @@ -// 입력받은 객채배열의 nickname을 key, -// name을 value로 하는 객체를 출력하세요 - -function solution(inputArray) { - return inputArray.reduce((acc, cur) => { - acc[cur.nickname] = cur.name; - return acc; - }, {}); -} - -exports.solution = solution; diff --git a/Challenge/lazy-sky/reduceNameNickname/solve.test.js b/Challenge/lazy-sky/reduceNameNickname/solve.test.js deleted file mode 100644 index 67b74529..00000000 --- a/Challenge/lazy-sky/reduceNameNickname/solve.test.js +++ /dev/null @@ -1,25 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '홍길동', - nickname: 'hong', - }, - { - name: '둘리', - nickname: '2li', - }, - { - name: '오스트랄로피테쿠스', - nickname: '1Cin', - }, - ], - answer: { hong: '홍길동', '2li': '둘리', '1Cin': '오스트랄로피테쿠스' }, -}; - -describe('reduceNameNickname', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/lazy-sky/reduceSum/README.md b/Challenge/lazy-sky/reduceSum/README.md deleted file mode 100644 index 8c607eb2..00000000 --- a/Challenge/lazy-sky/reduceSum/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -reduce 메소드를 사용해서 배열의 모든 수의 합을 구하세요. - -## Expected Output - -106 diff --git a/Challenge/lazy-sky/reduceSum/solve.js b/Challenge/lazy-sky/reduceSum/solve.js deleted file mode 100644 index 19535a24..00000000 --- a/Challenge/lazy-sky/reduceSum/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// reduce 메소드를 사용해서 배열의 모든 수의 합을 구하세요. -function solution(inputArray) { - return inputArray.reduce((acc, cur) => acc + cur); -} - -exports.solution = solution; diff --git a/Challenge/lazy-sky/reduceSum/solve.test.js b/Challenge/lazy-sky/reduceSum/solve.test.js deleted file mode 100644 index 046c40cb..00000000 --- a/Challenge/lazy-sky/reduceSum/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [10, 3, 20, 5, 8, 60], - answer: 106, -}; - -describe('reduceSum', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/lazy-sky/sortByPrice/README.md b/Challenge/lazy-sky/sortByPrice/README.md deleted file mode 100644 index b1ccf70e..00000000 --- a/Challenge/lazy-sky/sortByPrice/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 - -## Expected Output - -[ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 } -] diff --git a/Challenge/lazy-sky/sortByPrice/solve.js b/Challenge/lazy-sky/sortByPrice/solve.js deleted file mode 100644 index e3f162cb..00000000 --- a/Challenge/lazy-sky/sortByPrice/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// 배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 -function solution(inputArray) { - return inputArray.sort((a, b) => a.price - b.price); -} - -exports.solution = solution; diff --git a/Challenge/lazy-sky/sortByPrice/solve.test.js b/Challenge/lazy-sky/sortByPrice/solve.test.js deleted file mode 100644 index 3d6a3431..00000000 --- a/Challenge/lazy-sky/sortByPrice/solve.test.js +++ /dev/null @@ -1,34 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '사과', - price: 1000, - }, - { - name: '수박', - price: 5000, - }, - { - name: '당근', - price: 2000, - }, - { - name: '참외', - price: 10000, - }, - ], - answer: [ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 }, - ], -}; - -describe('sortByPrice', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/lazy-sky/sortByPriceAndQuantity/README.md b/Challenge/lazy-sky/sortByPriceAndQuantity/README.md deleted file mode 100644 index 41cd5c95..00000000 --- a/Challenge/lazy-sky/sortByPriceAndQuantity/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 -만약 price가 같다면 quantity기준으로 오름차순 정렬하세요 - -## Expected Output - -[ - { name: '사과', price: 1000, quantity: 2 }, - { name: '오이', price: 2000, quantity: 49 }, - { name: '당근', price: 2000, quantity: 50 }, - { name: '참외', price: 5000, quantity: 10 }, - { name: '수박', price: 5000, quantity: 20 } -] diff --git a/Challenge/lazy-sky/sortByPriceAndQuantity/solve.js b/Challenge/lazy-sky/sortByPriceAndQuantity/solve.js deleted file mode 100644 index b7c195ea..00000000 --- a/Challenge/lazy-sky/sortByPriceAndQuantity/solve.js +++ /dev/null @@ -1,13 +0,0 @@ -// 배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 -// 만약 price가 같다면 quantity기준으로 오름차순 정렬하세요 - -function solution(inputArray) { - return inputArray.sort((a, b) => { - if (a.price === b.price) { - return a.quantity - b.quantity; - } - return a.price - b.price; - }); -} - -exports.solution = solution; diff --git a/Challenge/lazy-sky/sortByPriceAndQuantity/solve.test.js b/Challenge/lazy-sky/sortByPriceAndQuantity/solve.test.js deleted file mode 100644 index 424f42b7..00000000 --- a/Challenge/lazy-sky/sortByPriceAndQuantity/solve.test.js +++ /dev/null @@ -1,44 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '사과', - price: 1000, - quantity: 2, - }, - { - name: '수박', - price: 5000, - quantity: 20, - }, - { - name: '당근', - price: 2000, - quantity: 50, - }, - { - name: '참외', - price: 5000, - quantity: 10, - }, - { - name: '오이', - price: 2000, - quantity: 49, - }, - ], - answer: [ - { name: '사과', price: 1000, quantity: 2 }, - { name: '오이', price: 2000, quantity: 49 }, - { name: '당근', price: 2000, quantity: 50 }, - { name: '참외', price: 5000, quantity: 10 }, - { name: '수박', price: 5000, quantity: 20 }, - ], -}; - -describe('sortByPriceAndQuantity', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/lazy-sky/spreadOperatorMaxValue/README.md b/Challenge/lazy-sky/spreadOperatorMaxValue/README.md deleted file mode 100644 index 164b68a1..00000000 --- a/Challenge/lazy-sky/spreadOperatorMaxValue/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -Spread Operator를 이용해서 값의 최대, 최소값을 구하세요 diff --git a/Challenge/lazy-sky/spreadOperatorMaxValue/solve.js b/Challenge/lazy-sky/spreadOperatorMaxValue/solve.js deleted file mode 100644 index e2ef1e98..00000000 --- a/Challenge/lazy-sky/spreadOperatorMaxValue/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// Spread Operator를 이용해서 값의 최대, 최소값을 구하세요 -function solution(inputArray) { - return `max : ${Math.max(...inputArray)}, min : ${Math.min(...inputArray)}`; -} - -exports.solution = solution; diff --git a/Challenge/lazy-sky/spreadOperatorMaxValue/solve.test.js b/Challenge/lazy-sky/spreadOperatorMaxValue/solve.test.js deleted file mode 100644 index 26f2abf9..00000000 --- a/Challenge/lazy-sky/spreadOperatorMaxValue/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], - answer: 'max : 10, min : 1', -}; - -describe('spreadOperatorMaxValue', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/leesb971204/everyArray/README.md b/Challenge/leesb971204/everyArray/README.md deleted file mode 100644 index 442558f6..00000000 --- a/Challenge/leesb971204/everyArray/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -every를 이용해서 모든 원소가 짝수인지 아닌지를 판별하세요 - -## Expected Output - -true \ No newline at end of file diff --git a/Challenge/leesb971204/everyArray/solve.js b/Challenge/leesb971204/everyArray/solve.js deleted file mode 100644 index 3f6c527b..00000000 --- a/Challenge/leesb971204/everyArray/solve.js +++ /dev/null @@ -1,5 +0,0 @@ -function solution(inputArray) { - return inputArray.every((item) => item % 2 === 0); -} - -exports.solution = solution; diff --git a/Challenge/leesb971204/everyArray/solve.test.js b/Challenge/leesb971204/everyArray/solve.test.js deleted file mode 100644 index 7dac26a4..00000000 --- a/Challenge/leesb971204/everyArray/solve.test.js +++ /dev/null @@ -1,21 +0,0 @@ -const { solution } = require("./solve"); - -const test1 = { - input: [2, 4, 6, 8, 10], - answer: true, -}; - -const test2 = { - input: [2, 3, 6, 8, 10], - answer: false, -}; - -describe("everyArray", () => { - test("모두 짝수면 true여야 한다.", () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - - test("홀수가 있으면 false여야 한다.", () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); -}); diff --git a/Challenge/leesb971204/expDivOdd/README.md b/Challenge/leesb971204/expDivOdd/README.md deleted file mode 100644 index c07ab10b..00000000 --- a/Challenge/leesb971204/expDivOdd/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -제곱한 후 3으로 나눈 나머지가 홀수인 것 을 뽑은 배열의 총 합을 구하세요. diff --git a/Challenge/leesb971204/expDivOdd/solve.js b/Challenge/leesb971204/expDivOdd/solve.js deleted file mode 100644 index 3b2add05..00000000 --- a/Challenge/leesb971204/expDivOdd/solve.js +++ /dev/null @@ -1,7 +0,0 @@ -function solution(inputArray) { - return inputArray - .filter((item) => item ** 2 % 3 == 1) - .reduce((sum, item) => (sum += item ** 2), 0); -} - -exports.solution = solution; diff --git a/Challenge/leesb971204/expDivOdd/solve.test.js b/Challenge/leesb971204/expDivOdd/solve.test.js deleted file mode 100644 index ca37fcc3..00000000 --- a/Challenge/leesb971204/expDivOdd/solve.test.js +++ /dev/null @@ -1,21 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 7, 3, 4, 6], - answer: 66, -}; - -const test2 = { - input: [2, 3, 6, 8, 10], - answer: 168, -}; - -describe('everyArray', () => { - test('1, 7, 3, 4, 6', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - - test('2, 3, 6, 8, 10', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); -}); diff --git a/Challenge/leesb971204/filterAge/README.md b/Challenge/leesb971204/filterAge/README.md deleted file mode 100644 index 873a15c1..00000000 --- a/Challenge/leesb971204/filterAge/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소의 age가 30이상 50미만인 사람만 있는 객체의 배열을 만드세요 diff --git a/Challenge/leesb971204/filterAge/solve.js b/Challenge/leesb971204/filterAge/solve.js deleted file mode 100644 index d9ddce6b..00000000 --- a/Challenge/leesb971204/filterAge/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.filter((item) => item.age >= 30 && item.age < 50); -} - -exports.solution = solution; diff --git a/Challenge/leesb971204/filterAge/solve.test.js b/Challenge/leesb971204/filterAge/solve.test.js deleted file mode 100644 index b9081601..00000000 --- a/Challenge/leesb971204/filterAge/solve.test.js +++ /dev/null @@ -1,32 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '영미', - age: 25, - }, - { - name: '일미', - age: 35, - }, - { - name: '이미', - age: 45, - }, - { - name: '삼미', - age: 55, - }, - ], - answer: [ - { name: '일미', age: 35 }, - { name: '이미', age: 45 }, - ], -}; - -describe('filterAge', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/leesb971204/filterIntersection/README.md b/Challenge/leesb971204/filterIntersection/README.md deleted file mode 100644 index d7c9ad39..00000000 --- a/Challenge/leesb971204/filterIntersection/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# 문제제목 - -## 설명 - -두 배열의 교집합을 출력하세요! diff --git a/Challenge/leesb971204/filterIntersection/solve.js b/Challenge/leesb971204/filterIntersection/solve.js deleted file mode 100644 index 64d4301d..00000000 --- a/Challenge/leesb971204/filterIntersection/solve.js +++ /dev/null @@ -1,5 +0,0 @@ -function solution(inputArray1, inputArray2) { - return inputArray1.filter((item) => inputArray2.includes(item)); -} - -exports.solution = solution; diff --git a/Challenge/leesb971204/filterIntersection/solve.test.js b/Challenge/leesb971204/filterIntersection/solve.test.js deleted file mode 100644 index 576cbc86..00000000 --- a/Challenge/leesb971204/filterIntersection/solve.test.js +++ /dev/null @@ -1,15 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: { - A: [1, 2, 3, 4, 5], - B: [3, 4, 5, 6, 7], - }, - answer: [3, 4, 5], -}; - -describe('filterIntersection', () => { - test('test1', () => { - expect(solution(test1.input.A, test1.input.B)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/leesb971204/filterOdd/README.md b/Challenge/leesb971204/filterOdd/README.md deleted file mode 100644 index cf9eda79..00000000 --- a/Challenge/leesb971204/filterOdd/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -홀수만 뽑아 배열로 만드세요 diff --git a/Challenge/leesb971204/filterOdd/solve.js b/Challenge/leesb971204/filterOdd/solve.js deleted file mode 100644 index 9969eb62..00000000 --- a/Challenge/leesb971204/filterOdd/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.filter((item) => item % 2 === 1); -} - -exports.solution = solution; diff --git a/Challenge/leesb971204/filterOdd/solve.test.js b/Challenge/leesb971204/filterOdd/solve.test.js deleted file mode 100644 index 8cfd7f5a..00000000 --- a/Challenge/leesb971204/filterOdd/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [4, 2, 5, 1, 3], - answer: [5, 1, 3], -}; - -const test2 = { - input: [4, 2, 6, 8, 50, 16], - answer: [], -}; - -const test3 = { - input: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], - answer: [1, 3, 5, 7, 9, 11], -}; - -describe('filterOdd', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/leesb971204/findWord/README.md b/Challenge/leesb971204/findWord/README.md deleted file mode 100644 index 8ef123f4..00000000 --- a/Challenge/leesb971204/findWord/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -용가리라는 단어가 있으면 true 없으면 false를 출력 - -## Expected Output - -true diff --git a/Challenge/leesb971204/findWord/solve.js b/Challenge/leesb971204/findWord/solve.js deleted file mode 100644 index 24f6e193..00000000 --- a/Challenge/leesb971204/findWord/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.includes("용가리"); -} - -exports.solution = solution; diff --git a/Challenge/leesb971204/findWord/solve.test.js b/Challenge/leesb971204/findWord/solve.test.js deleted file mode 100644 index 804114f6..00000000 --- a/Challenge/leesb971204/findWord/solve.test.js +++ /dev/null @@ -1,26 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: ['잠', '자', '고', '싶', '다', '용가리'], - answer: true, -}; -const test2 = { - input: ['맛있는', '용가리치킨'], - answer: false, -}; -const test3 = { - input: ['고질라', '용가리 ', '울트라맨'], - answer: false, -}; - -describe('findWord', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); \ No newline at end of file diff --git a/Challenge/leesb971204/forEachFilter/README.md b/Challenge/leesb971204/forEachFilter/README.md deleted file mode 100644 index 6dcbc7c2..00000000 --- a/Challenge/leesb971204/forEachFilter/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소중 40 이상인 수만 뽑아 배열을 만드세요. diff --git a/Challenge/leesb971204/forEachFilter/solve.js b/Challenge/leesb971204/forEachFilter/solve.js deleted file mode 100644 index 11707955..00000000 --- a/Challenge/leesb971204/forEachFilter/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.filter((item) => item >= 40); -} - -exports.solution = solution; diff --git a/Challenge/leesb971204/forEachFilter/solve.test.js b/Challenge/leesb971204/forEachFilter/solve.test.js deleted file mode 100644 index 3d73b25c..00000000 --- a/Challenge/leesb971204/forEachFilter/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: [100, 40], -}; - -describe('forEachFilter', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/leesb971204/forEachFilterIsNaN/README.md b/Challenge/leesb971204/forEachFilterIsNaN/README.md deleted file mode 100644 index 570c030e..00000000 --- a/Challenge/leesb971204/forEachFilterIsNaN/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소중 숫자인 원소만 뽑아 배열을 만드세요. diff --git a/Challenge/leesb971204/forEachFilterIsNaN/solve.js b/Challenge/leesb971204/forEachFilterIsNaN/solve.js deleted file mode 100644 index 83efdc32..00000000 --- a/Challenge/leesb971204/forEachFilterIsNaN/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.filter((item) => typeof item === "number"); -} - -exports.solution = solution; diff --git a/Challenge/leesb971204/forEachFilterIsNaN/solve.test.js b/Challenge/leesb971204/forEachFilterIsNaN/solve.test.js deleted file mode 100644 index d6e118bb..00000000 --- a/Challenge/leesb971204/forEachFilterIsNaN/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 40, '라매', '개발자', 51.5, 'a', 88], - answer: [1, 40, 51.5, 88], -}; - -const test2 = { - input: [1, 2, 3, '4', 5, '6'], - answer: [1, 2, 3, 5], -}; - -const test3 = { - input: [-3, -2, -1, 0, 1, 2, 3], - answer: [-3, -2, -1, 0, 1, 2, 3], -}; - -describe('forEachFilterIsNaN', () => { - test('test1: 숫자,문자 판별', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2: 문자로된 숫자 판별', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3: 음수 양수 포함', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); \ No newline at end of file diff --git a/Challenge/leesb971204/forEachMap/README.md b/Challenge/leesb971204/forEachMap/README.md deleted file mode 100644 index 1e8e03c8..00000000 --- a/Challenge/leesb971204/forEachMap/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -forEach 메소드를 사용해서 배열의 각 원소 끝에 '%'를 붙인 문자열 배열을 출력하세요 diff --git a/Challenge/leesb971204/forEachMap/solve.js b/Challenge/leesb971204/forEachMap/solve.js deleted file mode 100644 index 79e1c12c..00000000 --- a/Challenge/leesb971204/forEachMap/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.map((item) => `${item}%`); -} - -exports.solution = solution; diff --git a/Challenge/leesb971204/forEachMap/solve.test.js b/Challenge/leesb971204/forEachMap/solve.test.js deleted file mode 100644 index de4868c6..00000000 --- a/Challenge/leesb971204/forEachMap/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: ['100%', '10%', '20%', '40%'], -}; - -describe('forEachMap', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/leesb971204/forEachReduce/README.md b/Challenge/leesb971204/forEachReduce/README.md deleted file mode 100644 index a984df2d..00000000 --- a/Challenge/leesb971204/forEachReduce/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -forEach 메소드를 사용해서 배열의 총 합을 출력하는 코드를 작성하세요 diff --git a/Challenge/leesb971204/forEachReduce/solve.js b/Challenge/leesb971204/forEachReduce/solve.js deleted file mode 100644 index 4f8c2c51..00000000 --- a/Challenge/leesb971204/forEachReduce/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.reduce((sum, item) => (sum += item), 0); -} - -exports.solution = solution; diff --git a/Challenge/leesb971204/forEachReduce/solve.test.js b/Challenge/leesb971204/forEachReduce/solve.test.js deleted file mode 100644 index 397e4b50..00000000 --- a/Challenge/leesb971204/forEachReduce/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: 170, -}; - -const test2 = { - input: [120, -20, -30, 0, 15], - answer: 85, -}; - -const test3 = { - input: [-10, -20, -30], - answer: -60, -}; - -describe('forEachReduce', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2: 음수가 포함된 계산', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3: 음수만 존재하는 계산', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/leesb971204/mapAddPercent/README.md b/Challenge/leesb971204/mapAddPercent/README.md deleted file mode 100644 index 75e73042..00000000 --- a/Challenge/leesb971204/mapAddPercent/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -map 메소드를 사용해 배열 각각 숫자 뒤에 %를 붙인 문자열을 만드세요 diff --git a/Challenge/leesb971204/mapAddPercent/solve.js b/Challenge/leesb971204/mapAddPercent/solve.js deleted file mode 100644 index 79e1c12c..00000000 --- a/Challenge/leesb971204/mapAddPercent/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.map((item) => `${item}%`); -} - -exports.solution = solution; diff --git a/Challenge/leesb971204/mapAddPercent/solve.test.js b/Challenge/leesb971204/mapAddPercent/solve.test.js deleted file mode 100644 index dac1b3cc..00000000 --- a/Challenge/leesb971204/mapAddPercent/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: ['100%', '10%', '20%', '40%'], -}; - -describe('mapAddPercent', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/leesb971204/mapAppendOrder/README.md b/Challenge/leesb971204/mapAppendOrder/README.md deleted file mode 100644 index 1435623a..00000000 --- a/Challenge/leesb971204/mapAppendOrder/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열의 값을 name 프로퍼티에 넣고 몇번째 원소인지를 order에 넣은 객체의 배열을 출력하세요 diff --git a/Challenge/leesb971204/mapAppendOrder/solve.js b/Challenge/leesb971204/mapAppendOrder/solve.js deleted file mode 100644 index 4f4dbe26..00000000 --- a/Challenge/leesb971204/mapAppendOrder/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.map((item, idx) => ({ - name: item, - order: Number(idx + 1), - })); -} - -exports.solution = solution; diff --git a/Challenge/leesb971204/mapAppendOrder/solve.test.js b/Challenge/leesb971204/mapAppendOrder/solve.test.js deleted file mode 100644 index e08db10c..00000000 --- a/Challenge/leesb971204/mapAppendOrder/solve.test.js +++ /dev/null @@ -1,16 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: ['홍길동', '둘리', '루피'], - answer: [ - { name: '홍길동', order: 1 }, - { name: '둘리', order: 2 }, - { name: '루피', order: 3 }, - ], -}; - -describe('mapAppendOrder', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/leesb971204/reduceMaxValueNIndex/README.md b/Challenge/leesb971204/reduceMaxValueNIndex/README.md deleted file mode 100644 index 965bdec6..00000000 --- a/Challenge/leesb971204/reduceMaxValueNIndex/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -reduce 메소드를 사용해 최댓값의 값을 maxValue에, 해당 값의 index를 idx에 넣은 객체를 출력하세요 diff --git a/Challenge/leesb971204/reduceMaxValueNIndex/solve.js b/Challenge/leesb971204/reduceMaxValueNIndex/solve.js deleted file mode 100644 index c525465e..00000000 --- a/Challenge/leesb971204/reduceMaxValueNIndex/solve.js +++ /dev/null @@ -1,20 +0,0 @@ -//write your code - -function solution(inputArray) { - let idx = 0; - - const maxValue = inputArray.reduce((last, next, i) => { - if (last < next) { - idx = i; - return next; - } - return last; - }); - - const newObj = {}; - newObj["maxValue"] = maxValue; - newObj["idx"] = idx; - return newObj; -} - -exports.solution = solution; diff --git a/Challenge/leesb971204/reduceMaxValueNIndex/solve.test.js b/Challenge/leesb971204/reduceMaxValueNIndex/solve.test.js deleted file mode 100644 index 0daef5b8..00000000 --- a/Challenge/leesb971204/reduceMaxValueNIndex/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [3, 29, 38, 12, 57, 74, 40, 85, 61], - answer: { maxValue: 85, idx: 7 }, -}; - -const test2 = { - input: [-24, -2, -13, -49, -999999, -17], - answer: { maxValue: -2, idx: 1 }, -}; -//최댓값이 중복일 때에는 먼저 나온 최댓값의 인덱스를 유지하도록 설정하였습니다. -const test3 = { - input: [2, -20, 21, -874, 99, -16, -29, 99], - answer: { maxValue: 99, idx: 4 }, -}; - -describe('reduceMaxValueNIndex', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2 : 음수 테스트', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3 : 중복된 최대값 테스트', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/leesb971204/reduceNameNickname/README.md b/Challenge/leesb971204/reduceNameNickname/README.md deleted file mode 100644 index b6920e05..00000000 --- a/Challenge/leesb971204/reduceNameNickname/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -입력받은 객채배열의 nickname을 key, name을 value로 하는 객체를 출력하세요 diff --git a/Challenge/leesb971204/reduceNameNickname/solve.js b/Challenge/leesb971204/reduceNameNickname/solve.js deleted file mode 100644 index eae2a656..00000000 --- a/Challenge/leesb971204/reduceNameNickname/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.reduce((acc, cur) => { - acc[cur.nickname] = cur.name; - return acc; - }, {}); -} - -exports.solution = solution; diff --git a/Challenge/leesb971204/reduceNameNickname/solve.test.js b/Challenge/leesb971204/reduceNameNickname/solve.test.js deleted file mode 100644 index 67b74529..00000000 --- a/Challenge/leesb971204/reduceNameNickname/solve.test.js +++ /dev/null @@ -1,25 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '홍길동', - nickname: 'hong', - }, - { - name: '둘리', - nickname: '2li', - }, - { - name: '오스트랄로피테쿠스', - nickname: '1Cin', - }, - ], - answer: { hong: '홍길동', '2li': '둘리', '1Cin': '오스트랄로피테쿠스' }, -}; - -describe('reduceNameNickname', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/leesb971204/reduceSum/README.md b/Challenge/leesb971204/reduceSum/README.md deleted file mode 100644 index 8c607eb2..00000000 --- a/Challenge/leesb971204/reduceSum/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -reduce 메소드를 사용해서 배열의 모든 수의 합을 구하세요. - -## Expected Output - -106 diff --git a/Challenge/leesb971204/reduceSum/solve.js b/Challenge/leesb971204/reduceSum/solve.js deleted file mode 100644 index 4f8c2c51..00000000 --- a/Challenge/leesb971204/reduceSum/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.reduce((sum, item) => (sum += item), 0); -} - -exports.solution = solution; diff --git a/Challenge/leesb971204/reduceSum/solve.test.js b/Challenge/leesb971204/reduceSum/solve.test.js deleted file mode 100644 index 046c40cb..00000000 --- a/Challenge/leesb971204/reduceSum/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [10, 3, 20, 5, 8, 60], - answer: 106, -}; - -describe('reduceSum', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/leesb971204/sortByPrice/README.md b/Challenge/leesb971204/sortByPrice/README.md deleted file mode 100644 index b1ccf70e..00000000 --- a/Challenge/leesb971204/sortByPrice/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 - -## Expected Output - -[ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 } -] diff --git a/Challenge/leesb971204/sortByPrice/solve.js b/Challenge/leesb971204/sortByPrice/solve.js deleted file mode 100644 index cb4fa4c3..00000000 --- a/Challenge/leesb971204/sortByPrice/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.sort((a, b) => a.price - b.price); -} - -exports.solution = solution; diff --git a/Challenge/leesb971204/sortByPrice/solve.test.js b/Challenge/leesb971204/sortByPrice/solve.test.js deleted file mode 100644 index 3d6a3431..00000000 --- a/Challenge/leesb971204/sortByPrice/solve.test.js +++ /dev/null @@ -1,34 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '사과', - price: 1000, - }, - { - name: '수박', - price: 5000, - }, - { - name: '당근', - price: 2000, - }, - { - name: '참외', - price: 10000, - }, - ], - answer: [ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 }, - ], -}; - -describe('sortByPrice', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/leesb971204/sortByPriceAndQuantity/README.md b/Challenge/leesb971204/sortByPriceAndQuantity/README.md deleted file mode 100644 index 41cd5c95..00000000 --- a/Challenge/leesb971204/sortByPriceAndQuantity/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 -만약 price가 같다면 quantity기준으로 오름차순 정렬하세요 - -## Expected Output - -[ - { name: '사과', price: 1000, quantity: 2 }, - { name: '오이', price: 2000, quantity: 49 }, - { name: '당근', price: 2000, quantity: 50 }, - { name: '참외', price: 5000, quantity: 10 }, - { name: '수박', price: 5000, quantity: 20 } -] diff --git a/Challenge/leesb971204/sortByPriceAndQuantity/solve.js b/Challenge/leesb971204/sortByPriceAndQuantity/solve.js deleted file mode 100644 index f6b86f07..00000000 --- a/Challenge/leesb971204/sortByPriceAndQuantity/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.sort( - (a, b) => a.price - b.price || a.quantity - b.quantity - ); -} - -exports.solution = solution; diff --git a/Challenge/leesb971204/sortByPriceAndQuantity/solve.test.js b/Challenge/leesb971204/sortByPriceAndQuantity/solve.test.js deleted file mode 100644 index 424f42b7..00000000 --- a/Challenge/leesb971204/sortByPriceAndQuantity/solve.test.js +++ /dev/null @@ -1,44 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '사과', - price: 1000, - quantity: 2, - }, - { - name: '수박', - price: 5000, - quantity: 20, - }, - { - name: '당근', - price: 2000, - quantity: 50, - }, - { - name: '참외', - price: 5000, - quantity: 10, - }, - { - name: '오이', - price: 2000, - quantity: 49, - }, - ], - answer: [ - { name: '사과', price: 1000, quantity: 2 }, - { name: '오이', price: 2000, quantity: 49 }, - { name: '당근', price: 2000, quantity: 50 }, - { name: '참외', price: 5000, quantity: 10 }, - { name: '수박', price: 5000, quantity: 20 }, - ], -}; - -describe('sortByPriceAndQuantity', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/leesb971204/spreadOperatorMaxValue/README.md b/Challenge/leesb971204/spreadOperatorMaxValue/README.md deleted file mode 100644 index 164b68a1..00000000 --- a/Challenge/leesb971204/spreadOperatorMaxValue/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -Spread Operator를 이용해서 값의 최대, 최소값을 구하세요 diff --git a/Challenge/leesb971204/spreadOperatorMaxValue/solve.js b/Challenge/leesb971204/spreadOperatorMaxValue/solve.js deleted file mode 100644 index 49c5cf13..00000000 --- a/Challenge/leesb971204/spreadOperatorMaxValue/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return `max : ${Math.max(...inputArray)}, min : ${Math.min(...inputArray)}`; -} - -exports.solution = solution; diff --git a/Challenge/leesb971204/spreadOperatorMaxValue/solve.test.js b/Challenge/leesb971204/spreadOperatorMaxValue/solve.test.js deleted file mode 100644 index 26f2abf9..00000000 --- a/Challenge/leesb971204/spreadOperatorMaxValue/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], - answer: 'max : 10, min : 1', -}; - -describe('spreadOperatorMaxValue', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/lela12/everyArray/README.md b/Challenge/lela12/everyArray/README.md deleted file mode 100644 index c351076a..00000000 --- a/Challenge/lela12/everyArray/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -every를 이용해서 모든 원소가 짝수인지 아닌지를 판별하세요 - -## Expected Output - -true diff --git a/Challenge/lela12/everyArray/solve.js b/Challenge/lela12/everyArray/solve.js deleted file mode 100644 index 80f9880b..00000000 --- a/Challenge/lela12/everyArray/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -function solution(inputArray) { - const answer = inputArray.every((even) => even % 2 === 0); - return answer; -} - -exports.solution = solution; diff --git a/Challenge/lela12/everyArray/solve.test.js b/Challenge/lela12/everyArray/solve.test.js deleted file mode 100644 index 7dac26a4..00000000 --- a/Challenge/lela12/everyArray/solve.test.js +++ /dev/null @@ -1,21 +0,0 @@ -const { solution } = require("./solve"); - -const test1 = { - input: [2, 4, 6, 8, 10], - answer: true, -}; - -const test2 = { - input: [2, 3, 6, 8, 10], - answer: false, -}; - -describe("everyArray", () => { - test("모두 짝수면 true여야 한다.", () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - - test("홀수가 있으면 false여야 한다.", () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); -}); diff --git a/Challenge/lela12/expDivOdd/README.md b/Challenge/lela12/expDivOdd/README.md deleted file mode 100644 index c07ab10b..00000000 --- a/Challenge/lela12/expDivOdd/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -제곱한 후 3으로 나눈 나머지가 홀수인 것 을 뽑은 배열의 총 합을 구하세요. diff --git a/Challenge/lela12/expDivOdd/solve.js b/Challenge/lela12/expDivOdd/solve.js deleted file mode 100644 index ef6d12de..00000000 --- a/Challenge/lela12/expDivOdd/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -function solution(inputArray) { - const answer = inputArray - .map((a) => a * a) - .filter((a) => a % 3 === 1) - .reduce((prev, a) => prev + a, 0); - return answer; -} - -exports.solution = solution; diff --git a/Challenge/lela12/expDivOdd/solve.test.js b/Challenge/lela12/expDivOdd/solve.test.js deleted file mode 100644 index ca37fcc3..00000000 --- a/Challenge/lela12/expDivOdd/solve.test.js +++ /dev/null @@ -1,21 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 7, 3, 4, 6], - answer: 66, -}; - -const test2 = { - input: [2, 3, 6, 8, 10], - answer: 168, -}; - -describe('everyArray', () => { - test('1, 7, 3, 4, 6', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - - test('2, 3, 6, 8, 10', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); -}); diff --git a/Challenge/lela12/filterAge/README.md b/Challenge/lela12/filterAge/README.md deleted file mode 100644 index 873a15c1..00000000 --- a/Challenge/lela12/filterAge/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소의 age가 30이상 50미만인 사람만 있는 객체의 배열을 만드세요 diff --git a/Challenge/lela12/filterAge/solve.js b/Challenge/lela12/filterAge/solve.js deleted file mode 100644 index d9ddce6b..00000000 --- a/Challenge/lela12/filterAge/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.filter((item) => item.age >= 30 && item.age < 50); -} - -exports.solution = solution; diff --git a/Challenge/lela12/filterAge/solve.test.js b/Challenge/lela12/filterAge/solve.test.js deleted file mode 100644 index b9081601..00000000 --- a/Challenge/lela12/filterAge/solve.test.js +++ /dev/null @@ -1,32 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '영미', - age: 25, - }, - { - name: '일미', - age: 35, - }, - { - name: '이미', - age: 45, - }, - { - name: '삼미', - age: 55, - }, - ], - answer: [ - { name: '일미', age: 35 }, - { name: '이미', age: 45 }, - ], -}; - -describe('filterAge', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/lela12/filterIntersection/README.md b/Challenge/lela12/filterIntersection/README.md deleted file mode 100644 index d7c9ad39..00000000 --- a/Challenge/lela12/filterIntersection/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# 문제제목 - -## 설명 - -두 배열의 교집합을 출력하세요! diff --git a/Challenge/lela12/filterIntersection/solve.js b/Challenge/lela12/filterIntersection/solve.js deleted file mode 100644 index 64d4301d..00000000 --- a/Challenge/lela12/filterIntersection/solve.js +++ /dev/null @@ -1,5 +0,0 @@ -function solution(inputArray1, inputArray2) { - return inputArray1.filter((item) => inputArray2.includes(item)); -} - -exports.solution = solution; diff --git a/Challenge/lela12/filterIntersection/solve.test.js b/Challenge/lela12/filterIntersection/solve.test.js deleted file mode 100644 index 576cbc86..00000000 --- a/Challenge/lela12/filterIntersection/solve.test.js +++ /dev/null @@ -1,15 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: { - A: [1, 2, 3, 4, 5], - B: [3, 4, 5, 6, 7], - }, - answer: [3, 4, 5], -}; - -describe('filterIntersection', () => { - test('test1', () => { - expect(solution(test1.input.A, test1.input.B)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/lela12/filterOdd/README.md b/Challenge/lela12/filterOdd/README.md deleted file mode 100644 index cf9eda79..00000000 --- a/Challenge/lela12/filterOdd/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -홀수만 뽑아 배열로 만드세요 diff --git a/Challenge/lela12/filterOdd/solve.js b/Challenge/lela12/filterOdd/solve.js deleted file mode 100644 index 6a98a421..00000000 --- a/Challenge/lela12/filterOdd/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.filter((item) => item % 2 === 1); -} - -exports.solution = solution; - -// 홀수만 뽑아 배열로 만드세요 diff --git a/Challenge/lela12/filterOdd/solve.test.js b/Challenge/lela12/filterOdd/solve.test.js deleted file mode 100644 index 8cfd7f5a..00000000 --- a/Challenge/lela12/filterOdd/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [4, 2, 5, 1, 3], - answer: [5, 1, 3], -}; - -const test2 = { - input: [4, 2, 6, 8, 50, 16], - answer: [], -}; - -const test3 = { - input: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], - answer: [1, 3, 5, 7, 9, 11], -}; - -describe('filterOdd', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/lela12/findWord/README.md b/Challenge/lela12/findWord/README.md deleted file mode 100644 index 8ef123f4..00000000 --- a/Challenge/lela12/findWord/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -용가리라는 단어가 있으면 true 없으면 false를 출력 - -## Expected Output - -true diff --git a/Challenge/lela12/findWord/solve.js b/Challenge/lela12/findWord/solve.js deleted file mode 100644 index 24f6e193..00000000 --- a/Challenge/lela12/findWord/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.includes("용가리"); -} - -exports.solution = solution; diff --git a/Challenge/lela12/findWord/solve.test.js b/Challenge/lela12/findWord/solve.test.js deleted file mode 100644 index 804114f6..00000000 --- a/Challenge/lela12/findWord/solve.test.js +++ /dev/null @@ -1,26 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: ['잠', '자', '고', '싶', '다', '용가리'], - answer: true, -}; -const test2 = { - input: ['맛있는', '용가리치킨'], - answer: false, -}; -const test3 = { - input: ['고질라', '용가리 ', '울트라맨'], - answer: false, -}; - -describe('findWord', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); \ No newline at end of file diff --git a/Challenge/lela12/forEachFilter/README.md b/Challenge/lela12/forEachFilter/README.md deleted file mode 100644 index 6dcbc7c2..00000000 --- a/Challenge/lela12/forEachFilter/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소중 40 이상인 수만 뽑아 배열을 만드세요. diff --git a/Challenge/lela12/forEachFilter/solve.js b/Challenge/lela12/forEachFilter/solve.js deleted file mode 100644 index 11707955..00000000 --- a/Challenge/lela12/forEachFilter/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.filter((item) => item >= 40); -} - -exports.solution = solution; diff --git a/Challenge/lela12/forEachFilter/solve.test.js b/Challenge/lela12/forEachFilter/solve.test.js deleted file mode 100644 index 3d73b25c..00000000 --- a/Challenge/lela12/forEachFilter/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: [100, 40], -}; - -describe('forEachFilter', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/lela12/forEachFilterIsNaN/README.md b/Challenge/lela12/forEachFilterIsNaN/README.md deleted file mode 100644 index 570c030e..00000000 --- a/Challenge/lela12/forEachFilterIsNaN/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소중 숫자인 원소만 뽑아 배열을 만드세요. diff --git a/Challenge/lela12/forEachFilterIsNaN/solve.js b/Challenge/lela12/forEachFilterIsNaN/solve.js deleted file mode 100644 index d7299a06..00000000 --- a/Challenge/lela12/forEachFilterIsNaN/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -const { result } = require("lodash"); - -// write your codes -function solution(inputArray) { - return inputArray.filter((arr) => Number.isFinite(arr)); -} - -exports.solution = solution; diff --git a/Challenge/lela12/forEachFilterIsNaN/solve.test.js b/Challenge/lela12/forEachFilterIsNaN/solve.test.js deleted file mode 100644 index d6e118bb..00000000 --- a/Challenge/lela12/forEachFilterIsNaN/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 40, '라매', '개발자', 51.5, 'a', 88], - answer: [1, 40, 51.5, 88], -}; - -const test2 = { - input: [1, 2, 3, '4', 5, '6'], - answer: [1, 2, 3, 5], -}; - -const test3 = { - input: [-3, -2, -1, 0, 1, 2, 3], - answer: [-3, -2, -1, 0, 1, 2, 3], -}; - -describe('forEachFilterIsNaN', () => { - test('test1: 숫자,문자 판별', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2: 문자로된 숫자 판별', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3: 음수 양수 포함', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); \ No newline at end of file diff --git a/Challenge/lela12/forEachMap/README.md b/Challenge/lela12/forEachMap/README.md deleted file mode 100644 index 1e8e03c8..00000000 --- a/Challenge/lela12/forEachMap/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -forEach 메소드를 사용해서 배열의 각 원소 끝에 '%'를 붙인 문자열 배열을 출력하세요 diff --git a/Challenge/lela12/forEachMap/solve.js b/Challenge/lela12/forEachMap/solve.js deleted file mode 100644 index 63393af2..00000000 --- a/Challenge/lela12/forEachMap/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -// write your codes -function solution(inputArray) { - let answer = []; - inputArray.forEach((arr) => answer.push(`${arr}%`)); - return answer; -} - -exports.solution = solution; diff --git a/Challenge/lela12/forEachMap/solve.test.js b/Challenge/lela12/forEachMap/solve.test.js deleted file mode 100644 index de4868c6..00000000 --- a/Challenge/lela12/forEachMap/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: ['100%', '10%', '20%', '40%'], -}; - -describe('forEachMap', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/lela12/forEachReduce/README.md b/Challenge/lela12/forEachReduce/README.md deleted file mode 100644 index a984df2d..00000000 --- a/Challenge/lela12/forEachReduce/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -forEach 메소드를 사용해서 배열의 총 합을 출력하는 코드를 작성하세요 diff --git a/Challenge/lela12/forEachReduce/solve.js b/Challenge/lela12/forEachReduce/solve.js deleted file mode 100644 index ed5983c4..00000000 --- a/Challenge/lela12/forEachReduce/solve.js +++ /dev/null @@ -1,10 +0,0 @@ -// write your codes -function solution(inputArray) { - let sum = 0; - inputArray.forEach((arr) => { - sum += arr; - }); - return sum; -} - -exports.solution = solution; diff --git a/Challenge/lela12/forEachReduce/solve.test.js b/Challenge/lela12/forEachReduce/solve.test.js deleted file mode 100644 index 397e4b50..00000000 --- a/Challenge/lela12/forEachReduce/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: 170, -}; - -const test2 = { - input: [120, -20, -30, 0, 15], - answer: 85, -}; - -const test3 = { - input: [-10, -20, -30], - answer: -60, -}; - -describe('forEachReduce', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2: 음수가 포함된 계산', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3: 음수만 존재하는 계산', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/lela12/mapAddPercent/README.md b/Challenge/lela12/mapAddPercent/README.md deleted file mode 100644 index 75e73042..00000000 --- a/Challenge/lela12/mapAddPercent/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -map 메소드를 사용해 배열 각각 숫자 뒤에 %를 붙인 문자열을 만드세요 diff --git a/Challenge/lela12/mapAddPercent/solve.js b/Challenge/lela12/mapAddPercent/solve.js deleted file mode 100644 index 3889b2bb..00000000 --- a/Challenge/lela12/mapAddPercent/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -// write your codes -function solution(inputArray) { - let answer = []; - inputArray.map((arr) => answer.push(`${arr}%`)); - return answer; -} - -exports.solution = solution; diff --git a/Challenge/lela12/mapAddPercent/solve.test.js b/Challenge/lela12/mapAddPercent/solve.test.js deleted file mode 100644 index dac1b3cc..00000000 --- a/Challenge/lela12/mapAddPercent/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: ['100%', '10%', '20%', '40%'], -}; - -describe('mapAddPercent', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/lela12/mapAppendOrder/README.md b/Challenge/lela12/mapAppendOrder/README.md deleted file mode 100644 index 1435623a..00000000 --- a/Challenge/lela12/mapAppendOrder/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열의 값을 name 프로퍼티에 넣고 몇번째 원소인지를 order에 넣은 객체의 배열을 출력하세요 diff --git a/Challenge/lela12/mapAppendOrder/solve.js b/Challenge/lela12/mapAppendOrder/solve.js deleted file mode 100644 index d042044a..00000000 --- a/Challenge/lela12/mapAppendOrder/solve.js +++ /dev/null @@ -1,13 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.map((arr, index) => { - const answer = { - name: arr, - order: index + 1, - }; - return answer; - }); -} - -exports.solution = solution; -// 배열의 값을 name 프로퍼티에 넣고 몇번째 원소인지를 order에 넣은 객체의 배열을 출력하세요 diff --git a/Challenge/lela12/mapAppendOrder/solve.test.js b/Challenge/lela12/mapAppendOrder/solve.test.js deleted file mode 100644 index e08db10c..00000000 --- a/Challenge/lela12/mapAppendOrder/solve.test.js +++ /dev/null @@ -1,16 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: ['홍길동', '둘리', '루피'], - answer: [ - { name: '홍길동', order: 1 }, - { name: '둘리', order: 2 }, - { name: '루피', order: 3 }, - ], -}; - -describe('mapAppendOrder', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/lela12/reduceSum/README.md b/Challenge/lela12/reduceSum/README.md deleted file mode 100644 index 8c607eb2..00000000 --- a/Challenge/lela12/reduceSum/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -reduce 메소드를 사용해서 배열의 모든 수의 합을 구하세요. - -## Expected Output - -106 diff --git a/Challenge/lela12/reduceSum/solve.js b/Challenge/lela12/reduceSum/solve.js deleted file mode 100644 index d9c68e97..00000000 --- a/Challenge/lela12/reduceSum/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.reduce((prev, curr) => prev + curr); -} - -exports.solution = solution; - -//reduce 메소드를 사용해서 배열의 모든 수의 합을 구하세요. diff --git a/Challenge/lela12/reduceSum/solve.test.js b/Challenge/lela12/reduceSum/solve.test.js deleted file mode 100644 index 046c40cb..00000000 --- a/Challenge/lela12/reduceSum/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [10, 3, 20, 5, 8, 60], - answer: 106, -}; - -describe('reduceSum', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/lela12/sortByPrice/README.md b/Challenge/lela12/sortByPrice/README.md deleted file mode 100644 index b1ccf70e..00000000 --- a/Challenge/lela12/sortByPrice/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 - -## Expected Output - -[ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 } -] diff --git a/Challenge/lela12/sortByPrice/solve.js b/Challenge/lela12/sortByPrice/solve.js deleted file mode 100644 index 0ef18551..00000000 --- a/Challenge/lela12/sortByPrice/solve.js +++ /dev/null @@ -1,17 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.sort((a, b) => a.price - b.price); -} - -exports.solution = solution; - -// 배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 - -// ## Expected Output - -// [ -// { name: '사과', price: 1000 }, -// { name: '당근', price: 2000 }, -// { name: '수박', price: 5000 }, -// { name: '참외', price: 10000 } -// ] diff --git a/Challenge/lela12/sortByPrice/solve.test.js b/Challenge/lela12/sortByPrice/solve.test.js deleted file mode 100644 index 3d6a3431..00000000 --- a/Challenge/lela12/sortByPrice/solve.test.js +++ /dev/null @@ -1,34 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '사과', - price: 1000, - }, - { - name: '수박', - price: 5000, - }, - { - name: '당근', - price: 2000, - }, - { - name: '참외', - price: 10000, - }, - ], - answer: [ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 }, - ], -}; - -describe('sortByPrice', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/lela12/sortByPriceAndQuantity/README.md b/Challenge/lela12/sortByPriceAndQuantity/README.md deleted file mode 100644 index 41cd5c95..00000000 --- a/Challenge/lela12/sortByPriceAndQuantity/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 -만약 price가 같다면 quantity기준으로 오름차순 정렬하세요 - -## Expected Output - -[ - { name: '사과', price: 1000, quantity: 2 }, - { name: '오이', price: 2000, quantity: 49 }, - { name: '당근', price: 2000, quantity: 50 }, - { name: '참외', price: 5000, quantity: 10 }, - { name: '수박', price: 5000, quantity: 20 } -] diff --git a/Challenge/lela12/sortByPriceAndQuantity/solve.js b/Challenge/lela12/sortByPriceAndQuantity/solve.js deleted file mode 100644 index f6b86f07..00000000 --- a/Challenge/lela12/sortByPriceAndQuantity/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.sort( - (a, b) => a.price - b.price || a.quantity - b.quantity - ); -} - -exports.solution = solution; diff --git a/Challenge/lela12/sortByPriceAndQuantity/solve.test.js b/Challenge/lela12/sortByPriceAndQuantity/solve.test.js deleted file mode 100644 index 424f42b7..00000000 --- a/Challenge/lela12/sortByPriceAndQuantity/solve.test.js +++ /dev/null @@ -1,44 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '사과', - price: 1000, - quantity: 2, - }, - { - name: '수박', - price: 5000, - quantity: 20, - }, - { - name: '당근', - price: 2000, - quantity: 50, - }, - { - name: '참외', - price: 5000, - quantity: 10, - }, - { - name: '오이', - price: 2000, - quantity: 49, - }, - ], - answer: [ - { name: '사과', price: 1000, quantity: 2 }, - { name: '오이', price: 2000, quantity: 49 }, - { name: '당근', price: 2000, quantity: 50 }, - { name: '참외', price: 5000, quantity: 10 }, - { name: '수박', price: 5000, quantity: 20 }, - ], -}; - -describe('sortByPriceAndQuantity', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/lerrybe/everyArray/README.md b/Challenge/lerrybe/everyArray/README.md deleted file mode 100644 index 442558f6..00000000 --- a/Challenge/lerrybe/everyArray/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -every를 이용해서 모든 원소가 짝수인지 아닌지를 판별하세요 - -## Expected Output - -true \ No newline at end of file diff --git a/Challenge/lerrybe/everyArray/solve.js b/Challenge/lerrybe/everyArray/solve.js deleted file mode 100644 index 4c59f2b3..00000000 --- a/Challenge/lerrybe/everyArray/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -function solution(inputArray) { - const result = inputArray.every(element => element % 2 === 0); - return result; -} - -exports.solution = solution; diff --git a/Challenge/lerrybe/everyArray/solve.test.js b/Challenge/lerrybe/everyArray/solve.test.js deleted file mode 100644 index b03e4791..00000000 --- a/Challenge/lerrybe/everyArray/solve.test.js +++ /dev/null @@ -1,21 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [2, 4, 6, 8, 10], - answer: true, -}; - -const test2 = { - input: [2, 3, 6, 8, 10], - answer: false, -}; - -describe('everyArray', () => { - test('모두 짝수면 true여야 한다.', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - - test('홀수가 있으면 false여야 한다.', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); -}); diff --git a/Challenge/lerrybe/expDivOdd/README.md b/Challenge/lerrybe/expDivOdd/README.md deleted file mode 100644 index c07ab10b..00000000 --- a/Challenge/lerrybe/expDivOdd/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -제곱한 후 3으로 나눈 나머지가 홀수인 것 을 뽑은 배열의 총 합을 구하세요. diff --git a/Challenge/lerrybe/expDivOdd/solve.js b/Challenge/lerrybe/expDivOdd/solve.js deleted file mode 100644 index bcecc367..00000000 --- a/Challenge/lerrybe/expDivOdd/solve.js +++ /dev/null @@ -1,5 +0,0 @@ -function solution(inputArray) { - return inputArray.map(elem => elem ** 2).filter(elem => (elem % 3) === 1).reduce((prev, curr) => prev + curr); -} - -exports.solution = solution; diff --git a/Challenge/lerrybe/expDivOdd/solve.test.js b/Challenge/lerrybe/expDivOdd/solve.test.js deleted file mode 100644 index ca37fcc3..00000000 --- a/Challenge/lerrybe/expDivOdd/solve.test.js +++ /dev/null @@ -1,21 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 7, 3, 4, 6], - answer: 66, -}; - -const test2 = { - input: [2, 3, 6, 8, 10], - answer: 168, -}; - -describe('everyArray', () => { - test('1, 7, 3, 4, 6', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - - test('2, 3, 6, 8, 10', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); -}); diff --git a/Challenge/lerrybe/figureSkating/README.md b/Challenge/lerrybe/figureSkating/README.md deleted file mode 100644 index 54b85fbd..00000000 --- a/Challenge/lerrybe/figureSkating/README.md +++ /dev/null @@ -1,35 +0,0 @@ -## 설명 - -점수를 계산해서 점수가 높은 순으로 name과 score를 가진 객체의 배열을 출력하세요. -단 실격자는 출력하지 않습니다. - -### 피겨 점수 기준 - -피겨 점수는 ‘기술점수(TES)+예술점수(PCS)-감점’으로 구성된다. - -기술점수(TES·Total Element Score)는 기본점수에 수행점수(GOE·Grade Of Execution)를 합산해 도출한다. - -심판은 선수들이 점프와 스핀의 기술을 제대로 수행하는지 살핀다. 점프에선 회전수를 제대로 지켰는지, 에지를 제대로 사용했는지에 따라 ‘롱 에지’(잘못된 에지 사용)나 ‘다운그레이드’(난이도 하락), ‘어텐션’(주의) 등의 판정을 내린다. 스핀과 스텝시퀀스에 붙는 레벨(1~4)도 이들이 결정한다. - -9명의 심판은 선수들이 미리 제출한 연기 구성표를 기준으로 과제별 기본점수에서 가·감점을 한다. 이른바 ‘GOE’라 불리는 수행점수다. - -쇼트프로그램은 점프 3개, 스핀 3개, 스텝 1개의 수행과제가 반드시 포함돼야 한다. - -예술점수(PCS·Total Program Component Score)는 프로그램의 완성도에 영향을 미치는 스케이팅 기술·동작의 연결·연기·안무·곡 해석 등 5가지를 평가한다. - -마지막으로 감점이 반영된다. 감점 항목이 발생할 때마다 1점씩 감점된다. - -원문보기: -http://news.khan.co.kr/kh_news/khan_art_view.html?art_id=201402172146545#csidx6329aebb6a02152bca884614a7f0544 - -### 판정 기준 - -- 점수가 가장 높은 사람이 1등이다. -- 점수는 기술점수(TES) + 예술점수(PCS) - 감점 으로 구성된다. -- 기술점수(TES)는 기본점수 \* 수행점수(GOE)를 합산해 도출한다. -- 필수 수행과제를 수행하지 못했을 시 실격이다. - -### 필수 수행과제 - -- 쇼트프로그램은 점프 3개, 스핀 3개, 스텝 1개의 수행과제가 반드시 포함돼야 한다. -- 점프와 스핀을 4번 이상 수행했을 시 가장 잘한 3개를 기준으로 한다. diff --git a/Challenge/lerrybe/figureSkating/solve.js b/Challenge/lerrybe/figureSkating/solve.js deleted file mode 100644 index 2c714ec7..00000000 --- a/Challenge/lerrybe/figureSkating/solve.js +++ /dev/null @@ -1,51 +0,0 @@ -// 기본 점수 -const baseScore = { - jump: 10, - spin: 20, - step: 15, -}; - -const baseAssignment = { - jump: 3, - spin: 3, - step: 1, -}; - -// write your codes - -function solution(inputArray) { - targetArray = []; - - inputArray.forEach((obj) => { - const jumpCondition = (obj.goe.jump.length >= baseAssignment.jump); - const spinCondition = (obj.goe.spin.length >= baseAssignment.spin); - const stepCondition = (obj.goe.step.length >= baseAssignment.step); - - if (jumpCondition && spinCondition && stepCondition) { - obj.goe.jump.sort((a, b) => b - a); - obj.goe.spin.sort((a, b) => b - a); - obj.goe.step.sort((a, b) => b - a); - - let jumpScore = 0; - for (let i = 0; i < baseAssignment.jump; i++) { - jumpScore += obj.goe.jump[i] * baseScore.jump; - } - let spinScore = 0; - for (let i = 0; i < baseAssignment.spin; i++) { - spinScore += obj.goe.spin[i] * baseScore.spin; - } - let stepScore = 0; - for (let i = 0; i < baseAssignment.step; i++) { - stepScore += obj.goe.step[i] * baseScore.step; - } - - const totalScore = jumpScore + spinScore + stepScore + obj.pcs - obj.penalty; - - targetArray.push({ name: obj.name, score: totalScore }); - } - }); - - return targetArray; -} - -exports.solution = solution; diff --git a/Challenge/lerrybe/figureSkating/solve.test.js b/Challenge/lerrybe/figureSkating/solve.test.js deleted file mode 100644 index 7bceadf1..00000000 --- a/Challenge/lerrybe/figureSkating/solve.test.js +++ /dev/null @@ -1,46 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '김연아', - goe: { - jump: [10, 9, 10], - spin: [10, 10, 10], - step: [9], - }, - pcs: 30, - penalty: 0, - }, - { - name: '피겨의 신', - goe: { - jump: [10000, 10000], - spin: [10000, 10000, 10000], - step: [10000], - }, - pcs: 100000, - penalty: 0, - }, - { - name: '아사다 마오', - goe: { - jump: [9, 6, 8, 9], - spin: [9, 9, 9], - step: [8], - }, - pcs: 29, - penalty: 10, - }, - ], - answer: [ - { name: '김연아', score: 1055 }, - { name: '아사다 마오', score: 939 }, - ], -}; - -describe('everyArray', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/lerrybe/filterAge/README.md b/Challenge/lerrybe/filterAge/README.md deleted file mode 100644 index 873a15c1..00000000 --- a/Challenge/lerrybe/filterAge/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소의 age가 30이상 50미만인 사람만 있는 객체의 배열을 만드세요 diff --git a/Challenge/lerrybe/filterAge/solve.js b/Challenge/lerrybe/filterAge/solve.js deleted file mode 100644 index 825df09c..00000000 --- a/Challenge/lerrybe/filterAge/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.filter(elem => 30 <= elem.age && elem.age < 50); -} - -exports.solution = solution; diff --git a/Challenge/lerrybe/filterAge/solve.test.js b/Challenge/lerrybe/filterAge/solve.test.js deleted file mode 100644 index b9081601..00000000 --- a/Challenge/lerrybe/filterAge/solve.test.js +++ /dev/null @@ -1,32 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '영미', - age: 25, - }, - { - name: '일미', - age: 35, - }, - { - name: '이미', - age: 45, - }, - { - name: '삼미', - age: 55, - }, - ], - answer: [ - { name: '일미', age: 35 }, - { name: '이미', age: 45 }, - ], -}; - -describe('filterAge', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/lerrybe/filterIntersection/README.md b/Challenge/lerrybe/filterIntersection/README.md deleted file mode 100644 index d7c9ad39..00000000 --- a/Challenge/lerrybe/filterIntersection/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# 문제제목 - -## 설명 - -두 배열의 교집합을 출력하세요! diff --git a/Challenge/lerrybe/filterIntersection/solve.js b/Challenge/lerrybe/filterIntersection/solve.js deleted file mode 100644 index 965d29c3..00000000 --- a/Challenge/lerrybe/filterIntersection/solve.js +++ /dev/null @@ -1,5 +0,0 @@ -function solution(inputArray1, inputArray2) { - return inputArray1.filter((elem) => inputArray2.includes(elem)); -} - -exports.solution = solution; diff --git a/Challenge/lerrybe/filterIntersection/solve.test.js b/Challenge/lerrybe/filterIntersection/solve.test.js deleted file mode 100644 index 576cbc86..00000000 --- a/Challenge/lerrybe/filterIntersection/solve.test.js +++ /dev/null @@ -1,15 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: { - A: [1, 2, 3, 4, 5], - B: [3, 4, 5, 6, 7], - }, - answer: [3, 4, 5], -}; - -describe('filterIntersection', () => { - test('test1', () => { - expect(solution(test1.input.A, test1.input.B)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/lerrybe/filterOdd/README.md b/Challenge/lerrybe/filterOdd/README.md deleted file mode 100644 index cf9eda79..00000000 --- a/Challenge/lerrybe/filterOdd/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -홀수만 뽑아 배열로 만드세요 diff --git a/Challenge/lerrybe/filterOdd/solve.js b/Challenge/lerrybe/filterOdd/solve.js deleted file mode 100644 index c8e229c3..00000000 --- a/Challenge/lerrybe/filterOdd/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.filter(elem => elem % 2 !== 0); -} - -exports.solution = solution; diff --git a/Challenge/lerrybe/filterOdd/solve.test.js b/Challenge/lerrybe/filterOdd/solve.test.js deleted file mode 100644 index 8cfd7f5a..00000000 --- a/Challenge/lerrybe/filterOdd/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [4, 2, 5, 1, 3], - answer: [5, 1, 3], -}; - -const test2 = { - input: [4, 2, 6, 8, 50, 16], - answer: [], -}; - -const test3 = { - input: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], - answer: [1, 3, 5, 7, 9, 11], -}; - -describe('filterOdd', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/lerrybe/findWord/README.md b/Challenge/lerrybe/findWord/README.md deleted file mode 100644 index 8ef123f4..00000000 --- a/Challenge/lerrybe/findWord/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -용가리라는 단어가 있으면 true 없으면 false를 출력 - -## Expected Output - -true diff --git a/Challenge/lerrybe/findWord/solve.js b/Challenge/lerrybe/findWord/solve.js deleted file mode 100644 index fb98244e..00000000 --- a/Challenge/lerrybe/findWord/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.includes('용가리'); -} - -exports.solution = solution; diff --git a/Challenge/lerrybe/findWord/solve.test.js b/Challenge/lerrybe/findWord/solve.test.js deleted file mode 100644 index 804114f6..00000000 --- a/Challenge/lerrybe/findWord/solve.test.js +++ /dev/null @@ -1,26 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: ['잠', '자', '고', '싶', '다', '용가리'], - answer: true, -}; -const test2 = { - input: ['맛있는', '용가리치킨'], - answer: false, -}; -const test3 = { - input: ['고질라', '용가리 ', '울트라맨'], - answer: false, -}; - -describe('findWord', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); \ No newline at end of file diff --git a/Challenge/lerrybe/forEachFilter/README.md b/Challenge/lerrybe/forEachFilter/README.md deleted file mode 100644 index 6dcbc7c2..00000000 --- a/Challenge/lerrybe/forEachFilter/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소중 40 이상인 수만 뽑아 배열을 만드세요. diff --git a/Challenge/lerrybe/forEachFilter/solve.js b/Challenge/lerrybe/forEachFilter/solve.js deleted file mode 100644 index 771a30e6..00000000 --- a/Challenge/lerrybe/forEachFilter/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.filter(elem => elem >= 40); -} - -exports.solution = solution; diff --git a/Challenge/lerrybe/forEachFilter/solve.test.js b/Challenge/lerrybe/forEachFilter/solve.test.js deleted file mode 100644 index 3d73b25c..00000000 --- a/Challenge/lerrybe/forEachFilter/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: [100, 40], -}; - -describe('forEachFilter', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/lerrybe/forEachFilterIsNaN/README.md b/Challenge/lerrybe/forEachFilterIsNaN/README.md deleted file mode 100644 index 570c030e..00000000 --- a/Challenge/lerrybe/forEachFilterIsNaN/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소중 숫자인 원소만 뽑아 배열을 만드세요. diff --git a/Challenge/lerrybe/forEachFilterIsNaN/solve.js b/Challenge/lerrybe/forEachFilterIsNaN/solve.js deleted file mode 100644 index f4937831..00000000 --- a/Challenge/lerrybe/forEachFilterIsNaN/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.filter(elem => typeof elem === 'number'); -} - -exports.solution = solution; diff --git a/Challenge/lerrybe/forEachFilterIsNaN/solve.test.js b/Challenge/lerrybe/forEachFilterIsNaN/solve.test.js deleted file mode 100644 index d6e118bb..00000000 --- a/Challenge/lerrybe/forEachFilterIsNaN/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 40, '라매', '개발자', 51.5, 'a', 88], - answer: [1, 40, 51.5, 88], -}; - -const test2 = { - input: [1, 2, 3, '4', 5, '6'], - answer: [1, 2, 3, 5], -}; - -const test3 = { - input: [-3, -2, -1, 0, 1, 2, 3], - answer: [-3, -2, -1, 0, 1, 2, 3], -}; - -describe('forEachFilterIsNaN', () => { - test('test1: 숫자,문자 판별', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2: 문자로된 숫자 판별', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3: 음수 양수 포함', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); \ No newline at end of file diff --git a/Challenge/lerrybe/forEachMap/README.md b/Challenge/lerrybe/forEachMap/README.md deleted file mode 100644 index 1e8e03c8..00000000 --- a/Challenge/lerrybe/forEachMap/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -forEach 메소드를 사용해서 배열의 각 원소 끝에 '%'를 붙인 문자열 배열을 출력하세요 diff --git a/Challenge/lerrybe/forEachMap/solve.js b/Challenge/lerrybe/forEachMap/solve.js deleted file mode 100644 index a7916d3e..00000000 --- a/Challenge/lerrybe/forEachMap/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -// write your codes -function solution(inputArray) { - const resultArray = []; - inputArray.forEach(elem => resultArray.push(`${elem}%`)); - return resultArray; -} - -exports.solution = solution; diff --git a/Challenge/lerrybe/forEachMap/solve.test.js b/Challenge/lerrybe/forEachMap/solve.test.js deleted file mode 100644 index de4868c6..00000000 --- a/Challenge/lerrybe/forEachMap/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: ['100%', '10%', '20%', '40%'], -}; - -describe('forEachMap', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/lerrybe/forEachReduce/README.md b/Challenge/lerrybe/forEachReduce/README.md deleted file mode 100644 index a984df2d..00000000 --- a/Challenge/lerrybe/forEachReduce/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -forEach 메소드를 사용해서 배열의 총 합을 출력하는 코드를 작성하세요 diff --git a/Challenge/lerrybe/forEachReduce/solve.js b/Challenge/lerrybe/forEachReduce/solve.js deleted file mode 100644 index 41c3352f..00000000 --- a/Challenge/lerrybe/forEachReduce/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.reduce((prev, curr) => prev + curr); -} - -exports.solution = solution; diff --git a/Challenge/lerrybe/forEachReduce/solve.test.js b/Challenge/lerrybe/forEachReduce/solve.test.js deleted file mode 100644 index 397e4b50..00000000 --- a/Challenge/lerrybe/forEachReduce/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: 170, -}; - -const test2 = { - input: [120, -20, -30, 0, 15], - answer: 85, -}; - -const test3 = { - input: [-10, -20, -30], - answer: -60, -}; - -describe('forEachReduce', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2: 음수가 포함된 계산', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3: 음수만 존재하는 계산', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/lerrybe/mapAddPercent/README.md b/Challenge/lerrybe/mapAddPercent/README.md deleted file mode 100644 index 75e73042..00000000 --- a/Challenge/lerrybe/mapAddPercent/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -map 메소드를 사용해 배열 각각 숫자 뒤에 %를 붙인 문자열을 만드세요 diff --git a/Challenge/lerrybe/mapAddPercent/solve.js b/Challenge/lerrybe/mapAddPercent/solve.js deleted file mode 100644 index 6be31a9f..00000000 --- a/Challenge/lerrybe/mapAddPercent/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.map(elem => `${elem}%`); -} - -exports.solution = solution; diff --git a/Challenge/lerrybe/mapAddPercent/solve.test.js b/Challenge/lerrybe/mapAddPercent/solve.test.js deleted file mode 100644 index dac1b3cc..00000000 --- a/Challenge/lerrybe/mapAddPercent/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: ['100%', '10%', '20%', '40%'], -}; - -describe('mapAddPercent', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/lerrybe/mapAppendOrder/README.md b/Challenge/lerrybe/mapAppendOrder/README.md deleted file mode 100644 index 1435623a..00000000 --- a/Challenge/lerrybe/mapAppendOrder/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열의 값을 name 프로퍼티에 넣고 몇번째 원소인지를 order에 넣은 객체의 배열을 출력하세요 diff --git a/Challenge/lerrybe/mapAppendOrder/solve.js b/Challenge/lerrybe/mapAppendOrder/solve.js deleted file mode 100644 index 9c95cd15..00000000 --- a/Challenge/lerrybe/mapAppendOrder/solve.js +++ /dev/null @@ -1,13 +0,0 @@ -// write your codes -function solution(inputArray) { - const resultArray = []; - inputArray.forEach((elem, index) => { - resultArray.push({ - "name": elem, - "order": index + 1, - }); - }); - return resultArray; -} - -exports.solution = solution; diff --git a/Challenge/lerrybe/mapAppendOrder/solve.test.js b/Challenge/lerrybe/mapAppendOrder/solve.test.js deleted file mode 100644 index e08db10c..00000000 --- a/Challenge/lerrybe/mapAppendOrder/solve.test.js +++ /dev/null @@ -1,16 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: ['홍길동', '둘리', '루피'], - answer: [ - { name: '홍길동', order: 1 }, - { name: '둘리', order: 2 }, - { name: '루피', order: 3 }, - ], -}; - -describe('mapAppendOrder', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/lerrybe/recommendAd/README.md b/Challenge/lerrybe/recommendAd/README.md deleted file mode 100644 index 132e8800..00000000 --- a/Challenge/lerrybe/recommendAd/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# 문제제목 - -사용자가 안 본 광고는? - -## 설명 - -유튜브는 사용자가 프리미엄 회원이 아닌 경우 영상 시작이나 중간에 광고가 나오도록 설정되어 있습니다. - -[2020년 유튜브 인기 광고](https://www.thinkwithgoogle.com/intl/ko-kr/marketing-strategies/video/%EB%8C%80%ED%95%9C%EB%AF%BC%EA%B5%AD-youtube-%EC%9D%B8%EA%B8%B0-%EA%B4%91%EA%B3%A0%EC%98%81%EC%83%81-2020%EB%85%84-%EC%97%B0%EB%A7%90%EA%B2%B0%EC%82%B0/)는 총 열 편으로, 사용자의 일주일간 광고 시청 이력을 통해 해당 사용자가 일주일 동안 안 본 광고를 그 다음주에 노출함으로써 광고들이 사용자에게 골고루 노출되길 원합니다. - -유저가 매일 유튜브에 접속하여 하루 한 편 이상의 광고를 보았다고 가정할 때, 이 유저가 안 본 광고는 무엇인지 출력해주세요. - -## Expected Output - -[ '동원F&B' ] diff --git a/Challenge/lerrybe/recommendAd/solve.js b/Challenge/lerrybe/recommendAd/solve.js deleted file mode 100644 index 8ba50a9e..00000000 --- a/Challenge/lerrybe/recommendAd/solve.js +++ /dev/null @@ -1,26 +0,0 @@ -const userHistory = [ - { date: '2020-11-03', watched: ['KT', 'BBQ'] }, - { date: '2020-11-04', watched: ['정관장', 'KT', '딱좋은데이'] }, - { date: '2020-11-05', watched: ['그랑사가', '농심'] }, - { date: '2020-11-06', watched: ['BBQ'] }, - { date: '2020-11-07', watched: ['쌍용자동차', 'BBQ', 'KT'] }, - { date: '2020-11-08', watched: ['켈로그코리아', '빙그레'] }, - { date: '2020-11-09', watched: ['KT', '그랑사가', '빙그레'] }, -]; - -// write your codes -function solution(inputArray) { - inputArrayCopy = [...inputArray]; - userHistory.map((history) => { - history.watched.map((ad) => { - if (inputArrayCopy.includes(ad)) { - const index = inputArrayCopy.indexOf(ad); - delete inputArrayCopy[index]; - } - }) - }); - - return inputArrayCopy.filter((elem) => elem !== undefined); -} - -exports.solution = solution; diff --git a/Challenge/lerrybe/recommendAd/solve.test.js b/Challenge/lerrybe/recommendAd/solve.test.js deleted file mode 100644 index 8a0f6464..00000000 --- a/Challenge/lerrybe/recommendAd/solve.test.js +++ /dev/null @@ -1,23 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - '동원F&B', - '정관장', - 'KT', - 'BBQ', - '그랑사가', - '농심', - '딱좋은데이', - '빙그레', - '쌍용자동차', - '켈로그코리아', - ], - answer: ['동원F&B'], -}; - -describe('recommendAd', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/lerrybe/reduceNameNickname/README.md b/Challenge/lerrybe/reduceNameNickname/README.md deleted file mode 100644 index b6920e05..00000000 --- a/Challenge/lerrybe/reduceNameNickname/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -입력받은 객채배열의 nickname을 key, name을 value로 하는 객체를 출력하세요 diff --git a/Challenge/lerrybe/reduceNameNickname/solve.js b/Challenge/lerrybe/reduceNameNickname/solve.js deleted file mode 100644 index b692a0a0..00000000 --- a/Challenge/lerrybe/reduceNameNickname/solve.js +++ /dev/null @@ -1,10 +0,0 @@ -// write your codes -function solution(inputArray) { - answer = {}; - inputArray.forEach(({ nickname, name }) => { - answer[nickname] = name - }); - return answer; -} - -exports.solution = solution; diff --git a/Challenge/lerrybe/reduceNameNickname/solve.test.js b/Challenge/lerrybe/reduceNameNickname/solve.test.js deleted file mode 100644 index 67b74529..00000000 --- a/Challenge/lerrybe/reduceNameNickname/solve.test.js +++ /dev/null @@ -1,25 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '홍길동', - nickname: 'hong', - }, - { - name: '둘리', - nickname: '2li', - }, - { - name: '오스트랄로피테쿠스', - nickname: '1Cin', - }, - ], - answer: { hong: '홍길동', '2li': '둘리', '1Cin': '오스트랄로피테쿠스' }, -}; - -describe('reduceNameNickname', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/lerrybe/reduceSum/README.md b/Challenge/lerrybe/reduceSum/README.md deleted file mode 100644 index 8c607eb2..00000000 --- a/Challenge/lerrybe/reduceSum/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -reduce 메소드를 사용해서 배열의 모든 수의 합을 구하세요. - -## Expected Output - -106 diff --git a/Challenge/lerrybe/reduceSum/solve.js b/Challenge/lerrybe/reduceSum/solve.js deleted file mode 100644 index 41c3352f..00000000 --- a/Challenge/lerrybe/reduceSum/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.reduce((prev, curr) => prev + curr); -} - -exports.solution = solution; diff --git a/Challenge/lerrybe/reduceSum/solve.test.js b/Challenge/lerrybe/reduceSum/solve.test.js deleted file mode 100644 index 046c40cb..00000000 --- a/Challenge/lerrybe/reduceSum/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [10, 3, 20, 5, 8, 60], - answer: 106, -}; - -describe('reduceSum', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/lerrybe/sortByPrice/README.md b/Challenge/lerrybe/sortByPrice/README.md deleted file mode 100644 index b1ccf70e..00000000 --- a/Challenge/lerrybe/sortByPrice/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 - -## Expected Output - -[ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 } -] diff --git a/Challenge/lerrybe/sortByPrice/solve.js b/Challenge/lerrybe/sortByPrice/solve.js deleted file mode 100644 index d51dbd21..00000000 --- a/Challenge/lerrybe/sortByPrice/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.sort((a, b) => { - return a.price - b.price; - }); -} - -exports.solution = solution; diff --git a/Challenge/lerrybe/sortByPrice/solve.test.js b/Challenge/lerrybe/sortByPrice/solve.test.js deleted file mode 100644 index 3d6a3431..00000000 --- a/Challenge/lerrybe/sortByPrice/solve.test.js +++ /dev/null @@ -1,34 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '사과', - price: 1000, - }, - { - name: '수박', - price: 5000, - }, - { - name: '당근', - price: 2000, - }, - { - name: '참외', - price: 10000, - }, - ], - answer: [ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 }, - ], -}; - -describe('sortByPrice', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/lerrybe/sortByPriceAndQuantity/README.md b/Challenge/lerrybe/sortByPriceAndQuantity/README.md deleted file mode 100644 index 41cd5c95..00000000 --- a/Challenge/lerrybe/sortByPriceAndQuantity/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 -만약 price가 같다면 quantity기준으로 오름차순 정렬하세요 - -## Expected Output - -[ - { name: '사과', price: 1000, quantity: 2 }, - { name: '오이', price: 2000, quantity: 49 }, - { name: '당근', price: 2000, quantity: 50 }, - { name: '참외', price: 5000, quantity: 10 }, - { name: '수박', price: 5000, quantity: 20 } -] diff --git a/Challenge/lerrybe/sortByPriceAndQuantity/solve.js b/Challenge/lerrybe/sortByPriceAndQuantity/solve.js deleted file mode 100644 index b5e4b63b..00000000 --- a/Challenge/lerrybe/sortByPriceAndQuantity/solve.js +++ /dev/null @@ -1,13 +0,0 @@ -// write your codes -function solution(inputArray) { - const result = inputArray.sort((a, b) => { - if (a.price !== b.price) { - return a.price - b.price; - } - return a.quantity - b.quantity - }); - - return result; -} - -exports.solution = solution; diff --git a/Challenge/lerrybe/sortByPriceAndQuantity/solve.test.js b/Challenge/lerrybe/sortByPriceAndQuantity/solve.test.js deleted file mode 100644 index 424f42b7..00000000 --- a/Challenge/lerrybe/sortByPriceAndQuantity/solve.test.js +++ /dev/null @@ -1,44 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '사과', - price: 1000, - quantity: 2, - }, - { - name: '수박', - price: 5000, - quantity: 20, - }, - { - name: '당근', - price: 2000, - quantity: 50, - }, - { - name: '참외', - price: 5000, - quantity: 10, - }, - { - name: '오이', - price: 2000, - quantity: 49, - }, - ], - answer: [ - { name: '사과', price: 1000, quantity: 2 }, - { name: '오이', price: 2000, quantity: 49 }, - { name: '당근', price: 2000, quantity: 50 }, - { name: '참외', price: 5000, quantity: 10 }, - { name: '수박', price: 5000, quantity: 20 }, - ], -}; - -describe('sortByPriceAndQuantity', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/lerrybe/spreadOperatorMaxValue/README.md b/Challenge/lerrybe/spreadOperatorMaxValue/README.md deleted file mode 100644 index 164b68a1..00000000 --- a/Challenge/lerrybe/spreadOperatorMaxValue/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -Spread Operator를 이용해서 값의 최대, 최소값을 구하세요 diff --git a/Challenge/lerrybe/spreadOperatorMaxValue/solve.js b/Challenge/lerrybe/spreadOperatorMaxValue/solve.js deleted file mode 100644 index 51ddcbcd..00000000 --- a/Challenge/lerrybe/spreadOperatorMaxValue/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -// write your codes -function solution(inputArray) { - const maxNum = Math.max(...inputArray); - const minNum = Math.min(...inputArray); - return `max : ${maxNum}, min : ${minNum}`; -} - -exports.solution = solution; diff --git a/Challenge/lerrybe/spreadOperatorMaxValue/solve.test.js b/Challenge/lerrybe/spreadOperatorMaxValue/solve.test.js deleted file mode 100644 index 26f2abf9..00000000 --- a/Challenge/lerrybe/spreadOperatorMaxValue/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], - answer: 'max : 10, min : 1', -}; - -describe('spreadOperatorMaxValue', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/lhk3337/everyArray/README.md b/Challenge/lhk3337/everyArray/README.md deleted file mode 100644 index 442558f6..00000000 --- a/Challenge/lhk3337/everyArray/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -every를 이용해서 모든 원소가 짝수인지 아닌지를 판별하세요 - -## Expected Output - -true \ No newline at end of file diff --git a/Challenge/lhk3337/everyArray/solve.js b/Challenge/lhk3337/everyArray/solve.js deleted file mode 100644 index fb5f59cd..00000000 --- a/Challenge/lhk3337/everyArray/solve.js +++ /dev/null @@ -1,5 +0,0 @@ -function solution(inputArray) { - return inputArray.every((arr) => arr % 2 === 0); -} - -exports.solution = solution; diff --git a/Challenge/lhk3337/everyArray/solve.test.js b/Challenge/lhk3337/everyArray/solve.test.js deleted file mode 100644 index b03e4791..00000000 --- a/Challenge/lhk3337/everyArray/solve.test.js +++ /dev/null @@ -1,21 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [2, 4, 6, 8, 10], - answer: true, -}; - -const test2 = { - input: [2, 3, 6, 8, 10], - answer: false, -}; - -describe('everyArray', () => { - test('모두 짝수면 true여야 한다.', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - - test('홀수가 있으면 false여야 한다.', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); -}); diff --git a/Challenge/lhk3337/expDivOdd/README.md b/Challenge/lhk3337/expDivOdd/README.md deleted file mode 100644 index c07ab10b..00000000 --- a/Challenge/lhk3337/expDivOdd/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -제곱한 후 3으로 나눈 나머지가 홀수인 것 을 뽑은 배열의 총 합을 구하세요. diff --git a/Challenge/lhk3337/expDivOdd/solve.js b/Challenge/lhk3337/expDivOdd/solve.js deleted file mode 100644 index a26974c8..00000000 --- a/Challenge/lhk3337/expDivOdd/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -function solution(inputArray) { - return inputArray - .map((arr) => arr ** 2) - .filter((a) => a % 3 !== 0) - .reduce((prev, curr) => prev + curr); -} - -exports.solution = solution; diff --git a/Challenge/lhk3337/expDivOdd/solve.test.js b/Challenge/lhk3337/expDivOdd/solve.test.js deleted file mode 100644 index ca37fcc3..00000000 --- a/Challenge/lhk3337/expDivOdd/solve.test.js +++ /dev/null @@ -1,21 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 7, 3, 4, 6], - answer: 66, -}; - -const test2 = { - input: [2, 3, 6, 8, 10], - answer: 168, -}; - -describe('everyArray', () => { - test('1, 7, 3, 4, 6', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - - test('2, 3, 6, 8, 10', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); -}); diff --git a/Challenge/lhk3337/filterAge/README.md b/Challenge/lhk3337/filterAge/README.md deleted file mode 100644 index 873a15c1..00000000 --- a/Challenge/lhk3337/filterAge/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소의 age가 30이상 50미만인 사람만 있는 객체의 배열을 만드세요 diff --git a/Challenge/lhk3337/filterAge/solve.js b/Challenge/lhk3337/filterAge/solve.js deleted file mode 100644 index 6baa5db2..00000000 --- a/Challenge/lhk3337/filterAge/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.filter((arr) => (arr.age >= 30 && arr.age < 50 ? arr.name : null)); -} - -exports.solution = solution; diff --git a/Challenge/lhk3337/filterAge/solve.test.js b/Challenge/lhk3337/filterAge/solve.test.js deleted file mode 100644 index b9081601..00000000 --- a/Challenge/lhk3337/filterAge/solve.test.js +++ /dev/null @@ -1,32 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '영미', - age: 25, - }, - { - name: '일미', - age: 35, - }, - { - name: '이미', - age: 45, - }, - { - name: '삼미', - age: 55, - }, - ], - answer: [ - { name: '일미', age: 35 }, - { name: '이미', age: 45 }, - ], -}; - -describe('filterAge', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/lhk3337/filterIntersection/README.md b/Challenge/lhk3337/filterIntersection/README.md deleted file mode 100644 index d7c9ad39..00000000 --- a/Challenge/lhk3337/filterIntersection/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# 문제제목 - -## 설명 - -두 배열의 교집합을 출력하세요! diff --git a/Challenge/lhk3337/filterIntersection/solve.js b/Challenge/lhk3337/filterIntersection/solve.js deleted file mode 100644 index 10c805c8..00000000 --- a/Challenge/lhk3337/filterIntersection/solve.js +++ /dev/null @@ -1,5 +0,0 @@ -function solution(inputArray1, inputArray2) { - return inputArray1.filter((arr) => inputArray2.includes(arr)); -} - -exports.solution = solution; diff --git a/Challenge/lhk3337/filterIntersection/solve.test.js b/Challenge/lhk3337/filterIntersection/solve.test.js deleted file mode 100644 index 576cbc86..00000000 --- a/Challenge/lhk3337/filterIntersection/solve.test.js +++ /dev/null @@ -1,15 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: { - A: [1, 2, 3, 4, 5], - B: [3, 4, 5, 6, 7], - }, - answer: [3, 4, 5], -}; - -describe('filterIntersection', () => { - test('test1', () => { - expect(solution(test1.input.A, test1.input.B)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/lhk3337/filterOdd/README.md b/Challenge/lhk3337/filterOdd/README.md deleted file mode 100644 index cf9eda79..00000000 --- a/Challenge/lhk3337/filterOdd/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -홀수만 뽑아 배열로 만드세요 diff --git a/Challenge/lhk3337/filterOdd/solve.js b/Challenge/lhk3337/filterOdd/solve.js deleted file mode 100644 index c9517456..00000000 --- a/Challenge/lhk3337/filterOdd/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.filter((arr) => arr % 2 !== 0); -} - -exports.solution = solution; diff --git a/Challenge/lhk3337/filterOdd/solve.test.js b/Challenge/lhk3337/filterOdd/solve.test.js deleted file mode 100644 index 8cfd7f5a..00000000 --- a/Challenge/lhk3337/filterOdd/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [4, 2, 5, 1, 3], - answer: [5, 1, 3], -}; - -const test2 = { - input: [4, 2, 6, 8, 50, 16], - answer: [], -}; - -const test3 = { - input: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], - answer: [1, 3, 5, 7, 9, 11], -}; - -describe('filterOdd', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/lhk3337/findWord/README.md b/Challenge/lhk3337/findWord/README.md deleted file mode 100644 index 8ef123f4..00000000 --- a/Challenge/lhk3337/findWord/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -용가리라는 단어가 있으면 true 없으면 false를 출력 - -## Expected Output - -true diff --git a/Challenge/lhk3337/findWord/solve.js b/Challenge/lhk3337/findWord/solve.js deleted file mode 100644 index 24f6e193..00000000 --- a/Challenge/lhk3337/findWord/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.includes("용가리"); -} - -exports.solution = solution; diff --git a/Challenge/lhk3337/findWord/solve.test.js b/Challenge/lhk3337/findWord/solve.test.js deleted file mode 100644 index 804114f6..00000000 --- a/Challenge/lhk3337/findWord/solve.test.js +++ /dev/null @@ -1,26 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: ['잠', '자', '고', '싶', '다', '용가리'], - answer: true, -}; -const test2 = { - input: ['맛있는', '용가리치킨'], - answer: false, -}; -const test3 = { - input: ['고질라', '용가리 ', '울트라맨'], - answer: false, -}; - -describe('findWord', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); \ No newline at end of file diff --git a/Challenge/lhk3337/forEachFilter/README.md b/Challenge/lhk3337/forEachFilter/README.md deleted file mode 100644 index 6dcbc7c2..00000000 --- a/Challenge/lhk3337/forEachFilter/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소중 40 이상인 수만 뽑아 배열을 만드세요. diff --git a/Challenge/lhk3337/forEachFilter/solve.js b/Challenge/lhk3337/forEachFilter/solve.js deleted file mode 100644 index bbb418cd..00000000 --- a/Challenge/lhk3337/forEachFilter/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.filter((arr) => arr >= 40); -} - -exports.solution = solution; diff --git a/Challenge/lhk3337/forEachFilter/solve.test.js b/Challenge/lhk3337/forEachFilter/solve.test.js deleted file mode 100644 index 3d73b25c..00000000 --- a/Challenge/lhk3337/forEachFilter/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: [100, 40], -}; - -describe('forEachFilter', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/lhk3337/forEachFilterIsNaN/README.md b/Challenge/lhk3337/forEachFilterIsNaN/README.md deleted file mode 100644 index 570c030e..00000000 --- a/Challenge/lhk3337/forEachFilterIsNaN/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소중 숫자인 원소만 뽑아 배열을 만드세요. diff --git a/Challenge/lhk3337/forEachFilterIsNaN/solve.js b/Challenge/lhk3337/forEachFilterIsNaN/solve.js deleted file mode 100644 index 225c1d94..00000000 --- a/Challenge/lhk3337/forEachFilterIsNaN/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.filter((arr) => Number.isFinite(arr)); -} - -exports.solution = solution; diff --git a/Challenge/lhk3337/forEachFilterIsNaN/solve.test.js b/Challenge/lhk3337/forEachFilterIsNaN/solve.test.js deleted file mode 100644 index d6e118bb..00000000 --- a/Challenge/lhk3337/forEachFilterIsNaN/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 40, '라매', '개발자', 51.5, 'a', 88], - answer: [1, 40, 51.5, 88], -}; - -const test2 = { - input: [1, 2, 3, '4', 5, '6'], - answer: [1, 2, 3, 5], -}; - -const test3 = { - input: [-3, -2, -1, 0, 1, 2, 3], - answer: [-3, -2, -1, 0, 1, 2, 3], -}; - -describe('forEachFilterIsNaN', () => { - test('test1: 숫자,문자 판별', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2: 문자로된 숫자 판별', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3: 음수 양수 포함', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); \ No newline at end of file diff --git a/Challenge/lhk3337/forEachMap/README.md b/Challenge/lhk3337/forEachMap/README.md deleted file mode 100644 index 1e8e03c8..00000000 --- a/Challenge/lhk3337/forEachMap/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -forEach 메소드를 사용해서 배열의 각 원소 끝에 '%'를 붙인 문자열 배열을 출력하세요 diff --git a/Challenge/lhk3337/forEachMap/solve.js b/Challenge/lhk3337/forEachMap/solve.js deleted file mode 100644 index 89399a89..00000000 --- a/Challenge/lhk3337/forEachMap/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -// write your codes -function solution(inputArray) { - let newArr = []; - inputArray.forEach((arr) => newArr.push(`${arr}%`)); - return newArr; -} - -exports.solution = solution; diff --git a/Challenge/lhk3337/forEachMap/solve.test.js b/Challenge/lhk3337/forEachMap/solve.test.js deleted file mode 100644 index de4868c6..00000000 --- a/Challenge/lhk3337/forEachMap/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: ['100%', '10%', '20%', '40%'], -}; - -describe('forEachMap', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/lhk3337/forEachReduce/README.md b/Challenge/lhk3337/forEachReduce/README.md deleted file mode 100644 index a984df2d..00000000 --- a/Challenge/lhk3337/forEachReduce/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -forEach 메소드를 사용해서 배열의 총 합을 출력하는 코드를 작성하세요 diff --git a/Challenge/lhk3337/forEachReduce/solve.js b/Challenge/lhk3337/forEachReduce/solve.js deleted file mode 100644 index c5249e51..00000000 --- a/Challenge/lhk3337/forEachReduce/solve.js +++ /dev/null @@ -1,10 +0,0 @@ -// write your codes -function solution(inputArray) { - let sum = 0; - inputArray.forEach((arr) => { - sum = sum + arr; - }); - return sum; -} - -exports.solution = solution; diff --git a/Challenge/lhk3337/forEachReduce/solve.test.js b/Challenge/lhk3337/forEachReduce/solve.test.js deleted file mode 100644 index 397e4b50..00000000 --- a/Challenge/lhk3337/forEachReduce/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: 170, -}; - -const test2 = { - input: [120, -20, -30, 0, 15], - answer: 85, -}; - -const test3 = { - input: [-10, -20, -30], - answer: -60, -}; - -describe('forEachReduce', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2: 음수가 포함된 계산', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3: 음수만 존재하는 계산', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/lhk3337/mapAddPercent/README.md b/Challenge/lhk3337/mapAddPercent/README.md deleted file mode 100644 index 75e73042..00000000 --- a/Challenge/lhk3337/mapAddPercent/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -map 메소드를 사용해 배열 각각 숫자 뒤에 %를 붙인 문자열을 만드세요 diff --git a/Challenge/lhk3337/mapAddPercent/solve.js b/Challenge/lhk3337/mapAddPercent/solve.js deleted file mode 100644 index 0e9ebf68..00000000 --- a/Challenge/lhk3337/mapAddPercent/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.map((arr) => `${arr}%`); -} - -exports.solution = solution; diff --git a/Challenge/lhk3337/mapAddPercent/solve.test.js b/Challenge/lhk3337/mapAddPercent/solve.test.js deleted file mode 100644 index dac1b3cc..00000000 --- a/Challenge/lhk3337/mapAddPercent/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: ['100%', '10%', '20%', '40%'], -}; - -describe('mapAddPercent', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/lhk3337/mapAppendOrder/README.md b/Challenge/lhk3337/mapAppendOrder/README.md deleted file mode 100644 index 1435623a..00000000 --- a/Challenge/lhk3337/mapAppendOrder/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열의 값을 name 프로퍼티에 넣고 몇번째 원소인지를 order에 넣은 객체의 배열을 출력하세요 diff --git a/Challenge/lhk3337/mapAppendOrder/solve.js b/Challenge/lhk3337/mapAppendOrder/solve.js deleted file mode 100644 index 6266f87d..00000000 --- a/Challenge/lhk3337/mapAppendOrder/solve.js +++ /dev/null @@ -1,12 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.map((arr, index) => { - const answer = { - name: arr, - order: index + 1, - }; - return answer; - }); -} - -exports.solution = solution; diff --git a/Challenge/lhk3337/mapAppendOrder/solve.test.js b/Challenge/lhk3337/mapAppendOrder/solve.test.js deleted file mode 100644 index e08db10c..00000000 --- a/Challenge/lhk3337/mapAppendOrder/solve.test.js +++ /dev/null @@ -1,16 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: ['홍길동', '둘리', '루피'], - answer: [ - { name: '홍길동', order: 1 }, - { name: '둘리', order: 2 }, - { name: '루피', order: 3 }, - ], -}; - -describe('mapAppendOrder', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/lhk3337/reduceSum/README.md b/Challenge/lhk3337/reduceSum/README.md deleted file mode 100644 index 8c607eb2..00000000 --- a/Challenge/lhk3337/reduceSum/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -reduce 메소드를 사용해서 배열의 모든 수의 합을 구하세요. - -## Expected Output - -106 diff --git a/Challenge/lhk3337/reduceSum/solve.js b/Challenge/lhk3337/reduceSum/solve.js deleted file mode 100644 index 41c3352f..00000000 --- a/Challenge/lhk3337/reduceSum/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.reduce((prev, curr) => prev + curr); -} - -exports.solution = solution; diff --git a/Challenge/lhk3337/reduceSum/solve.test.js b/Challenge/lhk3337/reduceSum/solve.test.js deleted file mode 100644 index 046c40cb..00000000 --- a/Challenge/lhk3337/reduceSum/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [10, 3, 20, 5, 8, 60], - answer: 106, -}; - -describe('reduceSum', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/lhk3337/sortByPrice/README.md b/Challenge/lhk3337/sortByPrice/README.md deleted file mode 100644 index b1ccf70e..00000000 --- a/Challenge/lhk3337/sortByPrice/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 - -## Expected Output - -[ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 } -] diff --git a/Challenge/lhk3337/sortByPrice/solve.js b/Challenge/lhk3337/sortByPrice/solve.js deleted file mode 100644 index d51dbd21..00000000 --- a/Challenge/lhk3337/sortByPrice/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.sort((a, b) => { - return a.price - b.price; - }); -} - -exports.solution = solution; diff --git a/Challenge/lhk3337/sortByPrice/solve.test.js b/Challenge/lhk3337/sortByPrice/solve.test.js deleted file mode 100644 index 3d6a3431..00000000 --- a/Challenge/lhk3337/sortByPrice/solve.test.js +++ /dev/null @@ -1,34 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '사과', - price: 1000, - }, - { - name: '수박', - price: 5000, - }, - { - name: '당근', - price: 2000, - }, - { - name: '참외', - price: 10000, - }, - ], - answer: [ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 }, - ], -}; - -describe('sortByPrice', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/lhk3337/sortByPriceAndQuantity/README.md b/Challenge/lhk3337/sortByPriceAndQuantity/README.md deleted file mode 100644 index 41cd5c95..00000000 --- a/Challenge/lhk3337/sortByPriceAndQuantity/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 -만약 price가 같다면 quantity기준으로 오름차순 정렬하세요 - -## Expected Output - -[ - { name: '사과', price: 1000, quantity: 2 }, - { name: '오이', price: 2000, quantity: 49 }, - { name: '당근', price: 2000, quantity: 50 }, - { name: '참외', price: 5000, quantity: 10 }, - { name: '수박', price: 5000, quantity: 20 } -] diff --git a/Challenge/lhk3337/sortByPriceAndQuantity/solve.js b/Challenge/lhk3337/sortByPriceAndQuantity/solve.js deleted file mode 100644 index f69265a8..00000000 --- a/Challenge/lhk3337/sortByPriceAndQuantity/solve.js +++ /dev/null @@ -1,14 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.sort((a, b) => { - if (a.price > b.price) { - return 1; - } - if (a.price < b.price) { - return -1; - } - return a.quantity - b.quantity; - }); -} - -exports.solution = solution; diff --git a/Challenge/lhk3337/sortByPriceAndQuantity/solve.test.js b/Challenge/lhk3337/sortByPriceAndQuantity/solve.test.js deleted file mode 100644 index 424f42b7..00000000 --- a/Challenge/lhk3337/sortByPriceAndQuantity/solve.test.js +++ /dev/null @@ -1,44 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '사과', - price: 1000, - quantity: 2, - }, - { - name: '수박', - price: 5000, - quantity: 20, - }, - { - name: '당근', - price: 2000, - quantity: 50, - }, - { - name: '참외', - price: 5000, - quantity: 10, - }, - { - name: '오이', - price: 2000, - quantity: 49, - }, - ], - answer: [ - { name: '사과', price: 1000, quantity: 2 }, - { name: '오이', price: 2000, quantity: 49 }, - { name: '당근', price: 2000, quantity: 50 }, - { name: '참외', price: 5000, quantity: 10 }, - { name: '수박', price: 5000, quantity: 20 }, - ], -}; - -describe('sortByPriceAndQuantity', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/lhk3337/spreadOperatorMaxValue/README.md b/Challenge/lhk3337/spreadOperatorMaxValue/README.md deleted file mode 100644 index 164b68a1..00000000 --- a/Challenge/lhk3337/spreadOperatorMaxValue/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -Spread Operator를 이용해서 값의 최대, 최소값을 구하세요 diff --git a/Challenge/lhk3337/spreadOperatorMaxValue/solve.js b/Challenge/lhk3337/spreadOperatorMaxValue/solve.js deleted file mode 100644 index 49c5cf13..00000000 --- a/Challenge/lhk3337/spreadOperatorMaxValue/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return `max : ${Math.max(...inputArray)}, min : ${Math.min(...inputArray)}`; -} - -exports.solution = solution; diff --git a/Challenge/lhk3337/spreadOperatorMaxValue/solve.test.js b/Challenge/lhk3337/spreadOperatorMaxValue/solve.test.js deleted file mode 100644 index 26f2abf9..00000000 --- a/Challenge/lhk3337/spreadOperatorMaxValue/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], - answer: 'max : 10, min : 1', -}; - -describe('spreadOperatorMaxValue', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/lsm-algorithmic-enjoy/everyArray/README.md b/Challenge/lsm-algorithmic-enjoy/everyArray/README.md deleted file mode 100644 index 442558f6..00000000 --- a/Challenge/lsm-algorithmic-enjoy/everyArray/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -every를 이용해서 모든 원소가 짝수인지 아닌지를 판별하세요 - -## Expected Output - -true \ No newline at end of file diff --git a/Challenge/lsm-algorithmic-enjoy/everyArray/solve.js b/Challenge/lsm-algorithmic-enjoy/everyArray/solve.js deleted file mode 100644 index cde699b5..00000000 --- a/Challenge/lsm-algorithmic-enjoy/everyArray/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -function solution(inputArray) { - const answer = inputArray.every((el) => el % 2 === 0); - return answer; -} - -exports.solution = solution; diff --git a/Challenge/lsm-algorithmic-enjoy/everyArray/solve.test.js b/Challenge/lsm-algorithmic-enjoy/everyArray/solve.test.js deleted file mode 100644 index 7dac26a4..00000000 --- a/Challenge/lsm-algorithmic-enjoy/everyArray/solve.test.js +++ /dev/null @@ -1,21 +0,0 @@ -const { solution } = require("./solve"); - -const test1 = { - input: [2, 4, 6, 8, 10], - answer: true, -}; - -const test2 = { - input: [2, 3, 6, 8, 10], - answer: false, -}; - -describe("everyArray", () => { - test("모두 짝수면 true여야 한다.", () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - - test("홀수가 있으면 false여야 한다.", () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); -}); diff --git a/Challenge/lsm-algorithmic-enjoy/expDivOdd/README.md b/Challenge/lsm-algorithmic-enjoy/expDivOdd/README.md deleted file mode 100644 index c07ab10b..00000000 --- a/Challenge/lsm-algorithmic-enjoy/expDivOdd/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -제곱한 후 3으로 나눈 나머지가 홀수인 것 을 뽑은 배열의 총 합을 구하세요. diff --git a/Challenge/lsm-algorithmic-enjoy/expDivOdd/solve.js b/Challenge/lsm-algorithmic-enjoy/expDivOdd/solve.js deleted file mode 100644 index 8c5bcbe4..00000000 --- a/Challenge/lsm-algorithmic-enjoy/expDivOdd/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -function solution(inputArray) { - const result = inputArray - .map((el) => el * el) - .filter((el) => el % 3 === 1) - .reduce((acc, el) => acc + el, 0); - return result; -} - -exports.solution = solution; diff --git a/Challenge/lsm-algorithmic-enjoy/expDivOdd/solve.test.js b/Challenge/lsm-algorithmic-enjoy/expDivOdd/solve.test.js deleted file mode 100644 index ca37fcc3..00000000 --- a/Challenge/lsm-algorithmic-enjoy/expDivOdd/solve.test.js +++ /dev/null @@ -1,21 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 7, 3, 4, 6], - answer: 66, -}; - -const test2 = { - input: [2, 3, 6, 8, 10], - answer: 168, -}; - -describe('everyArray', () => { - test('1, 7, 3, 4, 6', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - - test('2, 3, 6, 8, 10', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); -}); diff --git a/Challenge/lsm-algorithmic-enjoy/figureSkating/README.md b/Challenge/lsm-algorithmic-enjoy/figureSkating/README.md deleted file mode 100644 index 54b85fbd..00000000 --- a/Challenge/lsm-algorithmic-enjoy/figureSkating/README.md +++ /dev/null @@ -1,35 +0,0 @@ -## 설명 - -점수를 계산해서 점수가 높은 순으로 name과 score를 가진 객체의 배열을 출력하세요. -단 실격자는 출력하지 않습니다. - -### 피겨 점수 기준 - -피겨 점수는 ‘기술점수(TES)+예술점수(PCS)-감점’으로 구성된다. - -기술점수(TES·Total Element Score)는 기본점수에 수행점수(GOE·Grade Of Execution)를 합산해 도출한다. - -심판은 선수들이 점프와 스핀의 기술을 제대로 수행하는지 살핀다. 점프에선 회전수를 제대로 지켰는지, 에지를 제대로 사용했는지에 따라 ‘롱 에지’(잘못된 에지 사용)나 ‘다운그레이드’(난이도 하락), ‘어텐션’(주의) 등의 판정을 내린다. 스핀과 스텝시퀀스에 붙는 레벨(1~4)도 이들이 결정한다. - -9명의 심판은 선수들이 미리 제출한 연기 구성표를 기준으로 과제별 기본점수에서 가·감점을 한다. 이른바 ‘GOE’라 불리는 수행점수다. - -쇼트프로그램은 점프 3개, 스핀 3개, 스텝 1개의 수행과제가 반드시 포함돼야 한다. - -예술점수(PCS·Total Program Component Score)는 프로그램의 완성도에 영향을 미치는 스케이팅 기술·동작의 연결·연기·안무·곡 해석 등 5가지를 평가한다. - -마지막으로 감점이 반영된다. 감점 항목이 발생할 때마다 1점씩 감점된다. - -원문보기: -http://news.khan.co.kr/kh_news/khan_art_view.html?art_id=201402172146545#csidx6329aebb6a02152bca884614a7f0544 - -### 판정 기준 - -- 점수가 가장 높은 사람이 1등이다. -- 점수는 기술점수(TES) + 예술점수(PCS) - 감점 으로 구성된다. -- 기술점수(TES)는 기본점수 \* 수행점수(GOE)를 합산해 도출한다. -- 필수 수행과제를 수행하지 못했을 시 실격이다. - -### 필수 수행과제 - -- 쇼트프로그램은 점프 3개, 스핀 3개, 스텝 1개의 수행과제가 반드시 포함돼야 한다. -- 점프와 스핀을 4번 이상 수행했을 시 가장 잘한 3개를 기준으로 한다. diff --git a/Challenge/lsm-algorithmic-enjoy/figureSkating/solve.js b/Challenge/lsm-algorithmic-enjoy/figureSkating/solve.js deleted file mode 100644 index a88c90f8..00000000 --- a/Challenge/lsm-algorithmic-enjoy/figureSkating/solve.js +++ /dev/null @@ -1,51 +0,0 @@ -const baseScore = { - jump: 10, - spin: 20, - step: 15, -}; - -const baseAssignment = { - jump: 3, - spin: 3, - step: 1, -}; - -function solution(inputArray) { - // write your codes - - const isNotDisqualification = (el) => { - if (el.goe.jump.length < baseAssignment.jump) return false; - if (el.goe.spin.length < baseAssignment.spin) return false; - if (el.goe.step.length < baseAssignment.step) return false; - return true; - }; - - const calculateScoreWithName = (el) => { - const tes = Object.entries(el.goe).reduce((acc, goeItem) => { - return ( - acc + - goeItem[1] - .sort((a, b) => b - a) - .slice(0, 3) - .reduce((goeAcc, score) => { - return goeAcc + baseScore[goeItem[0]] * score; - }, 0) - ); - }, 0); - return { - name: el.name, - score: tes + el.pcs - el.penalty, - }; - }; - - const compareByScore = (a, b) => b.score - a.score; - - const result = inputArray - .filter(isNotDisqualification) - .map(calculateScoreWithName) - .sort(compareByScore); - return result; -} - -exports.solution = solution; -// write your codes diff --git a/Challenge/lsm-algorithmic-enjoy/figureSkating/solve.test.js b/Challenge/lsm-algorithmic-enjoy/figureSkating/solve.test.js deleted file mode 100644 index 7bceadf1..00000000 --- a/Challenge/lsm-algorithmic-enjoy/figureSkating/solve.test.js +++ /dev/null @@ -1,46 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '김연아', - goe: { - jump: [10, 9, 10], - spin: [10, 10, 10], - step: [9], - }, - pcs: 30, - penalty: 0, - }, - { - name: '피겨의 신', - goe: { - jump: [10000, 10000], - spin: [10000, 10000, 10000], - step: [10000], - }, - pcs: 100000, - penalty: 0, - }, - { - name: '아사다 마오', - goe: { - jump: [9, 6, 8, 9], - spin: [9, 9, 9], - step: [8], - }, - pcs: 29, - penalty: 10, - }, - ], - answer: [ - { name: '김연아', score: 1055 }, - { name: '아사다 마오', score: 939 }, - ], -}; - -describe('everyArray', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/lsm-algorithmic-enjoy/filterAge/README.md b/Challenge/lsm-algorithmic-enjoy/filterAge/README.md deleted file mode 100644 index 873a15c1..00000000 --- a/Challenge/lsm-algorithmic-enjoy/filterAge/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소의 age가 30이상 50미만인 사람만 있는 객체의 배열을 만드세요 diff --git a/Challenge/lsm-algorithmic-enjoy/filterAge/solve.js b/Challenge/lsm-algorithmic-enjoy/filterAge/solve.js deleted file mode 100644 index 7ce80703..00000000 --- a/Challenge/lsm-algorithmic-enjoy/filterAge/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.filter(({ age }) => age >= 30 && age < 50); -} - -exports.solution = solution; diff --git a/Challenge/lsm-algorithmic-enjoy/filterAge/solve.test.js b/Challenge/lsm-algorithmic-enjoy/filterAge/solve.test.js deleted file mode 100644 index b9081601..00000000 --- a/Challenge/lsm-algorithmic-enjoy/filterAge/solve.test.js +++ /dev/null @@ -1,32 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '영미', - age: 25, - }, - { - name: '일미', - age: 35, - }, - { - name: '이미', - age: 45, - }, - { - name: '삼미', - age: 55, - }, - ], - answer: [ - { name: '일미', age: 35 }, - { name: '이미', age: 45 }, - ], -}; - -describe('filterAge', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/lsm-algorithmic-enjoy/filterIntersection/README.md b/Challenge/lsm-algorithmic-enjoy/filterIntersection/README.md deleted file mode 100644 index d7c9ad39..00000000 --- a/Challenge/lsm-algorithmic-enjoy/filterIntersection/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# 문제제목 - -## 설명 - -두 배열의 교집합을 출력하세요! diff --git a/Challenge/lsm-algorithmic-enjoy/filterIntersection/solve.js b/Challenge/lsm-algorithmic-enjoy/filterIntersection/solve.js deleted file mode 100644 index bc4b6641..00000000 --- a/Challenge/lsm-algorithmic-enjoy/filterIntersection/solve.js +++ /dev/null @@ -1,5 +0,0 @@ -function solution(inputArray1, inputArray2) { - return inputArray1.filter((el) => inputArray2.includes(el)); -} - -exports.solution = solution; diff --git a/Challenge/lsm-algorithmic-enjoy/filterIntersection/solve.test.js b/Challenge/lsm-algorithmic-enjoy/filterIntersection/solve.test.js deleted file mode 100644 index 576cbc86..00000000 --- a/Challenge/lsm-algorithmic-enjoy/filterIntersection/solve.test.js +++ /dev/null @@ -1,15 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: { - A: [1, 2, 3, 4, 5], - B: [3, 4, 5, 6, 7], - }, - answer: [3, 4, 5], -}; - -describe('filterIntersection', () => { - test('test1', () => { - expect(solution(test1.input.A, test1.input.B)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/lsm-algorithmic-enjoy/filterOdd/README.md b/Challenge/lsm-algorithmic-enjoy/filterOdd/README.md deleted file mode 100644 index cf9eda79..00000000 --- a/Challenge/lsm-algorithmic-enjoy/filterOdd/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -홀수만 뽑아 배열로 만드세요 diff --git a/Challenge/lsm-algorithmic-enjoy/filterOdd/solve.js b/Challenge/lsm-algorithmic-enjoy/filterOdd/solve.js deleted file mode 100644 index 0773b8db..00000000 --- a/Challenge/lsm-algorithmic-enjoy/filterOdd/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.filter((el) => el % 2 === 1); -} - -exports.solution = solution; diff --git a/Challenge/lsm-algorithmic-enjoy/filterOdd/solve.test.js b/Challenge/lsm-algorithmic-enjoy/filterOdd/solve.test.js deleted file mode 100644 index 8cfd7f5a..00000000 --- a/Challenge/lsm-algorithmic-enjoy/filterOdd/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [4, 2, 5, 1, 3], - answer: [5, 1, 3], -}; - -const test2 = { - input: [4, 2, 6, 8, 50, 16], - answer: [], -}; - -const test3 = { - input: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], - answer: [1, 3, 5, 7, 9, 11], -}; - -describe('filterOdd', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/lsm-algorithmic-enjoy/forEachFilter/README.md b/Challenge/lsm-algorithmic-enjoy/forEachFilter/README.md deleted file mode 100644 index 6dcbc7c2..00000000 --- a/Challenge/lsm-algorithmic-enjoy/forEachFilter/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소중 40 이상인 수만 뽑아 배열을 만드세요. diff --git a/Challenge/lsm-algorithmic-enjoy/forEachFilter/solve.js b/Challenge/lsm-algorithmic-enjoy/forEachFilter/solve.js deleted file mode 100644 index b09cbd8d..00000000 --- a/Challenge/lsm-algorithmic-enjoy/forEachFilter/solve.js +++ /dev/null @@ -1,12 +0,0 @@ -// write your codes -function solution(inputArray) { - let answer = []; - inputArray.forEach((el) => { - if (el >= 40) { - answer.push(el); - } - }); - return answer; -} - -exports.solution = solution; diff --git a/Challenge/lsm-algorithmic-enjoy/forEachFilter/solve.test.js b/Challenge/lsm-algorithmic-enjoy/forEachFilter/solve.test.js deleted file mode 100644 index 3d73b25c..00000000 --- a/Challenge/lsm-algorithmic-enjoy/forEachFilter/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: [100, 40], -}; - -describe('forEachFilter', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/lsm-algorithmic-enjoy/forEachMap/README.md b/Challenge/lsm-algorithmic-enjoy/forEachMap/README.md deleted file mode 100644 index 1e8e03c8..00000000 --- a/Challenge/lsm-algorithmic-enjoy/forEachMap/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -forEach 메소드를 사용해서 배열의 각 원소 끝에 '%'를 붙인 문자열 배열을 출력하세요 diff --git a/Challenge/lsm-algorithmic-enjoy/forEachMap/solve.js b/Challenge/lsm-algorithmic-enjoy/forEachMap/solve.js deleted file mode 100644 index d5013ce0..00000000 --- a/Challenge/lsm-algorithmic-enjoy/forEachMap/solve.js +++ /dev/null @@ -1,10 +0,0 @@ -// write your codes -function solution(inputArray) { - let answer = []; - inputArray.forEach((el) => { - answer.push(el + "%"); - }); - return answer; -} - -exports.solution = solution; diff --git a/Challenge/lsm-algorithmic-enjoy/forEachMap/solve.test.js b/Challenge/lsm-algorithmic-enjoy/forEachMap/solve.test.js deleted file mode 100644 index de4868c6..00000000 --- a/Challenge/lsm-algorithmic-enjoy/forEachMap/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: ['100%', '10%', '20%', '40%'], -}; - -describe('forEachMap', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/lsm-algorithmic-enjoy/forEachReduce/README.md b/Challenge/lsm-algorithmic-enjoy/forEachReduce/README.md deleted file mode 100644 index a984df2d..00000000 --- a/Challenge/lsm-algorithmic-enjoy/forEachReduce/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -forEach 메소드를 사용해서 배열의 총 합을 출력하는 코드를 작성하세요 diff --git a/Challenge/lsm-algorithmic-enjoy/forEachReduce/solve.js b/Challenge/lsm-algorithmic-enjoy/forEachReduce/solve.js deleted file mode 100644 index 23b756ac..00000000 --- a/Challenge/lsm-algorithmic-enjoy/forEachReduce/solve.js +++ /dev/null @@ -1,10 +0,0 @@ -// write your codes -function solution(inputArray) { - let sum = 0; - inputArray.forEach((el) => { - sum = sum + el; - }); - return sum; -} - -exports.solution = solution; diff --git a/Challenge/lsm-algorithmic-enjoy/forEachReduce/solve.test.js b/Challenge/lsm-algorithmic-enjoy/forEachReduce/solve.test.js deleted file mode 100644 index 397e4b50..00000000 --- a/Challenge/lsm-algorithmic-enjoy/forEachReduce/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: 170, -}; - -const test2 = { - input: [120, -20, -30, 0, 15], - answer: 85, -}; - -const test3 = { - input: [-10, -20, -30], - answer: -60, -}; - -describe('forEachReduce', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2: 음수가 포함된 계산', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3: 음수만 존재하는 계산', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/lsm-algorithmic-enjoy/mapAddPercent/README.md b/Challenge/lsm-algorithmic-enjoy/mapAddPercent/README.md deleted file mode 100644 index 75e73042..00000000 --- a/Challenge/lsm-algorithmic-enjoy/mapAddPercent/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -map 메소드를 사용해 배열 각각 숫자 뒤에 %를 붙인 문자열을 만드세요 diff --git a/Challenge/lsm-algorithmic-enjoy/mapAddPercent/solve.js b/Challenge/lsm-algorithmic-enjoy/mapAddPercent/solve.js deleted file mode 100644 index 8ea9ea3d..00000000 --- a/Challenge/lsm-algorithmic-enjoy/mapAddPercent/solve.js +++ /dev/null @@ -1,7 +0,0 @@ -// write your codes -function solution(inputArray) { - const answer = inputArray.map((el) => el + "%"); - return answer; -} - -exports.solution = solution; diff --git a/Challenge/lsm-algorithmic-enjoy/mapAddPercent/solve.test.js b/Challenge/lsm-algorithmic-enjoy/mapAddPercent/solve.test.js deleted file mode 100644 index dac1b3cc..00000000 --- a/Challenge/lsm-algorithmic-enjoy/mapAddPercent/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: ['100%', '10%', '20%', '40%'], -}; - -describe('mapAddPercent', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/lsm-algorithmic-enjoy/mapAppendOrder/README.md b/Challenge/lsm-algorithmic-enjoy/mapAppendOrder/README.md deleted file mode 100644 index 1435623a..00000000 --- a/Challenge/lsm-algorithmic-enjoy/mapAppendOrder/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열의 값을 name 프로퍼티에 넣고 몇번째 원소인지를 order에 넣은 객체의 배열을 출력하세요 diff --git a/Challenge/lsm-algorithmic-enjoy/mapAppendOrder/solve.js b/Challenge/lsm-algorithmic-enjoy/mapAppendOrder/solve.js deleted file mode 100644 index 951bbf90..00000000 --- a/Challenge/lsm-algorithmic-enjoy/mapAppendOrder/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -// write your codes -function solution(inputArray) { - const answer = inputArray.map((el, idx) => { - return { name: el, order: idx + 1 }; - }); - return answer; -} - -exports.solution = solution; diff --git a/Challenge/lsm-algorithmic-enjoy/mapAppendOrder/solve.test.js b/Challenge/lsm-algorithmic-enjoy/mapAppendOrder/solve.test.js deleted file mode 100644 index e08db10c..00000000 --- a/Challenge/lsm-algorithmic-enjoy/mapAppendOrder/solve.test.js +++ /dev/null @@ -1,16 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: ['홍길동', '둘리', '루피'], - answer: [ - { name: '홍길동', order: 1 }, - { name: '둘리', order: 2 }, - { name: '루피', order: 3 }, - ], -}; - -describe('mapAppendOrder', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/lsm-algorithmic-enjoy/reduceMaxValueNIndex/README.md b/Challenge/lsm-algorithmic-enjoy/reduceMaxValueNIndex/README.md deleted file mode 100644 index 965bdec6..00000000 --- a/Challenge/lsm-algorithmic-enjoy/reduceMaxValueNIndex/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -reduce 메소드를 사용해 최댓값의 값을 maxValue에, 해당 값의 index를 idx에 넣은 객체를 출력하세요 diff --git a/Challenge/lsm-algorithmic-enjoy/reduceMaxValueNIndex/solve.js b/Challenge/lsm-algorithmic-enjoy/reduceMaxValueNIndex/solve.js deleted file mode 100644 index 993c5532..00000000 --- a/Challenge/lsm-algorithmic-enjoy/reduceMaxValueNIndex/solve.js +++ /dev/null @@ -1,18 +0,0 @@ -// write your codes -function solution(inputArray) { - const answer = inputArray.reduce( - (acc, el, index) => { - if (acc.maxValue < el) { - return { - maxValue: el, - idx: index, - }; - } - return acc; - }, - { maxValue: -9999999999999999, idx: -1 } - ); - return answer; -} - -exports.solution = solution; diff --git a/Challenge/lsm-algorithmic-enjoy/reduceMaxValueNIndex/solve.test.js b/Challenge/lsm-algorithmic-enjoy/reduceMaxValueNIndex/solve.test.js deleted file mode 100644 index 0daef5b8..00000000 --- a/Challenge/lsm-algorithmic-enjoy/reduceMaxValueNIndex/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [3, 29, 38, 12, 57, 74, 40, 85, 61], - answer: { maxValue: 85, idx: 7 }, -}; - -const test2 = { - input: [-24, -2, -13, -49, -999999, -17], - answer: { maxValue: -2, idx: 1 }, -}; -//최댓값이 중복일 때에는 먼저 나온 최댓값의 인덱스를 유지하도록 설정하였습니다. -const test3 = { - input: [2, -20, 21, -874, 99, -16, -29, 99], - answer: { maxValue: 99, idx: 4 }, -}; - -describe('reduceMaxValueNIndex', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2 : 음수 테스트', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3 : 중복된 최대값 테스트', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/lsm-algorithmic-enjoy/reduceNameNickname/README.md b/Challenge/lsm-algorithmic-enjoy/reduceNameNickname/README.md deleted file mode 100644 index b6920e05..00000000 --- a/Challenge/lsm-algorithmic-enjoy/reduceNameNickname/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -입력받은 객채배열의 nickname을 key, name을 value로 하는 객체를 출력하세요 diff --git a/Challenge/lsm-algorithmic-enjoy/reduceNameNickname/solve.js b/Challenge/lsm-algorithmic-enjoy/reduceNameNickname/solve.js deleted file mode 100644 index 87e64ac2..00000000 --- a/Challenge/lsm-algorithmic-enjoy/reduceNameNickname/solve.js +++ /dev/null @@ -1,12 +0,0 @@ -// write your codes -function solution(inputArray) { - const result = inputArray.reduce((acc, el) => { - return { - ...acc, - [el.nickname]: el.name, - }; - }, {}); - return result; -} - -exports.solution = solution; diff --git a/Challenge/lsm-algorithmic-enjoy/reduceNameNickname/solve.test.js b/Challenge/lsm-algorithmic-enjoy/reduceNameNickname/solve.test.js deleted file mode 100644 index 2d19e31d..00000000 --- a/Challenge/lsm-algorithmic-enjoy/reduceNameNickname/solve.test.js +++ /dev/null @@ -1,25 +0,0 @@ -const { solution } = require("./solve"); - -const test1 = { - input: [ - { - name: "홍길동", - nickname: "hong", - }, - { - name: "둘리", - nickname: "2li", - }, - { - name: "오스트랄로피테쿠스", - nickname: "1Cin", - }, - ], - answer: { hong: "홍길동", "2li": "둘리", "1Cin": "오스트랄로피테쿠스" }, -}; - -describe("reduceNameNickname", () => { - test("test1", () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/lsm-algorithmic-enjoy/reduceSum/README.md b/Challenge/lsm-algorithmic-enjoy/reduceSum/README.md deleted file mode 100644 index 8c607eb2..00000000 --- a/Challenge/lsm-algorithmic-enjoy/reduceSum/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -reduce 메소드를 사용해서 배열의 모든 수의 합을 구하세요. - -## Expected Output - -106 diff --git a/Challenge/lsm-algorithmic-enjoy/reduceSum/solve.js b/Challenge/lsm-algorithmic-enjoy/reduceSum/solve.js deleted file mode 100644 index 0a2d006b..00000000 --- a/Challenge/lsm-algorithmic-enjoy/reduceSum/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -// write your codes -function solution(inputArray) { - const answer = inputArray.reduce((acc, el) => { - return acc + el; - }, 0); - return answer; -} - -exports.solution = solution; diff --git a/Challenge/lsm-algorithmic-enjoy/reduceSum/solve.test.js b/Challenge/lsm-algorithmic-enjoy/reduceSum/solve.test.js deleted file mode 100644 index 046c40cb..00000000 --- a/Challenge/lsm-algorithmic-enjoy/reduceSum/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [10, 3, 20, 5, 8, 60], - answer: 106, -}; - -describe('reduceSum', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/lsm-algorithmic-enjoy/sortByPrice/README.md b/Challenge/lsm-algorithmic-enjoy/sortByPrice/README.md deleted file mode 100644 index b1ccf70e..00000000 --- a/Challenge/lsm-algorithmic-enjoy/sortByPrice/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 - -## Expected Output - -[ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 } -] diff --git a/Challenge/lsm-algorithmic-enjoy/sortByPrice/solve.js b/Challenge/lsm-algorithmic-enjoy/sortByPrice/solve.js deleted file mode 100644 index 0101ac34..00000000 --- a/Challenge/lsm-algorithmic-enjoy/sortByPrice/solve.js +++ /dev/null @@ -1,7 +0,0 @@ -// write your codes -function solution(inputArray) { - const result = inputArray.sort((a, b) => a.price - b.price); - return result; -} - -exports.solution = solution; diff --git a/Challenge/lsm-algorithmic-enjoy/sortByPrice/solve.test.js b/Challenge/lsm-algorithmic-enjoy/sortByPrice/solve.test.js deleted file mode 100644 index 3d6a3431..00000000 --- a/Challenge/lsm-algorithmic-enjoy/sortByPrice/solve.test.js +++ /dev/null @@ -1,34 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '사과', - price: 1000, - }, - { - name: '수박', - price: 5000, - }, - { - name: '당근', - price: 2000, - }, - { - name: '참외', - price: 10000, - }, - ], - answer: [ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 }, - ], -}; - -describe('sortByPrice', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/lsm-algorithmic-enjoy/sortByPriceAndQuantity/README.md b/Challenge/lsm-algorithmic-enjoy/sortByPriceAndQuantity/README.md deleted file mode 100644 index 41cd5c95..00000000 --- a/Challenge/lsm-algorithmic-enjoy/sortByPriceAndQuantity/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 -만약 price가 같다면 quantity기준으로 오름차순 정렬하세요 - -## Expected Output - -[ - { name: '사과', price: 1000, quantity: 2 }, - { name: '오이', price: 2000, quantity: 49 }, - { name: '당근', price: 2000, quantity: 50 }, - { name: '참외', price: 5000, quantity: 10 }, - { name: '수박', price: 5000, quantity: 20 } -] diff --git a/Challenge/lsm-algorithmic-enjoy/sortByPriceAndQuantity/solve.js b/Challenge/lsm-algorithmic-enjoy/sortByPriceAndQuantity/solve.js deleted file mode 100644 index 22627cac..00000000 --- a/Challenge/lsm-algorithmic-enjoy/sortByPriceAndQuantity/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -// write your codes -function solution(inputArray) { - const result = inputArray.sort((a, b) => { - return a.price - b.price || a.quantity - b.quantity; - }); - return result; -} - -exports.solution = solution; diff --git a/Challenge/lsm-algorithmic-enjoy/sortByPriceAndQuantity/solve.test.js b/Challenge/lsm-algorithmic-enjoy/sortByPriceAndQuantity/solve.test.js deleted file mode 100644 index 424f42b7..00000000 --- a/Challenge/lsm-algorithmic-enjoy/sortByPriceAndQuantity/solve.test.js +++ /dev/null @@ -1,44 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '사과', - price: 1000, - quantity: 2, - }, - { - name: '수박', - price: 5000, - quantity: 20, - }, - { - name: '당근', - price: 2000, - quantity: 50, - }, - { - name: '참외', - price: 5000, - quantity: 10, - }, - { - name: '오이', - price: 2000, - quantity: 49, - }, - ], - answer: [ - { name: '사과', price: 1000, quantity: 2 }, - { name: '오이', price: 2000, quantity: 49 }, - { name: '당근', price: 2000, quantity: 50 }, - { name: '참외', price: 5000, quantity: 10 }, - { name: '수박', price: 5000, quantity: 20 }, - ], -}; - -describe('sortByPriceAndQuantity', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/mooseonpark/forEachFilter/solve.js b/Challenge/mooseonpark/forEachFilter/solve.js deleted file mode 100644 index 36baa9f8..00000000 --- a/Challenge/mooseonpark/forEachFilter/solve.js +++ /dev/null @@ -1,4 +0,0 @@ -// write your codes -function solution(inputArray) {} - -exports.solution = solution; diff --git a/Challenge/pkiop/everyArray/README.md b/Challenge/pkiop/everyArray/README.md deleted file mode 100644 index e09268b7..00000000 --- a/Challenge/pkiop/everyArray/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -every를 이용해서 모든 원소가 짝수인지 아닌지를 판별하세요 diff --git a/Challenge/pkiop/everyArray/solve.js b/Challenge/pkiop/everyArray/solve.js deleted file mode 100644 index cde699b5..00000000 --- a/Challenge/pkiop/everyArray/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -function solution(inputArray) { - const answer = inputArray.every((el) => el % 2 === 0); - return answer; -} - -exports.solution = solution; diff --git a/Challenge/pkiop/everyArray/solve.test.js b/Challenge/pkiop/everyArray/solve.test.js deleted file mode 100644 index b03e4791..00000000 --- a/Challenge/pkiop/everyArray/solve.test.js +++ /dev/null @@ -1,21 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [2, 4, 6, 8, 10], - answer: true, -}; - -const test2 = { - input: [2, 3, 6, 8, 10], - answer: false, -}; - -describe('everyArray', () => { - test('모두 짝수면 true여야 한다.', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - - test('홀수가 있으면 false여야 한다.', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); -}); diff --git a/Challenge/pkiop/expDivOdd/README.md b/Challenge/pkiop/expDivOdd/README.md deleted file mode 100644 index c07ab10b..00000000 --- a/Challenge/pkiop/expDivOdd/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -제곱한 후 3으로 나눈 나머지가 홀수인 것 을 뽑은 배열의 총 합을 구하세요. diff --git a/Challenge/pkiop/expDivOdd/solve.js b/Challenge/pkiop/expDivOdd/solve.js deleted file mode 100644 index 8c5bcbe4..00000000 --- a/Challenge/pkiop/expDivOdd/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -function solution(inputArray) { - const result = inputArray - .map((el) => el * el) - .filter((el) => el % 3 === 1) - .reduce((acc, el) => acc + el, 0); - return result; -} - -exports.solution = solution; diff --git a/Challenge/pkiop/expDivOdd/solve.test.js b/Challenge/pkiop/expDivOdd/solve.test.js deleted file mode 100644 index ca37fcc3..00000000 --- a/Challenge/pkiop/expDivOdd/solve.test.js +++ /dev/null @@ -1,21 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 7, 3, 4, 6], - answer: 66, -}; - -const test2 = { - input: [2, 3, 6, 8, 10], - answer: 168, -}; - -describe('everyArray', () => { - test('1, 7, 3, 4, 6', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - - test('2, 3, 6, 8, 10', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); -}); diff --git a/Challenge/pkiop/figureSkating/README.md b/Challenge/pkiop/figureSkating/README.md deleted file mode 100644 index 54b85fbd..00000000 --- a/Challenge/pkiop/figureSkating/README.md +++ /dev/null @@ -1,35 +0,0 @@ -## 설명 - -점수를 계산해서 점수가 높은 순으로 name과 score를 가진 객체의 배열을 출력하세요. -단 실격자는 출력하지 않습니다. - -### 피겨 점수 기준 - -피겨 점수는 ‘기술점수(TES)+예술점수(PCS)-감점’으로 구성된다. - -기술점수(TES·Total Element Score)는 기본점수에 수행점수(GOE·Grade Of Execution)를 합산해 도출한다. - -심판은 선수들이 점프와 스핀의 기술을 제대로 수행하는지 살핀다. 점프에선 회전수를 제대로 지켰는지, 에지를 제대로 사용했는지에 따라 ‘롱 에지’(잘못된 에지 사용)나 ‘다운그레이드’(난이도 하락), ‘어텐션’(주의) 등의 판정을 내린다. 스핀과 스텝시퀀스에 붙는 레벨(1~4)도 이들이 결정한다. - -9명의 심판은 선수들이 미리 제출한 연기 구성표를 기준으로 과제별 기본점수에서 가·감점을 한다. 이른바 ‘GOE’라 불리는 수행점수다. - -쇼트프로그램은 점프 3개, 스핀 3개, 스텝 1개의 수행과제가 반드시 포함돼야 한다. - -예술점수(PCS·Total Program Component Score)는 프로그램의 완성도에 영향을 미치는 스케이팅 기술·동작의 연결·연기·안무·곡 해석 등 5가지를 평가한다. - -마지막으로 감점이 반영된다. 감점 항목이 발생할 때마다 1점씩 감점된다. - -원문보기: -http://news.khan.co.kr/kh_news/khan_art_view.html?art_id=201402172146545#csidx6329aebb6a02152bca884614a7f0544 - -### 판정 기준 - -- 점수가 가장 높은 사람이 1등이다. -- 점수는 기술점수(TES) + 예술점수(PCS) - 감점 으로 구성된다. -- 기술점수(TES)는 기본점수 \* 수행점수(GOE)를 합산해 도출한다. -- 필수 수행과제를 수행하지 못했을 시 실격이다. - -### 필수 수행과제 - -- 쇼트프로그램은 점프 3개, 스핀 3개, 스텝 1개의 수행과제가 반드시 포함돼야 한다. -- 점프와 스핀을 4번 이상 수행했을 시 가장 잘한 3개를 기준으로 한다. diff --git a/Challenge/pkiop/figureSkating/solve.js b/Challenge/pkiop/figureSkating/solve.js deleted file mode 100644 index cd6c2143..00000000 --- a/Challenge/pkiop/figureSkating/solve.js +++ /dev/null @@ -1,52 +0,0 @@ -// 기본 점수 -const baseScore = { - jump: 10, - spin: 20, - step: 15, -}; - -const baseAssignment = { - jump: 3, - spin: 3, - step: 1, -}; - -function solution(inputArray) { - // write your codes - - const isNotDisqualification = (el) => { - if (el.goe.jump.length < baseAssignment.jump) return false; - if (el.goe.spin.length < baseAssignment.spin) return false; - if (el.goe.step.length < baseAssignment.step) return false; - return true; - }; - - const calculateScoreWithName = (el) => { - const tes = Object.entries(el.goe).reduce((acc, goeItem) => { - return ( - acc + - goeItem[1] - .sort((a, b) => b - a) - .slice(0, 3) - .reduce((goeAcc, score) => { - return goeAcc + baseScore[goeItem[0]] * score; - }, 0) - ); - }, 0); - return { - name: el.name, - score: tes + el.pcs - el.penalty, - }; - }; - - const compareByScore = (a, b) => b.score - a.score; - - const result = inputArray - .filter(isNotDisqualification) - .map(calculateScoreWithName) - .sort(compareByScore); - return result; -} - -exports.solution = solution; -// write your codes diff --git a/Challenge/pkiop/figureSkating/solve.test.js b/Challenge/pkiop/figureSkating/solve.test.js deleted file mode 100644 index 7b96bd29..00000000 --- a/Challenge/pkiop/figureSkating/solve.test.js +++ /dev/null @@ -1,46 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '김연아', - goe: { - jump: [10, 9, 10], - spin: [10, 10, 10], - step: [9], - }, - pcs: 30, - penalty: 0, - }, - { - name: '피겨의 신', - goe: { - jump: [10000, 10000], - spin: [10000, 10000, 10000], - step: [10000], - }, - pcs: 100000, - penalty: 0, - }, - { - name: '아사다 마오', - goe: { - jump: [9, 6, 8, 9], - spin: [9, 9, 9], - step: [8], - }, - pcs: 29, - penalty: 10, - }, - ], - answer: [ - { name: '김연아', score: 1055 }, - { name: '아사다 마오', score: 939 }, - ], -}; - -describe('figureSkating', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/pkiop/filterAge/README.md b/Challenge/pkiop/filterAge/README.md deleted file mode 100644 index 873a15c1..00000000 --- a/Challenge/pkiop/filterAge/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소의 age가 30이상 50미만인 사람만 있는 객체의 배열을 만드세요 diff --git a/Challenge/pkiop/filterAge/solve.js b/Challenge/pkiop/filterAge/solve.js deleted file mode 100644 index 7ce80703..00000000 --- a/Challenge/pkiop/filterAge/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.filter(({ age }) => age >= 30 && age < 50); -} - -exports.solution = solution; diff --git a/Challenge/pkiop/filterAge/solve.test.js b/Challenge/pkiop/filterAge/solve.test.js deleted file mode 100644 index b9081601..00000000 --- a/Challenge/pkiop/filterAge/solve.test.js +++ /dev/null @@ -1,32 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '영미', - age: 25, - }, - { - name: '일미', - age: 35, - }, - { - name: '이미', - age: 45, - }, - { - name: '삼미', - age: 55, - }, - ], - answer: [ - { name: '일미', age: 35 }, - { name: '이미', age: 45 }, - ], -}; - -describe('filterAge', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/pkiop/filterIntersection/README.md b/Challenge/pkiop/filterIntersection/README.md deleted file mode 100644 index b0209d9a..00000000 --- a/Challenge/pkiop/filterIntersection/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# 문제제목 - -## 설명 - -두 배열의 교집합을 출력하세요! - -## Expected Output diff --git a/Challenge/pkiop/filterIntersection/solve.js b/Challenge/pkiop/filterIntersection/solve.js deleted file mode 100644 index bc4b6641..00000000 --- a/Challenge/pkiop/filterIntersection/solve.js +++ /dev/null @@ -1,5 +0,0 @@ -function solution(inputArray1, inputArray2) { - return inputArray1.filter((el) => inputArray2.includes(el)); -} - -exports.solution = solution; diff --git a/Challenge/pkiop/filterIntersection/solve.test.js b/Challenge/pkiop/filterIntersection/solve.test.js deleted file mode 100644 index 2d93d232..00000000 --- a/Challenge/pkiop/filterIntersection/solve.test.js +++ /dev/null @@ -1,15 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: { - A: [1, 2, 3, 4, 5], - B: [3, 4, 5, 6, 7], - }, - answer: [3, 4, 5], -}; - -describe('filterAge', () => { - test('test1', () => { - expect(solution(test1.input.A, test1.input.B)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/pkiop/filterOdd/README.md b/Challenge/pkiop/filterOdd/README.md deleted file mode 100644 index cf9eda79..00000000 --- a/Challenge/pkiop/filterOdd/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -홀수만 뽑아 배열로 만드세요 diff --git a/Challenge/pkiop/filterOdd/solve.js b/Challenge/pkiop/filterOdd/solve.js deleted file mode 100644 index 0773b8db..00000000 --- a/Challenge/pkiop/filterOdd/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.filter((el) => el % 2 === 1); -} - -exports.solution = solution; diff --git a/Challenge/pkiop/filterOdd/solve.test.js b/Challenge/pkiop/filterOdd/solve.test.js deleted file mode 100644 index fe0fe139..00000000 --- a/Challenge/pkiop/filterOdd/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [4, 2, 5, 1, 3], - answer: [5, 1, 3], -}; - -describe('filterOdd', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/pkiop/forEachFilter/README.md b/Challenge/pkiop/forEachFilter/README.md deleted file mode 100644 index d826e8e6..00000000 --- a/Challenge/pkiop/forEachFilter/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소중 40 이상인 수만 뽑아 배열을 만드세요. - -## Expected Output - -[ 100, 40 ] diff --git a/Challenge/pkiop/forEachFilter/solve.js b/Challenge/pkiop/forEachFilter/solve.js deleted file mode 100644 index 01767cdf..00000000 --- a/Challenge/pkiop/forEachFilter/solve.js +++ /dev/null @@ -1,12 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes - -let answer = []; -inputArray.forEach(el => { - if(el >= 40) { - answer.push(el); - } -}) -console.log(answer); - diff --git a/Challenge/pkiop/forEachMap/README.md b/Challenge/pkiop/forEachMap/README.md deleted file mode 100644 index c085047c..00000000 --- a/Challenge/pkiop/forEachMap/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# forEachReduce - -## 설명 - -forEach 메소드를 사용해서 배열의 각 원소 끝에 '%'를 붙인 문자열 배열을 출력하세요 - -## Expected Output - -170 diff --git a/Challenge/pkiop/forEachMap/solve.js b/Challenge/pkiop/forEachMap/solve.js deleted file mode 100644 index d47f340b..00000000 --- a/Challenge/pkiop/forEachMap/solve.js +++ /dev/null @@ -1,10 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes - -let answer = []; -inputArray.forEach((el) => { - answer.push(el + '%'); -}) -console.log(answer); - diff --git a/Challenge/pkiop/forEachReduce/README.md b/Challenge/pkiop/forEachReduce/README.md deleted file mode 100644 index 8f369ed9..00000000 --- a/Challenge/pkiop/forEachReduce/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# forEachReduce - -## 설명 - -forEach 메소드를 사용해서 배열의 총 합을 출력하는 코드를 작성하세요 - -## Expected Output - -170 diff --git a/Challenge/pkiop/forEachReduce/solve.js b/Challenge/pkiop/forEachReduce/solve.js deleted file mode 100644 index 48053f73..00000000 --- a/Challenge/pkiop/forEachReduce/solve.js +++ /dev/null @@ -1,10 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes - -let sum = 0; -inputArray.forEach((el) => { - sum += el; -}) -console.log(sum); - diff --git a/Challenge/pkiop/mapAddPercent/README.md b/Challenge/pkiop/mapAddPercent/README.md deleted file mode 100644 index 4156a2f9..00000000 --- a/Challenge/pkiop/mapAddPercent/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -map 메소드를 사용해 배열 각각 숫자 뒤에 %를 붙인 문자열을 만드세요 - -## Expected Output - -['100%', '10%', '20%', '40%'] diff --git a/Challenge/pkiop/mapAddPercent/solve.js b/Challenge/pkiop/mapAddPercent/solve.js deleted file mode 100644 index 091900a6..00000000 --- a/Challenge/pkiop/mapAddPercent/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes - -const answer = inputArray.map(el => el + '%'); -console.log(answer); diff --git a/Challenge/pkiop/mapAppendOrder/README.md b/Challenge/pkiop/mapAppendOrder/README.md deleted file mode 100644 index fccb0d1a..00000000 --- a/Challenge/pkiop/mapAppendOrder/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# 문제제목 - -## 설명 - -배열의 값을 name 프로퍼티에 넣고 몇번째 원소인지를 order에 넣은 객체의 배열을 출력하세요 - -## Expected Output - -[ - { name: '홍길동', order: 1 }, - { name: '둘리', order: 2 }, - { name: '루피', order: 3 } -] diff --git a/Challenge/pkiop/mapAppendOrder/solve.js b/Challenge/pkiop/mapAppendOrder/solve.js deleted file mode 100644 index 4135f9f1..00000000 --- a/Challenge/pkiop/mapAppendOrder/solve.js +++ /dev/null @@ -1,13 +0,0 @@ -const inputArray = ['홍길동', '둘리', '루피']; - -// write your codes - -const answer = inputArray.map((el, idx) => { - return { - name: el, - order: idx+1, - } -}) - -console.log(answer); - diff --git a/Challenge/pkiop/reduceMaxValueNIndex/README.md b/Challenge/pkiop/reduceMaxValueNIndex/README.md deleted file mode 100644 index 63deb57a..00000000 --- a/Challenge/pkiop/reduceMaxValueNIndex/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -reduce 메소드를 사용해 최댓값의 값을 maxValue에, 해당 값의 index를 idx에 넣은 객체를 출력하세요 - -## Expected Output - -{ maxValue: 85, idx: 7 } diff --git a/Challenge/pkiop/reduceMaxValueNIndex/solve.js b/Challenge/pkiop/reduceMaxValueNIndex/solve.js deleted file mode 100644 index 87d01a16..00000000 --- a/Challenge/pkiop/reduceMaxValueNIndex/solve.js +++ /dev/null @@ -1,14 +0,0 @@ -const inputArray = [3, 29, 38, 12, 57, 74, 40, 85, 61]; - -// write your codes - -const answer = inputArray.reduce((acc, el, index) => { - if(acc?.maxValue < el) { - return { - maxValue: el, - idx: index, - } - } - return acc; -}, { maxValue: 0, idx: -1}) -console.log(answer); diff --git a/Challenge/pkiop/reduceNameNickname/README.md b/Challenge/pkiop/reduceNameNickname/README.md deleted file mode 100644 index b693b7f5..00000000 --- a/Challenge/pkiop/reduceNameNickname/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -문제에 대한 설명을 적는 곳입니다. - -## Expected Output - -{ hong: '홍길동', '2li': '둘리', '1Cin': '오스트랄로피테쿠스' } diff --git a/Challenge/pkiop/reduceNameNickname/solve.js b/Challenge/pkiop/reduceNameNickname/solve.js deleted file mode 100644 index d5f13120..00000000 --- a/Challenge/pkiop/reduceNameNickname/solve.js +++ /dev/null @@ -1,26 +0,0 @@ -const inputArray = [ - { - name: '홍길동', - nickname: 'hong', - }, - { - name: '둘리', - nickname: '2li', - }, - { - name: '오스트랄로피테쿠스', - nickname: '1Cin', - } -]; - -// write your codes - -const result = inputArray.reduce((acc, el) => { - return { - ...acc, - [el.nickname]: el.name, - } -}, {}); - -console.log(result); - diff --git a/Challenge/pkiop/reduceSum/README.md b/Challenge/pkiop/reduceSum/README.md deleted file mode 100644 index 8c607eb2..00000000 --- a/Challenge/pkiop/reduceSum/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -reduce 메소드를 사용해서 배열의 모든 수의 합을 구하세요. - -## Expected Output - -106 diff --git a/Challenge/pkiop/reduceSum/solve.js b/Challenge/pkiop/reduceSum/solve.js deleted file mode 100644 index 1e248b51..00000000 --- a/Challenge/pkiop/reduceSum/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -const inputArray = [10, 3, 20, 5, 8, 60]; - -// write your codes - -const answer = inputArray.reduce((acc, el) => { - return acc + el; -}, 0); -console.log(answer); - diff --git a/Challenge/pkiop/sortByPrice/README.md b/Challenge/pkiop/sortByPrice/README.md deleted file mode 100644 index b1ccf70e..00000000 --- a/Challenge/pkiop/sortByPrice/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 - -## Expected Output - -[ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 } -] diff --git a/Challenge/pkiop/sortByPrice/solve.js b/Challenge/pkiop/sortByPrice/solve.js deleted file mode 100644 index 1caf5595..00000000 --- a/Challenge/pkiop/sortByPrice/solve.js +++ /dev/null @@ -1,24 +0,0 @@ -const inputArray = [ - { - name: '사과', - price: 1000, - }, - { - name: '수박', - price: 5000, - }, - { - name: '당근', - price: 2000, - }, - { - name: '참외', - price: 10000, - } -]; - -// write your codes - -const result = inputArray.sort((a, b) => a.price - b.price); -console.log(result); - diff --git a/Challenge/pkiop/sortByPriceAndQuantity/README.md b/Challenge/pkiop/sortByPriceAndQuantity/README.md deleted file mode 100644 index 41cd5c95..00000000 --- a/Challenge/pkiop/sortByPriceAndQuantity/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 -만약 price가 같다면 quantity기준으로 오름차순 정렬하세요 - -## Expected Output - -[ - { name: '사과', price: 1000, quantity: 2 }, - { name: '오이', price: 2000, quantity: 49 }, - { name: '당근', price: 2000, quantity: 50 }, - { name: '참외', price: 5000, quantity: 10 }, - { name: '수박', price: 5000, quantity: 20 } -] diff --git a/Challenge/pkiop/sortByPriceAndQuantity/solve.js b/Challenge/pkiop/sortByPriceAndQuantity/solve.js deleted file mode 100644 index a66acdfe..00000000 --- a/Challenge/pkiop/sortByPriceAndQuantity/solve.js +++ /dev/null @@ -1,41 +0,0 @@ -const inputArray = [ - { - name: '사과', - price: 1000, - quantity: 2, - }, - { - name: '수박', - price: 5000, - quantity: 20, - }, - { - name: '당근', - price: 2000, - quantity: 50, - }, - { - name: '참외', - price: 5000, - quantity: 10, - }, - { - name: '오이', - price: 2000, - quantity: 49, - } -]; - -// write your codes - -// const result = inputArray.sort((a, b) => { -// if(a.price !== b.price) { -// return a.price - b.price; -// } -// return a.quantity - b.quantity; -// }); -const result = inputArray.sort((a, b) => { - return a.price - b.price || a.quantity - b.quantity; -}); -console.log(result); - diff --git a/Challenge/pkioppusan/filterOdd/README.md b/Challenge/pkioppusan/filterOdd/README.md deleted file mode 100644 index 9bf99a18..00000000 --- a/Challenge/pkioppusan/filterOdd/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -홀수만 뽑아 배열로 만드세요 - -## Expected Output - -[5, 1, 3] diff --git a/Challenge/pkioppusan/filterOdd/solve.js b/Challenge/pkioppusan/filterOdd/solve.js deleted file mode 100644 index 04c8208a..00000000 --- a/Challenge/pkioppusan/filterOdd/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -const inputArray = [4, 2, 5, 1, 3]; - -// write your codes - -const result = inputArray.filter(el => el % 2 === 1); -console.log(result); - - diff --git a/Challenge/BB-choi/everyArray/README.md b/Challenge/polar-jaesung/everyArray/README.md similarity index 100% rename from Challenge/BB-choi/everyArray/README.md rename to Challenge/polar-jaesung/everyArray/README.md diff --git a/Challenge/emjeLee/everyArray/solve.js b/Challenge/polar-jaesung/everyArray/solve.js similarity index 99% rename from Challenge/emjeLee/everyArray/solve.js rename to Challenge/polar-jaesung/everyArray/solve.js index 99db78b4..21576dce 100644 --- a/Challenge/emjeLee/everyArray/solve.js +++ b/Challenge/polar-jaesung/everyArray/solve.js @@ -1,6 +1,7 @@ function solution(inputArray) { const answer = inputArray.every(item => item % 2 === 0); return answer; + } exports.solution = solution; diff --git a/Challenge/cheol-cheol/everyArray/solve.test.js b/Challenge/polar-jaesung/everyArray/solve.test.js similarity index 100% rename from Challenge/cheol-cheol/everyArray/solve.test.js rename to Challenge/polar-jaesung/everyArray/solve.test.js diff --git a/Challenge/JM Lim/filterOdd/README.md b/Challenge/polar-jaesung/filterOdd/README.md similarity index 100% rename from Challenge/JM Lim/filterOdd/README.md rename to Challenge/polar-jaesung/filterOdd/README.md diff --git a/Challenge/amunre21/sortByPrice/solve.js b/Challenge/polar-jaesung/filterOdd/solve.js similarity index 61% rename from Challenge/amunre21/sortByPrice/solve.js rename to Challenge/polar-jaesung/filterOdd/solve.js index 73dc1d91..4a4f4936 100644 --- a/Challenge/amunre21/sortByPrice/solve.js +++ b/Challenge/polar-jaesung/filterOdd/solve.js @@ -1,6 +1,6 @@ // write your codes function solution(inputArray) { - return inputArray.sort((a,b)=>a.price-b.price); + return inputArray.filter((odd) => odd % 2 === 1) } exports.solution = solution; diff --git a/Challenge/JongHoonSon/filterOdd/solve.test.js b/Challenge/polar-jaesung/filterOdd/solve.test.js similarity index 100% rename from Challenge/JongHoonSon/filterOdd/solve.test.js rename to Challenge/polar-jaesung/filterOdd/solve.test.js diff --git a/Challenge/pozafly/expDivOdd/README.md b/Challenge/pozafly/expDivOdd/README.md deleted file mode 100644 index ca68f81d..00000000 --- a/Challenge/pozafly/expDivOdd/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -제곱한 후 3으로 나눈 나머지가 홀수인 것의 총 합을 구하세요. - -## Expected Output - -66 diff --git a/Challenge/pozafly/expDivOdd/solve.js b/Challenge/pozafly/expDivOdd/solve.js deleted file mode 100644 index 011bcf6c..00000000 --- a/Challenge/pozafly/expDivOdd/solve.js +++ /dev/null @@ -1,10 +0,0 @@ -const inputArray = [ 1, 7, 3, 4, 6 ]; - -// write your codes - -const result = inputArray - .map(value => value * value) - .filter(value => value % 3) - .reduce((acc, cur) => acc + cur, 0); - -console.log(result); \ No newline at end of file diff --git a/Challenge/pozafly/filterAge/README.md b/Challenge/pozafly/filterAge/README.md deleted file mode 100644 index 1c73138e..00000000 --- a/Challenge/pozafly/filterAge/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소의 age가 30이상 50미만인 사람만 있는 객체의 배열을 만드세요 - -## Expected Output - -[ { name: '일미', age: 35 }, { name: '이미', age: 45 } ] diff --git a/Challenge/pozafly/filterAge/solve.js b/Challenge/pozafly/filterAge/solve.js deleted file mode 100644 index 40f64ab0..00000000 --- a/Challenge/pozafly/filterAge/solve.js +++ /dev/null @@ -1,25 +0,0 @@ -const inputArray = [ - { - name: '영미', - age: 25, - }, - { - name: '일미', - age: 35, - }, - { - name: '이미', - age: 45, - }, - { - name: '삼미', - age: 55, - }, -] -// write your codes - -const result = inputArray.filter(el => { - return el.age >= 30 && el.age < 50 -}); - -console.log(result); \ No newline at end of file diff --git a/Challenge/pozafly/filterOdd/README.md b/Challenge/pozafly/filterOdd/README.md deleted file mode 100644 index 9bf99a18..00000000 --- a/Challenge/pozafly/filterOdd/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -홀수만 뽑아 배열로 만드세요 - -## Expected Output - -[5, 1, 3] diff --git a/Challenge/pozafly/filterOdd/solve.js b/Challenge/pozafly/filterOdd/solve.js deleted file mode 100644 index 239e3b67..00000000 --- a/Challenge/pozafly/filterOdd/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -const inputArray = [4, 2, 5, 1, 3]; - -// write your codes - -const result = inputArray.filter(el => el % 2);; -console.log(result); \ No newline at end of file diff --git a/Challenge/pozafly/findWord/README.md b/Challenge/pozafly/findWord/README.md deleted file mode 100644 index 8ef123f4..00000000 --- a/Challenge/pozafly/findWord/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -용가리라는 단어가 있으면 true 없으면 false를 출력 - -## Expected Output - -true diff --git a/Challenge/pozafly/findWord/solve.js b/Challenge/pozafly/findWord/solve.js deleted file mode 100644 index 10816219..00000000 --- a/Challenge/pozafly/findWord/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -const inputArray = ['잠', '자', '고', '싶', '다', '용가리']; - -// write your codes - -const result = inputArray.includes('용가리'); -console.log(result); \ No newline at end of file diff --git a/Challenge/pozafly/forEachFilter/README.md b/Challenge/pozafly/forEachFilter/README.md deleted file mode 100644 index d826e8e6..00000000 --- a/Challenge/pozafly/forEachFilter/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소중 40 이상인 수만 뽑아 배열을 만드세요. - -## Expected Output - -[ 100, 40 ] diff --git a/Challenge/pozafly/forEachFilter/solve.js b/Challenge/pozafly/forEachFilter/solve.js deleted file mode 100644 index 078c4273..00000000 --- a/Challenge/pozafly/forEachFilter/solve.js +++ /dev/null @@ -1,12 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes - -const result = inputArray.filter(el => el >= 40); -console.log(result); - -const newArr = []; -inputArray.forEach(el => { - if(el >= 40) newArr.push(el); -}); -console.log(newArr); \ No newline at end of file diff --git a/Challenge/pozafly/forEachFilterIsNaN/README.md b/Challenge/pozafly/forEachFilterIsNaN/README.md deleted file mode 100644 index ba71774d..00000000 --- a/Challenge/pozafly/forEachFilterIsNaN/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소중 숫자인 원소만 뽑아 배열을 만드세요. - -## Expected Output - -[ 1, 40, 51.5, 88 ] diff --git a/Challenge/pozafly/forEachFilterIsNaN/solve.js b/Challenge/pozafly/forEachFilterIsNaN/solve.js deleted file mode 100644 index 8b7348a2..00000000 --- a/Challenge/pozafly/forEachFilterIsNaN/solve.js +++ /dev/null @@ -1,12 +0,0 @@ -const inputArray = [ 1, 40, "라매", "개발자", 51.5, 'a', 88 ]; - -// write your codes - -const result = inputArray.filter(el => !isNaN(el)); -console.log(result); - -const newArr = []; -inputArray.forEach(el => { - if(!isNaN(el)) newArr.push(el); -}); -console.log(newArr); \ No newline at end of file diff --git a/Challenge/pozafly/forEachMap/README.md b/Challenge/pozafly/forEachMap/README.md deleted file mode 100644 index d0e84215..00000000 --- a/Challenge/pozafly/forEachMap/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# forEachReduce - -## 설명 - -forEach 메소드를 사용해서 배열의 각 원소 끝에 '%'를 붙인 문자열 배열을 출력하세요 - -## Expected Output - -[ '100%', '10%', '20%', '40%' ] diff --git a/Challenge/pozafly/forEachMap/solve.js b/Challenge/pozafly/forEachMap/solve.js deleted file mode 100644 index c64203f0..00000000 --- a/Challenge/pozafly/forEachMap/solve.js +++ /dev/null @@ -1,10 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes - -const result = []; -inputArray.forEach(el => { - result.push(`${el}%`); -}); - -console.log(result) \ No newline at end of file diff --git a/Challenge/pozafly/forEachReduce/README.md b/Challenge/pozafly/forEachReduce/README.md deleted file mode 100644 index 8f369ed9..00000000 --- a/Challenge/pozafly/forEachReduce/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# forEachReduce - -## 설명 - -forEach 메소드를 사용해서 배열의 총 합을 출력하는 코드를 작성하세요 - -## Expected Output - -170 diff --git a/Challenge/pozafly/forEachReduce/solve.js b/Challenge/pozafly/forEachReduce/solve.js deleted file mode 100644 index 3c014ec4..00000000 --- a/Challenge/pozafly/forEachReduce/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes - -let value = 0; -inputArray.forEach(el => value += el); - -console.log(value); \ No newline at end of file diff --git a/Challenge/pozafly/mapAddPercent/README.md b/Challenge/pozafly/mapAddPercent/README.md deleted file mode 100644 index 4156a2f9..00000000 --- a/Challenge/pozafly/mapAddPercent/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -map 메소드를 사용해 배열 각각 숫자 뒤에 %를 붙인 문자열을 만드세요 - -## Expected Output - -['100%', '10%', '20%', '40%'] diff --git a/Challenge/pozafly/mapAddPercent/solve.js b/Challenge/pozafly/mapAddPercent/solve.js deleted file mode 100644 index f52d5f90..00000000 --- a/Challenge/pozafly/mapAddPercent/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes - -const result = inputArray.map(el => `${el}%`); -console.log(result); \ No newline at end of file diff --git a/Challenge/pozafly/mapAppendOrder/README.md b/Challenge/pozafly/mapAppendOrder/README.md deleted file mode 100644 index fccb0d1a..00000000 --- a/Challenge/pozafly/mapAppendOrder/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# 문제제목 - -## 설명 - -배열의 값을 name 프로퍼티에 넣고 몇번째 원소인지를 order에 넣은 객체의 배열을 출력하세요 - -## Expected Output - -[ - { name: '홍길동', order: 1 }, - { name: '둘리', order: 2 }, - { name: '루피', order: 3 } -] diff --git a/Challenge/pozafly/mapAppendOrder/solve.js b/Challenge/pozafly/mapAppendOrder/solve.js deleted file mode 100644 index 5d130d73..00000000 --- a/Challenge/pozafly/mapAppendOrder/solve.js +++ /dev/null @@ -1,7 +0,0 @@ -const inputArray = ['홍길동', '둘리', '루피']; - -// write your codes - -const result = inputArray.map((el, index) => ({ name: el, order: index + 1 })); - -console.log(result); \ No newline at end of file diff --git a/Challenge/pozafly/reduceMaxValueNIndex/README.md b/Challenge/pozafly/reduceMaxValueNIndex/README.md deleted file mode 100644 index 02a22b52..00000000 --- a/Challenge/pozafly/reduceMaxValueNIndex/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -reduce 메소드를 사용해 최댓값의 값을 maxValue에, 해당 값의 index를 idx에 넣은 객체를 출력하세요 - -## Expected Output - -{ maxValue: 85, idx: 7 }. diff --git a/Challenge/pozafly/reduceMaxValueNIndex/solve.js b/Challenge/pozafly/reduceMaxValueNIndex/solve.js deleted file mode 100644 index 5bea41cd..00000000 --- a/Challenge/pozafly/reduceMaxValueNIndex/solve.js +++ /dev/null @@ -1,16 +0,0 @@ -const inputArray = [3, 29, 38, 12, 57, 74, 40, 85, 61]; - -// write your codes - -const result = inputArray.reduce((acc, cur, idx) => { - if(acc?.maxValue < cur) { - return { - maxValue: cur, - idx - } - } - return acc; -}, { maxValue: 0, idx: -1 }); - - -console.log(result); \ No newline at end of file diff --git a/Challenge/pozafly/reduceNameNickname/README.md b/Challenge/pozafly/reduceNameNickname/README.md deleted file mode 100644 index aeaf5b31..00000000 --- a/Challenge/pozafly/reduceNameNickname/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -입력받은 객채배열의 nickname을 key, name을 value로 하는 객체를 출력하세요 - -## Expected Output - -{ hong: '홍길동', '2li': '둘리', '1Cin': '오스트랄로피테쿠스' } diff --git a/Challenge/pozafly/reduceNameNickname/solve.js b/Challenge/pozafly/reduceNameNickname/solve.js deleted file mode 100644 index c1242275..00000000 --- a/Challenge/pozafly/reduceNameNickname/solve.js +++ /dev/null @@ -1,25 +0,0 @@ -const inputArray = [ - { - name: '홍길동', - nickname: 'hong', - }, - { - name: '둘리', - nickname: '2li', - }, - { - name: '오스트랄로피테쿠스', - nickname: '1Cin', - }, -]; - -// write your codes - -const result = inputArray.reduce((acc, cur) => { - return { - ...acc, - [cur.nickname]: cur.name, - } -}, {}); - -console.log(result); \ No newline at end of file diff --git a/Challenge/pozafly/reduceSum/README.md b/Challenge/pozafly/reduceSum/README.md deleted file mode 100644 index 8c607eb2..00000000 --- a/Challenge/pozafly/reduceSum/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -reduce 메소드를 사용해서 배열의 모든 수의 합을 구하세요. - -## Expected Output - -106 diff --git a/Challenge/pozafly/reduceSum/solve.js b/Challenge/pozafly/reduceSum/solve.js deleted file mode 100644 index afe524fb..00000000 --- a/Challenge/pozafly/reduceSum/solve.js +++ /dev/null @@ -1,7 +0,0 @@ -const inputArray = [10, 3, 20, 5, 8, 60]; - -// write your codes - -const value = inputArray.reduce((acc, cur) => acc + cur, 0); - -console.log(value); \ No newline at end of file diff --git a/Challenge/pozafly/sortByPrice/README.md b/Challenge/pozafly/sortByPrice/README.md deleted file mode 100644 index b1ccf70e..00000000 --- a/Challenge/pozafly/sortByPrice/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 - -## Expected Output - -[ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 } -] diff --git a/Challenge/pozafly/sortByPrice/solve.js b/Challenge/pozafly/sortByPrice/solve.js deleted file mode 100644 index 88dd163c..00000000 --- a/Challenge/pozafly/sortByPrice/solve.js +++ /dev/null @@ -1,24 +0,0 @@ -const inputArray = [ - { - name: '사과', - price: 1000, - }, - { - name: '수박', - price: 5000, - }, - { - name: '당근', - price: 2000, - }, - { - name: '참외', - price: 10000, - } -]; - -// write your codes - -inputArray.sort((a, b) => a.price - b.price); - -console.log(inputArray); \ No newline at end of file diff --git a/Challenge/pozafly/sortByPriceAndQuantity/README.md b/Challenge/pozafly/sortByPriceAndQuantity/README.md deleted file mode 100644 index 41cd5c95..00000000 --- a/Challenge/pozafly/sortByPriceAndQuantity/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 -만약 price가 같다면 quantity기준으로 오름차순 정렬하세요 - -## Expected Output - -[ - { name: '사과', price: 1000, quantity: 2 }, - { name: '오이', price: 2000, quantity: 49 }, - { name: '당근', price: 2000, quantity: 50 }, - { name: '참외', price: 5000, quantity: 10 }, - { name: '수박', price: 5000, quantity: 20 } -] diff --git a/Challenge/pozafly/sortByPriceAndQuantity/solve.js b/Challenge/pozafly/sortByPriceAndQuantity/solve.js deleted file mode 100644 index ceb30024..00000000 --- a/Challenge/pozafly/sortByPriceAndQuantity/solve.js +++ /dev/null @@ -1,44 +0,0 @@ -const inputArray = [ - { - name: '사과', - price: 1000, - quantity: 2, - }, - { - name: '수박', - price: 5000, - quantity: 20, - }, - { - name: '당근', - price: 2000, - quantity: 50, - }, - { - name: '참외', - price: 5000, - quantity: 10, - }, - { - name: '오이', - price: 2000, - quantity: 49, - } -]; - -// write your codes - -// inputArray.sort((a, b) => { -// if(a.price > b.price) return 1; -// if(a.price === b.price) { -// return a.quantity - b.quantity; -// } -// if(a.price < b.price) return -1; -// }); - -inputArray.sort((a, b) => { - return a.price - b.price || a.quantity - b.quantity; -}); - -console.log(inputArray); - diff --git a/Challenge/rkddbs1031/everyArray/README.md b/Challenge/rkddbs1031/everyArray/README.md deleted file mode 100644 index 442558f6..00000000 --- a/Challenge/rkddbs1031/everyArray/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -every를 이용해서 모든 원소가 짝수인지 아닌지를 판별하세요 - -## Expected Output - -true \ No newline at end of file diff --git a/Challenge/rkddbs1031/everyArray/solve.js b/Challenge/rkddbs1031/everyArray/solve.js deleted file mode 100644 index 22445bbb..00000000 --- a/Challenge/rkddbs1031/everyArray/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -function solution(inputArray) { - const answer = inputArray.every((e) => e % 2 === 0) - return answer; -} - -exports.solution = solution; \ No newline at end of file diff --git a/Challenge/rkddbs1031/expDivOdd/README.md b/Challenge/rkddbs1031/expDivOdd/README.md deleted file mode 100644 index c07ab10b..00000000 --- a/Challenge/rkddbs1031/expDivOdd/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -제곱한 후 3으로 나눈 나머지가 홀수인 것 을 뽑은 배열의 총 합을 구하세요. diff --git a/Challenge/rkddbs1031/expDivOdd/solve.js b/Challenge/rkddbs1031/expDivOdd/solve.js deleted file mode 100644 index 2c272d08..00000000 --- a/Challenge/rkddbs1031/expDivOdd/solve.js +++ /dev/null @@ -1,7 +0,0 @@ -function solution(inputArray) { - const nums = inputArray.filter((num) => num**2 % 3 === 1); - const answer = nums.reduce((acc, cur) => acc + cur, 0) - return answer; -} - -exports.solution = solution; diff --git a/Challenge/rkddbs1031/filterAge/README.md b/Challenge/rkddbs1031/filterAge/README.md deleted file mode 100644 index 873a15c1..00000000 --- a/Challenge/rkddbs1031/filterAge/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소의 age가 30이상 50미만인 사람만 있는 객체의 배열을 만드세요 diff --git a/Challenge/rkddbs1031/filterAge/solve.js b/Challenge/rkddbs1031/filterAge/solve.js deleted file mode 100644 index 6ad93445..00000000 --- a/Challenge/rkddbs1031/filterAge/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.filter((el) => el.age >= 30 && el.age < 50) -} - -exports.solution = solution; diff --git a/Challenge/rkddbs1031/filterOdd/README.md b/Challenge/rkddbs1031/filterOdd/README.md deleted file mode 100644 index cf9eda79..00000000 --- a/Challenge/rkddbs1031/filterOdd/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -홀수만 뽑아 배열로 만드세요 diff --git a/Challenge/rkddbs1031/filterOdd/solve.js b/Challenge/rkddbs1031/filterOdd/solve.js deleted file mode 100644 index 2c905217..00000000 --- a/Challenge/rkddbs1031/filterOdd/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.filter((odd) => odd % 2 === 1) -} - -exports.solution = solution; diff --git a/Challenge/rkddbs1031/filterOdd/solve.test.js b/Challenge/rkddbs1031/filterOdd/solve.test.js deleted file mode 100644 index 8cfd7f5a..00000000 --- a/Challenge/rkddbs1031/filterOdd/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [4, 2, 5, 1, 3], - answer: [5, 1, 3], -}; - -const test2 = { - input: [4, 2, 6, 8, 50, 16], - answer: [], -}; - -const test3 = { - input: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], - answer: [1, 3, 5, 7, 9, 11], -}; - -describe('filterOdd', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/rkddbs1031/findWord/README.md b/Challenge/rkddbs1031/findWord/README.md deleted file mode 100644 index 8ef123f4..00000000 --- a/Challenge/rkddbs1031/findWord/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -용가리라는 단어가 있으면 true 없으면 false를 출력 - -## Expected Output - -true diff --git a/Challenge/rkddbs1031/findWord/solve.js b/Challenge/rkddbs1031/findWord/solve.js deleted file mode 100644 index fb98244e..00000000 --- a/Challenge/rkddbs1031/findWord/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.includes('용가리'); -} - -exports.solution = solution; diff --git a/Challenge/rkddbs1031/findWord/solve.test.js b/Challenge/rkddbs1031/findWord/solve.test.js deleted file mode 100644 index 804114f6..00000000 --- a/Challenge/rkddbs1031/findWord/solve.test.js +++ /dev/null @@ -1,26 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: ['잠', '자', '고', '싶', '다', '용가리'], - answer: true, -}; -const test2 = { - input: ['맛있는', '용가리치킨'], - answer: false, -}; -const test3 = { - input: ['고질라', '용가리 ', '울트라맨'], - answer: false, -}; - -describe('findWord', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); \ No newline at end of file diff --git a/Challenge/rkddbs1031/forEachFilter/README.md b/Challenge/rkddbs1031/forEachFilter/README.md deleted file mode 100644 index 6dcbc7c2..00000000 --- a/Challenge/rkddbs1031/forEachFilter/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소중 40 이상인 수만 뽑아 배열을 만드세요. diff --git a/Challenge/rkddbs1031/forEachFilter/solve.js b/Challenge/rkddbs1031/forEachFilter/solve.js deleted file mode 100644 index 66b23f2a..00000000 --- a/Challenge/rkddbs1031/forEachFilter/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.filter((item) => item >= 40) -} - -exports.solution = solution; diff --git a/Challenge/rkddbs1031/forEachFilter/solve.test.js b/Challenge/rkddbs1031/forEachFilter/solve.test.js deleted file mode 100644 index 3d73b25c..00000000 --- a/Challenge/rkddbs1031/forEachFilter/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: [100, 40], -}; - -describe('forEachFilter', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/rkddbs1031/forEachFilterIsNaN/README.md b/Challenge/rkddbs1031/forEachFilterIsNaN/README.md deleted file mode 100644 index 570c030e..00000000 --- a/Challenge/rkddbs1031/forEachFilterIsNaN/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소중 숫자인 원소만 뽑아 배열을 만드세요. diff --git a/Challenge/rkddbs1031/forEachFilterIsNaN/solve.js b/Challenge/rkddbs1031/forEachFilterIsNaN/solve.js deleted file mode 100644 index e11379da..00000000 --- a/Challenge/rkddbs1031/forEachFilterIsNaN/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.filter((item) => typeof item === 'number') -} - -exports.solution = solution; diff --git a/Challenge/rkddbs1031/forEachFilterIsNaN/solve.test.js b/Challenge/rkddbs1031/forEachFilterIsNaN/solve.test.js deleted file mode 100644 index d6e118bb..00000000 --- a/Challenge/rkddbs1031/forEachFilterIsNaN/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 40, '라매', '개발자', 51.5, 'a', 88], - answer: [1, 40, 51.5, 88], -}; - -const test2 = { - input: [1, 2, 3, '4', 5, '6'], - answer: [1, 2, 3, 5], -}; - -const test3 = { - input: [-3, -2, -1, 0, 1, 2, 3], - answer: [-3, -2, -1, 0, 1, 2, 3], -}; - -describe('forEachFilterIsNaN', () => { - test('test1: 숫자,문자 판별', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2: 문자로된 숫자 판별', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3: 음수 양수 포함', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); \ No newline at end of file diff --git a/Challenge/rkddbs1031/forEachMap/README.md b/Challenge/rkddbs1031/forEachMap/README.md deleted file mode 100644 index 1e8e03c8..00000000 --- a/Challenge/rkddbs1031/forEachMap/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -forEach 메소드를 사용해서 배열의 각 원소 끝에 '%'를 붙인 문자열 배열을 출력하세요 diff --git a/Challenge/rkddbs1031/forEachMap/solve.js b/Challenge/rkddbs1031/forEachMap/solve.js deleted file mode 100644 index 5e78761e..00000000 --- a/Challenge/rkddbs1031/forEachMap/solve.js +++ /dev/null @@ -1,10 +0,0 @@ -// write your codes -function solution(inputArray) { - let answer = [] - inputArray.forEach((item) => { - answer.push(item + '%') - }) - return answer -} - -exports.solution = solution; diff --git a/Challenge/rkddbs1031/forEachMap/solve.test.js b/Challenge/rkddbs1031/forEachMap/solve.test.js deleted file mode 100644 index de4868c6..00000000 --- a/Challenge/rkddbs1031/forEachMap/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: ['100%', '10%', '20%', '40%'], -}; - -describe('forEachMap', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/rkddbs1031/forEachReduce/README.md b/Challenge/rkddbs1031/forEachReduce/README.md deleted file mode 100644 index a984df2d..00000000 --- a/Challenge/rkddbs1031/forEachReduce/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -forEach 메소드를 사용해서 배열의 총 합을 출력하는 코드를 작성하세요 diff --git a/Challenge/rkddbs1031/forEachReduce/solve.js b/Challenge/rkddbs1031/forEachReduce/solve.js deleted file mode 100644 index 865c5256..00000000 --- a/Challenge/rkddbs1031/forEachReduce/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -// write your codes -function solution(inputArray) { - let sum = 0; - inputArray.forEach((item) => sum += item) - return sum -} - -exports.solution = solution; diff --git a/Challenge/rkddbs1031/forEachReduce/solve.test.js b/Challenge/rkddbs1031/forEachReduce/solve.test.js deleted file mode 100644 index 397e4b50..00000000 --- a/Challenge/rkddbs1031/forEachReduce/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: 170, -}; - -const test2 = { - input: [120, -20, -30, 0, 15], - answer: 85, -}; - -const test3 = { - input: [-10, -20, -30], - answer: -60, -}; - -describe('forEachReduce', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2: 음수가 포함된 계산', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3: 음수만 존재하는 계산', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/rkddbs1031/mapAddPercent/README.md b/Challenge/rkddbs1031/mapAddPercent/README.md deleted file mode 100644 index 75e73042..00000000 --- a/Challenge/rkddbs1031/mapAddPercent/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -map 메소드를 사용해 배열 각각 숫자 뒤에 %를 붙인 문자열을 만드세요 diff --git a/Challenge/rkddbs1031/mapAddPercent/solve.js b/Challenge/rkddbs1031/mapAddPercent/solve.js deleted file mode 100644 index abfac2a8..00000000 --- a/Challenge/rkddbs1031/mapAddPercent/solve.js +++ /dev/null @@ -1,10 +0,0 @@ -// write your codes -function solution(inputArray) { - let answer = [] - inputArray.map((item) => { - answer.push(item +'%') - }) - return answer -} - -exports.solution = solution; diff --git a/Challenge/rkddbs1031/mapAddPercent/solve.test.js b/Challenge/rkddbs1031/mapAddPercent/solve.test.js deleted file mode 100644 index dac1b3cc..00000000 --- a/Challenge/rkddbs1031/mapAddPercent/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: ['100%', '10%', '20%', '40%'], -}; - -describe('mapAddPercent', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/rkddbs1031/mapAppendOrder/README.md b/Challenge/rkddbs1031/mapAppendOrder/README.md deleted file mode 100644 index 1435623a..00000000 --- a/Challenge/rkddbs1031/mapAppendOrder/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열의 값을 name 프로퍼티에 넣고 몇번째 원소인지를 order에 넣은 객체의 배열을 출력하세요 diff --git a/Challenge/rkddbs1031/mapAppendOrder/solve.js b/Challenge/rkddbs1031/mapAppendOrder/solve.js deleted file mode 100644 index 5530d53b..00000000 --- a/Challenge/rkddbs1031/mapAppendOrder/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.map((item, idx) => { - return { 'name': item, 'order': idx+1} - }) -} - -exports.solution = solution; diff --git a/Challenge/rkddbs1031/mapAppendOrder/solve.test.js b/Challenge/rkddbs1031/mapAppendOrder/solve.test.js deleted file mode 100644 index e08db10c..00000000 --- a/Challenge/rkddbs1031/mapAppendOrder/solve.test.js +++ /dev/null @@ -1,16 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: ['홍길동', '둘리', '루피'], - answer: [ - { name: '홍길동', order: 1 }, - { name: '둘리', order: 2 }, - { name: '루피', order: 3 }, - ], -}; - -describe('mapAppendOrder', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/rkddbs1031/recommendAd/README.md b/Challenge/rkddbs1031/recommendAd/README.md deleted file mode 100644 index 132e8800..00000000 --- a/Challenge/rkddbs1031/recommendAd/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# 문제제목 - -사용자가 안 본 광고는? - -## 설명 - -유튜브는 사용자가 프리미엄 회원이 아닌 경우 영상 시작이나 중간에 광고가 나오도록 설정되어 있습니다. - -[2020년 유튜브 인기 광고](https://www.thinkwithgoogle.com/intl/ko-kr/marketing-strategies/video/%EB%8C%80%ED%95%9C%EB%AF%BC%EA%B5%AD-youtube-%EC%9D%B8%EA%B8%B0-%EA%B4%91%EA%B3%A0%EC%98%81%EC%83%81-2020%EB%85%84-%EC%97%B0%EB%A7%90%EA%B2%B0%EC%82%B0/)는 총 열 편으로, 사용자의 일주일간 광고 시청 이력을 통해 해당 사용자가 일주일 동안 안 본 광고를 그 다음주에 노출함으로써 광고들이 사용자에게 골고루 노출되길 원합니다. - -유저가 매일 유튜브에 접속하여 하루 한 편 이상의 광고를 보았다고 가정할 때, 이 유저가 안 본 광고는 무엇인지 출력해주세요. - -## Expected Output - -[ '동원F&B' ] diff --git a/Challenge/rkddbs1031/recommendAd/solve.js b/Challenge/rkddbs1031/recommendAd/solve.js deleted file mode 100644 index d613c58a..00000000 --- a/Challenge/rkddbs1031/recommendAd/solve.js +++ /dev/null @@ -1,20 +0,0 @@ -const userHistory = [ - { date: '2020-11-03', watched: ['KT', 'BBQ'] }, - { date: '2020-11-04', watched: ['정관장', 'KT', '딱좋은데이'] }, - { date: '2020-11-05', watched: ['그랑사가', '농심'] }, - { date: '2020-11-06', watched: ['BBQ'] }, - { date: '2020-11-07', watched: ['쌍용자동차', 'BBQ', 'KT'] }, - { date: '2020-11-08', watched: ['켈로그코리아', '빙그레'] }, - { date: '2020-11-09', watched: ['KT', '그랑사가', '빙그레'] }, -]; - -// write your codes -function solution(inputArray) { - let watchList = []; - userHistory.map((item) => watchList.push(...item.watched)) - watchList = [...new Set(watchList)] - - return inputArray.filter((item) => !watchList.includes(item)) -} - -exports.solution = solution; diff --git a/Challenge/rkddbs1031/recommendAd/solve.test.js b/Challenge/rkddbs1031/recommendAd/solve.test.js deleted file mode 100644 index 8a0f6464..00000000 --- a/Challenge/rkddbs1031/recommendAd/solve.test.js +++ /dev/null @@ -1,23 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - '동원F&B', - '정관장', - 'KT', - 'BBQ', - '그랑사가', - '농심', - '딱좋은데이', - '빙그레', - '쌍용자동차', - '켈로그코리아', - ], - answer: ['동원F&B'], -}; - -describe('recommendAd', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/rkddbs1031/reduceMaxValueNIndex/README.md b/Challenge/rkddbs1031/reduceMaxValueNIndex/README.md deleted file mode 100644 index 965bdec6..00000000 --- a/Challenge/rkddbs1031/reduceMaxValueNIndex/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -reduce 메소드를 사용해 최댓값의 값을 maxValue에, 해당 값의 index를 idx에 넣은 객체를 출력하세요 diff --git a/Challenge/rkddbs1031/reduceMaxValueNIndex/solve.js b/Challenge/rkddbs1031/reduceMaxValueNIndex/solve.js deleted file mode 100644 index d0c4560b..00000000 --- a/Challenge/rkddbs1031/reduceMaxValueNIndex/solve.js +++ /dev/null @@ -1,11 +0,0 @@ -// write your codes -function solution(inputArray) { - let answer = {}; - let max = inputArray.reduce((acc, cur) =>acc> cur ? acc : cur ); - answer.maxValue = max; - answer.idx = inputArray.findIndex(item => item === max) - - return answer; -} - -exports.solution = solution; diff --git a/Challenge/rkddbs1031/reduceMaxValueNIndex/solve.test.js b/Challenge/rkddbs1031/reduceMaxValueNIndex/solve.test.js deleted file mode 100644 index 0daef5b8..00000000 --- a/Challenge/rkddbs1031/reduceMaxValueNIndex/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [3, 29, 38, 12, 57, 74, 40, 85, 61], - answer: { maxValue: 85, idx: 7 }, -}; - -const test2 = { - input: [-24, -2, -13, -49, -999999, -17], - answer: { maxValue: -2, idx: 1 }, -}; -//최댓값이 중복일 때에는 먼저 나온 최댓값의 인덱스를 유지하도록 설정하였습니다. -const test3 = { - input: [2, -20, 21, -874, 99, -16, -29, 99], - answer: { maxValue: 99, idx: 4 }, -}; - -describe('reduceMaxValueNIndex', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2 : 음수 테스트', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3 : 중복된 최대값 테스트', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/rkddbs1031/reduceNameNickname/README.md b/Challenge/rkddbs1031/reduceNameNickname/README.md deleted file mode 100644 index b6920e05..00000000 --- a/Challenge/rkddbs1031/reduceNameNickname/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -입력받은 객채배열의 nickname을 key, name을 value로 하는 객체를 출력하세요 diff --git a/Challenge/rkddbs1031/reduceNameNickname/solve.js b/Challenge/rkddbs1031/reduceNameNickname/solve.js deleted file mode 100644 index aaa5aa0a..00000000 --- a/Challenge/rkddbs1031/reduceNameNickname/solve.js +++ /dev/null @@ -1,12 +0,0 @@ -// write your codes -function solution(inputArray) { - const result = inputArray.reduce((acc, cur) => { - return { - ...acc, - [cur.nickname]: cur.name - } - }, {}) - return result; -} - -exports.solution = solution; diff --git a/Challenge/rkddbs1031/reduceNameNickname/solve.test.js b/Challenge/rkddbs1031/reduceNameNickname/solve.test.js deleted file mode 100644 index 67b74529..00000000 --- a/Challenge/rkddbs1031/reduceNameNickname/solve.test.js +++ /dev/null @@ -1,25 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '홍길동', - nickname: 'hong', - }, - { - name: '둘리', - nickname: '2li', - }, - { - name: '오스트랄로피테쿠스', - nickname: '1Cin', - }, - ], - answer: { hong: '홍길동', '2li': '둘리', '1Cin': '오스트랄로피테쿠스' }, -}; - -describe('reduceNameNickname', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/rkddbs1031/reduceSum/README.md b/Challenge/rkddbs1031/reduceSum/README.md deleted file mode 100644 index 8c607eb2..00000000 --- a/Challenge/rkddbs1031/reduceSum/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -reduce 메소드를 사용해서 배열의 모든 수의 합을 구하세요. - -## Expected Output - -106 diff --git a/Challenge/rkddbs1031/reduceSum/solve.js b/Challenge/rkddbs1031/reduceSum/solve.js deleted file mode 100644 index 570ff6c5..00000000 --- a/Challenge/rkddbs1031/reduceSum/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.reduce((acc, cur) => acc + cur, 0) -} - -exports.solution = solution; diff --git a/Challenge/rkddbs1031/reduceSum/solve.test.js b/Challenge/rkddbs1031/reduceSum/solve.test.js deleted file mode 100644 index 046c40cb..00000000 --- a/Challenge/rkddbs1031/reduceSum/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [10, 3, 20, 5, 8, 60], - answer: 106, -}; - -describe('reduceSum', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/rkddbs1031/sortByPrice/README.md b/Challenge/rkddbs1031/sortByPrice/README.md deleted file mode 100644 index b1ccf70e..00000000 --- a/Challenge/rkddbs1031/sortByPrice/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 - -## Expected Output - -[ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 } -] diff --git a/Challenge/rkddbs1031/sortByPrice/solve.js b/Challenge/rkddbs1031/sortByPrice/solve.js deleted file mode 100644 index ee97051d..00000000 --- a/Challenge/rkddbs1031/sortByPrice/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.sort((a, b) => a.price - b.price) -} - -exports.solution = solution; diff --git a/Challenge/rkddbs1031/sortByPrice/solve.test.js b/Challenge/rkddbs1031/sortByPrice/solve.test.js deleted file mode 100644 index 3d6a3431..00000000 --- a/Challenge/rkddbs1031/sortByPrice/solve.test.js +++ /dev/null @@ -1,34 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '사과', - price: 1000, - }, - { - name: '수박', - price: 5000, - }, - { - name: '당근', - price: 2000, - }, - { - name: '참외', - price: 10000, - }, - ], - answer: [ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 }, - ], -}; - -describe('sortByPrice', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/rkddbs1031/sortByPriceAndQuantity/README.md b/Challenge/rkddbs1031/sortByPriceAndQuantity/README.md deleted file mode 100644 index 41cd5c95..00000000 --- a/Challenge/rkddbs1031/sortByPriceAndQuantity/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 -만약 price가 같다면 quantity기준으로 오름차순 정렬하세요 - -## Expected Output - -[ - { name: '사과', price: 1000, quantity: 2 }, - { name: '오이', price: 2000, quantity: 49 }, - { name: '당근', price: 2000, quantity: 50 }, - { name: '참외', price: 5000, quantity: 10 }, - { name: '수박', price: 5000, quantity: 20 } -] diff --git a/Challenge/rkddbs1031/sortByPriceAndQuantity/solve.js b/Challenge/rkddbs1031/sortByPriceAndQuantity/solve.js deleted file mode 100644 index a2074e78..00000000 --- a/Challenge/rkddbs1031/sortByPriceAndQuantity/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.sort((a,b) => { - if(a.price !== b.price) return a.price - b.price - else return a.quantity - b.quantity - }) -} - -exports.solution = solution; diff --git a/Challenge/rkddbs1031/sortByPriceAndQuantity/solve.test.js b/Challenge/rkddbs1031/sortByPriceAndQuantity/solve.test.js deleted file mode 100644 index 424f42b7..00000000 --- a/Challenge/rkddbs1031/sortByPriceAndQuantity/solve.test.js +++ /dev/null @@ -1,44 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '사과', - price: 1000, - quantity: 2, - }, - { - name: '수박', - price: 5000, - quantity: 20, - }, - { - name: '당근', - price: 2000, - quantity: 50, - }, - { - name: '참외', - price: 5000, - quantity: 10, - }, - { - name: '오이', - price: 2000, - quantity: 49, - }, - ], - answer: [ - { name: '사과', price: 1000, quantity: 2 }, - { name: '오이', price: 2000, quantity: 49 }, - { name: '당근', price: 2000, quantity: 50 }, - { name: '참외', price: 5000, quantity: 10 }, - { name: '수박', price: 5000, quantity: 20 }, - ], -}; - -describe('sortByPriceAndQuantity', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/sharpcoder312/expDivOdd/README.md b/Challenge/sharpcoder312/expDivOdd/README.md deleted file mode 100644 index 6749b510..00000000 --- a/Challenge/sharpcoder312/expDivOdd/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -// 제곱한 후 3으로 나눈 나머지가 홀수인 것의 총 합을 구하세요. - -## Expected Output - -59 diff --git a/Challenge/sharpcoder312/expDivOdd/solve.js b/Challenge/sharpcoder312/expDivOdd/solve.js deleted file mode 100644 index 52b3c1e3..00000000 --- a/Challenge/sharpcoder312/expDivOdd/solve.js +++ /dev/null @@ -1,7 +0,0 @@ -const inputArray = [ 1, 7, 3, 4, 6 ]; - -// write your codes - -const nums = inputArray.filter(num => {return num**2 % 3 === 1}); -const answer = nums.reduce((acc, cur) => {return acc + cur}, 0) -console.log(answer); \ No newline at end of file diff --git a/Challenge/sharpcoder312/filterAge/README.md b/Challenge/sharpcoder312/filterAge/README.md deleted file mode 100644 index 1c73138e..00000000 --- a/Challenge/sharpcoder312/filterAge/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소의 age가 30이상 50미만인 사람만 있는 객체의 배열을 만드세요 - -## Expected Output - -[ { name: '일미', age: 35 }, { name: '이미', age: 45 } ] diff --git a/Challenge/sharpcoder312/filterAge/solve.js b/Challenge/sharpcoder312/filterAge/solve.js deleted file mode 100644 index 5a962a6b..00000000 --- a/Challenge/sharpcoder312/filterAge/solve.js +++ /dev/null @@ -1,29 +0,0 @@ -const inputArray = [ - { - name: '영미', - age: 25, - }, - { - name: '일미', - age: 35, - }, - { - name: '이미', - age: 45, - }, - { - name: '삼미', - age: 55, - }, -] -// write your codes - -// const answer = inputArray.filter(function (person) { -// return person.age >= 30 && person.age < 50 // 30 <= person.age < 50 - 이런 실수 하지않기 -// }); -// console.log(answer); - -const answer = inputArray.filter(person => person.age >= 30 && person.age < 50) -console.log(answer); - - diff --git a/Challenge/sharpcoder312/filterOdd/README.md b/Challenge/sharpcoder312/filterOdd/README.md deleted file mode 100644 index 9bf99a18..00000000 --- a/Challenge/sharpcoder312/filterOdd/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -홀수만 뽑아 배열로 만드세요 - -## Expected Output - -[5, 1, 3] diff --git a/Challenge/sharpcoder312/filterOdd/solve.js b/Challenge/sharpcoder312/filterOdd/solve.js deleted file mode 100644 index dbf7e85c..00000000 --- a/Challenge/sharpcoder312/filterOdd/solve.js +++ /dev/null @@ -1,7 +0,0 @@ -const inputArray = [4, 2, 5, 1, 3]; - -// write your codes - -const answer = inputArray.filter(num => num % 2 === 1); -console.log(answer); - diff --git a/Challenge/sharpcoder312/forEachFilter/README.md b/Challenge/sharpcoder312/forEachFilter/README.md deleted file mode 100644 index d826e8e6..00000000 --- a/Challenge/sharpcoder312/forEachFilter/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소중 40 이상인 수만 뽑아 배열을 만드세요. - -## Expected Output - -[ 100, 40 ] diff --git a/Challenge/sharpcoder312/forEachFilter/solve.js b/Challenge/sharpcoder312/forEachFilter/solve.js deleted file mode 100644 index 94b359e8..00000000 --- a/Challenge/sharpcoder312/forEachFilter/solve.js +++ /dev/null @@ -1,11 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes - -let nums = []; -inputArray.forEach(num => { - if(num >= 40) { - nums.push(num); - } -}) -console.log(nums); \ No newline at end of file diff --git a/Challenge/sharpcoder312/forEachMap/README.md b/Challenge/sharpcoder312/forEachMap/README.md deleted file mode 100644 index d0e84215..00000000 --- a/Challenge/sharpcoder312/forEachMap/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# forEachReduce - -## 설명 - -forEach 메소드를 사용해서 배열의 각 원소 끝에 '%'를 붙인 문자열 배열을 출력하세요 - -## Expected Output - -[ '100%', '10%', '20%', '40%' ] diff --git a/Challenge/sharpcoder312/forEachMap/solve.js b/Challenge/sharpcoder312/forEachMap/solve.js deleted file mode 100644 index 31863c1a..00000000 --- a/Challenge/sharpcoder312/forEachMap/solve.js +++ /dev/null @@ -1,11 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes - -const answer = []; -inputArray.forEach((num) => { - answer.push(num + '%'); -}) -console.log(answer); - - diff --git a/Challenge/sharpcoder312/forEachReduce/README.md b/Challenge/sharpcoder312/forEachReduce/README.md deleted file mode 100644 index 8f369ed9..00000000 --- a/Challenge/sharpcoder312/forEachReduce/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# forEachReduce - -## 설명 - -forEach 메소드를 사용해서 배열의 총 합을 출력하는 코드를 작성하세요 - -## Expected Output - -170 diff --git a/Challenge/sharpcoder312/forEachReduce/solve.js b/Challenge/sharpcoder312/forEachReduce/solve.js deleted file mode 100644 index 484de08e..00000000 --- a/Challenge/sharpcoder312/forEachReduce/solve.js +++ /dev/null @@ -1,28 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes - - -// method 01 -const answer1 = inputArray.reduce((acc, cur) => { - return acc + cur; -}, 0); -console.log(answer1); - - -// method 02 -let answer2 = 0; -inputArray.forEach((num, i) => { - for (; i < inputArray.length; i++) { - return answer2 = answer2 + inputArray[i] - } -}) -console.log(answer2); - - -// method 03 * -let answer3 = 0; -inputArray.forEach((num) => { - answer3 += num -}) -console.log(answer3); \ No newline at end of file diff --git a/Challenge/sharpcoder312/mapAddPercent/README.md b/Challenge/sharpcoder312/mapAddPercent/README.md deleted file mode 100644 index 4156a2f9..00000000 --- a/Challenge/sharpcoder312/mapAddPercent/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -map 메소드를 사용해 배열 각각 숫자 뒤에 %를 붙인 문자열을 만드세요 - -## Expected Output - -['100%', '10%', '20%', '40%'] diff --git a/Challenge/sharpcoder312/mapAddPercent/solve.js b/Challenge/sharpcoder312/mapAddPercent/solve.js deleted file mode 100644 index ba4a6229..00000000 --- a/Challenge/sharpcoder312/mapAddPercent/solve.js +++ /dev/null @@ -1,13 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes - -const answer = inputArray.map(num => num + "%") -console.log(answer) - -// const answer = inputArray.map((num) => -// num + "%" -// ) -// const answer = inputArray.map((num) => { -// return num + "%" -// }) \ No newline at end of file diff --git a/Challenge/sharpcoder312/mapAppendOrder/README.md b/Challenge/sharpcoder312/mapAppendOrder/README.md deleted file mode 100644 index fccb0d1a..00000000 --- a/Challenge/sharpcoder312/mapAppendOrder/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# 문제제목 - -## 설명 - -배열의 값을 name 프로퍼티에 넣고 몇번째 원소인지를 order에 넣은 객체의 배열을 출력하세요 - -## Expected Output - -[ - { name: '홍길동', order: 1 }, - { name: '둘리', order: 2 }, - { name: '루피', order: 3 } -] diff --git a/Challenge/sharpcoder312/mapAppendOrder/solve.js b/Challenge/sharpcoder312/mapAppendOrder/solve.js deleted file mode 100644 index 8ed0401b..00000000 --- a/Challenge/sharpcoder312/mapAppendOrder/solve.js +++ /dev/null @@ -1,12 +0,0 @@ -const inputArray = ['홍길동', '둘리', '루피']; - -// write your codes - -const answer = inputArray.map((name, order) => { - return { - name: name, - order: order+1, - } -}) - -console.log(answer); \ No newline at end of file diff --git a/Challenge/sharpcoder312/reduceSum/README.md b/Challenge/sharpcoder312/reduceSum/README.md deleted file mode 100644 index 8c607eb2..00000000 --- a/Challenge/sharpcoder312/reduceSum/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -reduce 메소드를 사용해서 배열의 모든 수의 합을 구하세요. - -## Expected Output - -106 diff --git a/Challenge/sharpcoder312/reduceSum/solve.js b/Challenge/sharpcoder312/reduceSum/solve.js deleted file mode 100644 index 1b2dc6ac..00000000 --- a/Challenge/sharpcoder312/reduceSum/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -const inputArray = [10, 3, 20, 5, 8, 60]; - -// write your codes - -const answer = inputArray.reduce((acc, cur)=> { - return acc + cur; -},0) -console.log(answer); \ No newline at end of file diff --git a/Challenge/sorisori01/filterAge/README.md b/Challenge/sorisori01/filterAge/README.md deleted file mode 100644 index 1c73138e..00000000 --- a/Challenge/sorisori01/filterAge/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소의 age가 30이상 50미만인 사람만 있는 객체의 배열을 만드세요 - -## Expected Output - -[ { name: '일미', age: 35 }, { name: '이미', age: 45 } ] diff --git a/Challenge/sorisori01/filterAge/solve.js b/Challenge/sorisori01/filterAge/solve.js deleted file mode 100644 index 62845643..00000000 --- a/Challenge/sorisori01/filterAge/solve.js +++ /dev/null @@ -1,23 +0,0 @@ -const inputArray = [ - { - name: '영미', - age: 25, - }, - { - name: '일미', - age: 35, - }, - { - name: '이미', - age: 45, - }, - { - name: '삼미', - age: 55, - }, -] -// write your codes - -const result = inputArray.filter(e => e.age > 30 && e.age < 50); - -console.log(result); \ No newline at end of file diff --git a/Challenge/sorisori01/filterOdd/solve.js b/Challenge/sorisori01/filterOdd/solve.js deleted file mode 100644 index b41a98be..00000000 --- a/Challenge/sorisori01/filterOdd/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -const inputArray = [4, 2, 5, 1, 3]; - -// write your codes - - -const result = inputArray.filter(e => e % 2 === 1); -console.log(result); - diff --git a/Challenge/sorisori01/findWord/README.md b/Challenge/sorisori01/findWord/README.md deleted file mode 100644 index 8ef123f4..00000000 --- a/Challenge/sorisori01/findWord/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -용가리라는 단어가 있으면 true 없으면 false를 출력 - -## Expected Output - -true diff --git a/Challenge/sorisori01/findWord/solve.js b/Challenge/sorisori01/findWord/solve.js deleted file mode 100644 index 37a04651..00000000 --- a/Challenge/sorisori01/findWord/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -const inputArray = ['잠', '자', '고', '싶', '다', '용가리']; - -// write your codes -let res = false -const result = inputArray.find(e => { - if(e == '용가리') res = true -}) -console.log(res); \ No newline at end of file diff --git a/Challenge/sorisori01/forEachFilter/README.md b/Challenge/sorisori01/forEachFilter/README.md deleted file mode 100644 index d826e8e6..00000000 --- a/Challenge/sorisori01/forEachFilter/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소중 40 이상인 수만 뽑아 배열을 만드세요. - -## Expected Output - -[ 100, 40 ] diff --git a/Challenge/sorisori01/forEachFilter/solve.js b/Challenge/sorisori01/forEachFilter/solve.js deleted file mode 100644 index 6a9eaf6f..00000000 --- a/Challenge/sorisori01/forEachFilter/solve.js +++ /dev/null @@ -1,10 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes - -const result = []; - inputArray.forEach(e => { - if(e >= 40) - result.push(e); - }) -console.log(result); \ No newline at end of file diff --git a/Challenge/sorisori01/forEachFilterIsNaN/README.md b/Challenge/sorisori01/forEachFilterIsNaN/README.md deleted file mode 100644 index ba71774d..00000000 --- a/Challenge/sorisori01/forEachFilterIsNaN/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소중 숫자인 원소만 뽑아 배열을 만드세요. - -## Expected Output - -[ 1, 40, 51.5, 88 ] diff --git a/Challenge/sorisori01/forEachFilterIsNaN/solve.js b/Challenge/sorisori01/forEachFilterIsNaN/solve.js deleted file mode 100644 index 278876f8..00000000 --- a/Challenge/sorisori01/forEachFilterIsNaN/solve.js +++ /dev/null @@ -1,13 +0,0 @@ -const inputArray = [ 1, 40, "라매", "개발자", 51.5, 'a', 88 ]; - -// write your codes - -const result = []; - -inputArray.forEach(e => { - if(!isNaN(e)){ - result.push(e); - } -}) - -console.log(result); \ No newline at end of file diff --git a/Challenge/sorisori01/forEachReduce/README.md b/Challenge/sorisori01/forEachReduce/README.md deleted file mode 100644 index 8f369ed9..00000000 --- a/Challenge/sorisori01/forEachReduce/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# forEachReduce - -## 설명 - -forEach 메소드를 사용해서 배열의 총 합을 출력하는 코드를 작성하세요 - -## Expected Output - -170 diff --git a/Challenge/sorisori01/forEachReduce/solve.js b/Challenge/sorisori01/forEachReduce/solve.js deleted file mode 100644 index 5b383a39..00000000 --- a/Challenge/sorisori01/forEachReduce/solve.js +++ /dev/null @@ -1,16 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes -let sum = 0; - -inputArray.forEach(e => { sum += e}) -console.log(sum); - -const result = inputArray.reduce((a,b) => { - console.log("a: ",a) - console.log("b: ",b) - console.log("a+b : ",a+b); - return a+b; - -}); -console.log("reduce : ",result); \ No newline at end of file diff --git a/Challenge/sorisori01/mapAddPercent/README.md b/Challenge/sorisori01/mapAddPercent/README.md deleted file mode 100644 index 4156a2f9..00000000 --- a/Challenge/sorisori01/mapAddPercent/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -map 메소드를 사용해 배열 각각 숫자 뒤에 %를 붙인 문자열을 만드세요 - -## Expected Output - -['100%', '10%', '20%', '40%'] diff --git a/Challenge/sorisori01/mapAddPercent/solve.js b/Challenge/sorisori01/mapAddPercent/solve.js deleted file mode 100644 index 4a5deb2c..00000000 --- a/Challenge/sorisori01/mapAddPercent/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes - -const result = inputArray.map(v => v+'%') -console.log(result); \ No newline at end of file diff --git a/Challenge/sorisori01/mapAppendOrder/README.md b/Challenge/sorisori01/mapAppendOrder/README.md deleted file mode 100644 index fccb0d1a..00000000 --- a/Challenge/sorisori01/mapAppendOrder/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# 문제제목 - -## 설명 - -배열의 값을 name 프로퍼티에 넣고 몇번째 원소인지를 order에 넣은 객체의 배열을 출력하세요 - -## Expected Output - -[ - { name: '홍길동', order: 1 }, - { name: '둘리', order: 2 }, - { name: '루피', order: 3 } -] diff --git a/Challenge/sorisori01/mapAppendOrder/solve.js b/Challenge/sorisori01/mapAppendOrder/solve.js deleted file mode 100644 index e3860b83..00000000 --- a/Challenge/sorisori01/mapAppendOrder/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -const inputArray = ['홍길동', '둘리', '루피']; - -// write your codes -let result = []; -let i; -inputArray.map((i,e) => { - result[e] = {'name':i,'order':e} -}); -console.log(result); diff --git a/Challenge/sorisori01/sortByPrice/README.md b/Challenge/sorisori01/sortByPrice/README.md deleted file mode 100644 index b1ccf70e..00000000 --- a/Challenge/sorisori01/sortByPrice/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 - -## Expected Output - -[ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 } -] diff --git a/Challenge/sorisori01/sortByPrice/solve.js b/Challenge/sorisori01/sortByPrice/solve.js deleted file mode 100644 index 6c6c523c..00000000 --- a/Challenge/sorisori01/sortByPrice/solve.js +++ /dev/null @@ -1,31 +0,0 @@ -const inputArray = [ - { - name: '사과', - price: 1000, - }, - { - name: '수박', - price: 5000, - }, - { - name: '당근', - price: 2000, - }, - { - name: '참외', - price: 10000, - } -]; - -// write your codes - -const result = inputArray.sort( function(a,b){ - // 오름차순 - // return a.price < b.price ? -1 : a.price > b.price ? 1 : 0; - return a["price"] - b["price"]; - - // 내림차순 - //return b["price"] - a["price"] -}) -console.log(result); - diff --git a/Challenge/speeduijin/everyArray/README.md b/Challenge/speeduijin/everyArray/README.md deleted file mode 100644 index c351076a..00000000 --- a/Challenge/speeduijin/everyArray/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -every를 이용해서 모든 원소가 짝수인지 아닌지를 판별하세요 - -## Expected Output - -true diff --git a/Challenge/speeduijin/everyArray/solve.js b/Challenge/speeduijin/everyArray/solve.js deleted file mode 100644 index dc13d52f..00000000 --- a/Challenge/speeduijin/everyArray/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -function solution(inputArray) { - const answer = inputArray.every((inputArray) => inputArray % 2 === 0); - return answer; -} - -exports.solution = solution; diff --git a/Challenge/speeduijin/everyArray/solve.test.js b/Challenge/speeduijin/everyArray/solve.test.js deleted file mode 100644 index 7dac26a4..00000000 --- a/Challenge/speeduijin/everyArray/solve.test.js +++ /dev/null @@ -1,21 +0,0 @@ -const { solution } = require("./solve"); - -const test1 = { - input: [2, 4, 6, 8, 10], - answer: true, -}; - -const test2 = { - input: [2, 3, 6, 8, 10], - answer: false, -}; - -describe("everyArray", () => { - test("모두 짝수면 true여야 한다.", () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - - test("홀수가 있으면 false여야 한다.", () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); -}); diff --git a/Challenge/speeduijin/expDivOdd/README.md b/Challenge/speeduijin/expDivOdd/README.md deleted file mode 100644 index c07ab10b..00000000 --- a/Challenge/speeduijin/expDivOdd/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -제곱한 후 3으로 나눈 나머지가 홀수인 것 을 뽑은 배열의 총 합을 구하세요. diff --git a/Challenge/speeduijin/expDivOdd/solve.js b/Challenge/speeduijin/expDivOdd/solve.js deleted file mode 100644 index 454c2167..00000000 --- a/Challenge/speeduijin/expDivOdd/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -function solution(inputArray) { - const result = inputArray - .map((el) => el * el) - .filter((el) => el % 3 === 1) - .reduce((acc, cur) => acc + cur, 0); - return result; -} - -exports.solution = solution; diff --git a/Challenge/speeduijin/expDivOdd/solve.test.js b/Challenge/speeduijin/expDivOdd/solve.test.js deleted file mode 100644 index ca37fcc3..00000000 --- a/Challenge/speeduijin/expDivOdd/solve.test.js +++ /dev/null @@ -1,21 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 7, 3, 4, 6], - answer: 66, -}; - -const test2 = { - input: [2, 3, 6, 8, 10], - answer: 168, -}; - -describe('everyArray', () => { - test('1, 7, 3, 4, 6', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - - test('2, 3, 6, 8, 10', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); -}); diff --git a/Challenge/speeduijin/figureSkating/README.md b/Challenge/speeduijin/figureSkating/README.md deleted file mode 100644 index 54b85fbd..00000000 --- a/Challenge/speeduijin/figureSkating/README.md +++ /dev/null @@ -1,35 +0,0 @@ -## 설명 - -점수를 계산해서 점수가 높은 순으로 name과 score를 가진 객체의 배열을 출력하세요. -단 실격자는 출력하지 않습니다. - -### 피겨 점수 기준 - -피겨 점수는 ‘기술점수(TES)+예술점수(PCS)-감점’으로 구성된다. - -기술점수(TES·Total Element Score)는 기본점수에 수행점수(GOE·Grade Of Execution)를 합산해 도출한다. - -심판은 선수들이 점프와 스핀의 기술을 제대로 수행하는지 살핀다. 점프에선 회전수를 제대로 지켰는지, 에지를 제대로 사용했는지에 따라 ‘롱 에지’(잘못된 에지 사용)나 ‘다운그레이드’(난이도 하락), ‘어텐션’(주의) 등의 판정을 내린다. 스핀과 스텝시퀀스에 붙는 레벨(1~4)도 이들이 결정한다. - -9명의 심판은 선수들이 미리 제출한 연기 구성표를 기준으로 과제별 기본점수에서 가·감점을 한다. 이른바 ‘GOE’라 불리는 수행점수다. - -쇼트프로그램은 점프 3개, 스핀 3개, 스텝 1개의 수행과제가 반드시 포함돼야 한다. - -예술점수(PCS·Total Program Component Score)는 프로그램의 완성도에 영향을 미치는 스케이팅 기술·동작의 연결·연기·안무·곡 해석 등 5가지를 평가한다. - -마지막으로 감점이 반영된다. 감점 항목이 발생할 때마다 1점씩 감점된다. - -원문보기: -http://news.khan.co.kr/kh_news/khan_art_view.html?art_id=201402172146545#csidx6329aebb6a02152bca884614a7f0544 - -### 판정 기준 - -- 점수가 가장 높은 사람이 1등이다. -- 점수는 기술점수(TES) + 예술점수(PCS) - 감점 으로 구성된다. -- 기술점수(TES)는 기본점수 \* 수행점수(GOE)를 합산해 도출한다. -- 필수 수행과제를 수행하지 못했을 시 실격이다. - -### 필수 수행과제 - -- 쇼트프로그램은 점프 3개, 스핀 3개, 스텝 1개의 수행과제가 반드시 포함돼야 한다. -- 점프와 스핀을 4번 이상 수행했을 시 가장 잘한 3개를 기준으로 한다. diff --git a/Challenge/speeduijin/figureSkating/solve.js b/Challenge/speeduijin/figureSkating/solve.js deleted file mode 100644 index dc9069a8..00000000 --- a/Challenge/speeduijin/figureSkating/solve.js +++ /dev/null @@ -1,48 +0,0 @@ -// 기본 점수 -const baseScore = { - jump: 10, - spin: 20, - step: 15, -}; - -const baseAssignment = { - jump: 3, - spin: 3, - step: 1, -}; - -// write your codes - -function solution(inputArray) { - const isNotDisqualification = (el) => { - if (el.goe.jump.length < baseAssignment.jump) return false; - if (el.goe.spin.length < baseAssignment.spin) return false; - if (el.goe.step.length < baseAssignment.step) return false; - return true; - }; - - const carculateScoreWithName = (el) => { - const tes = Object.entries(el.goe).reduce((acc, goeItem) => { - return ( - acc + - goeItem[1] - .sort((a, b) => b - a) - .slice(0, 3) - .reduce((goeAcc, score) => { - return goeAcc + baseScore[goeItem[0]] * score; - }, 0) - ); - }, 0); - return { name: el.name, score: tes + el.pcs - el.penalty }; - }; - - const compareByScore = (a, b) => b.score - a.core; - - const result = inputArray - .filter(isNotDisqualification) - .map(carculateScoreWithName) - .sort(compareByScore); - return result; -} - -exports.solution = solution; diff --git a/Challenge/speeduijin/figureSkating/solve.test.js b/Challenge/speeduijin/figureSkating/solve.test.js deleted file mode 100644 index 7bceadf1..00000000 --- a/Challenge/speeduijin/figureSkating/solve.test.js +++ /dev/null @@ -1,46 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '김연아', - goe: { - jump: [10, 9, 10], - spin: [10, 10, 10], - step: [9], - }, - pcs: 30, - penalty: 0, - }, - { - name: '피겨의 신', - goe: { - jump: [10000, 10000], - spin: [10000, 10000, 10000], - step: [10000], - }, - pcs: 100000, - penalty: 0, - }, - { - name: '아사다 마오', - goe: { - jump: [9, 6, 8, 9], - spin: [9, 9, 9], - step: [8], - }, - pcs: 29, - penalty: 10, - }, - ], - answer: [ - { name: '김연아', score: 1055 }, - { name: '아사다 마오', score: 939 }, - ], -}; - -describe('everyArray', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/speeduijin/filterAge/README.md b/Challenge/speeduijin/filterAge/README.md deleted file mode 100644 index 873a15c1..00000000 --- a/Challenge/speeduijin/filterAge/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소의 age가 30이상 50미만인 사람만 있는 객체의 배열을 만드세요 diff --git a/Challenge/speeduijin/filterAge/solve.js b/Challenge/speeduijin/filterAge/solve.js deleted file mode 100644 index e3b4f910..00000000 --- a/Challenge/speeduijin/filterAge/solve.js +++ /dev/null @@ -1,7 +0,0 @@ -// write your codes -function solution(inputArray) { - const result = inputArray.filter(({ age }) => age >= 30 && age < 50); - return result; -} - -exports.solution = solution; diff --git a/Challenge/speeduijin/filterAge/solve.test.js b/Challenge/speeduijin/filterAge/solve.test.js deleted file mode 100644 index b9081601..00000000 --- a/Challenge/speeduijin/filterAge/solve.test.js +++ /dev/null @@ -1,32 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '영미', - age: 25, - }, - { - name: '일미', - age: 35, - }, - { - name: '이미', - age: 45, - }, - { - name: '삼미', - age: 55, - }, - ], - answer: [ - { name: '일미', age: 35 }, - { name: '이미', age: 45 }, - ], -}; - -describe('filterAge', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/speeduijin/filterIntersection/README.md b/Challenge/speeduijin/filterIntersection/README.md deleted file mode 100644 index d7c9ad39..00000000 --- a/Challenge/speeduijin/filterIntersection/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# 문제제목 - -## 설명 - -두 배열의 교집합을 출력하세요! diff --git a/Challenge/speeduijin/filterIntersection/solve.js b/Challenge/speeduijin/filterIntersection/solve.js deleted file mode 100644 index bc4b6641..00000000 --- a/Challenge/speeduijin/filterIntersection/solve.js +++ /dev/null @@ -1,5 +0,0 @@ -function solution(inputArray1, inputArray2) { - return inputArray1.filter((el) => inputArray2.includes(el)); -} - -exports.solution = solution; diff --git a/Challenge/speeduijin/filterIntersection/solve.test.js b/Challenge/speeduijin/filterIntersection/solve.test.js deleted file mode 100644 index 576cbc86..00000000 --- a/Challenge/speeduijin/filterIntersection/solve.test.js +++ /dev/null @@ -1,15 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: { - A: [1, 2, 3, 4, 5], - B: [3, 4, 5, 6, 7], - }, - answer: [3, 4, 5], -}; - -describe('filterIntersection', () => { - test('test1', () => { - expect(solution(test1.input.A, test1.input.B)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/speeduijin/filterOdd/README.md b/Challenge/speeduijin/filterOdd/README.md deleted file mode 100644 index cf9eda79..00000000 --- a/Challenge/speeduijin/filterOdd/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -홀수만 뽑아 배열로 만드세요 diff --git a/Challenge/speeduijin/filterOdd/solve.js b/Challenge/speeduijin/filterOdd/solve.js deleted file mode 100644 index 0773b8db..00000000 --- a/Challenge/speeduijin/filterOdd/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.filter((el) => el % 2 === 1); -} - -exports.solution = solution; diff --git a/Challenge/speeduijin/filterOdd/solve.test.js b/Challenge/speeduijin/filterOdd/solve.test.js deleted file mode 100644 index 8cfd7f5a..00000000 --- a/Challenge/speeduijin/filterOdd/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [4, 2, 5, 1, 3], - answer: [5, 1, 3], -}; - -const test2 = { - input: [4, 2, 6, 8, 50, 16], - answer: [], -}; - -const test3 = { - input: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], - answer: [1, 3, 5, 7, 9, 11], -}; - -describe('filterOdd', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/speeduijin/findWord/README.md b/Challenge/speeduijin/findWord/README.md deleted file mode 100644 index 8ef123f4..00000000 --- a/Challenge/speeduijin/findWord/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -용가리라는 단어가 있으면 true 없으면 false를 출력 - -## Expected Output - -true diff --git a/Challenge/speeduijin/findWord/solve.js b/Challenge/speeduijin/findWord/solve.js deleted file mode 100644 index 8fb05a4a..00000000 --- a/Challenge/speeduijin/findWord/solve.js +++ /dev/null @@ -1,10 +0,0 @@ -// write your codes -function solution(inputArray) { - let answer; - if (inputArray.find((el) => el === "용가리")) { - answer = true; - } else answer = false; - return answer; -} - -exports.solution = solution; diff --git a/Challenge/speeduijin/findWord/solve.test.js b/Challenge/speeduijin/findWord/solve.test.js deleted file mode 100644 index 804114f6..00000000 --- a/Challenge/speeduijin/findWord/solve.test.js +++ /dev/null @@ -1,26 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: ['잠', '자', '고', '싶', '다', '용가리'], - answer: true, -}; -const test2 = { - input: ['맛있는', '용가리치킨'], - answer: false, -}; -const test3 = { - input: ['고질라', '용가리 ', '울트라맨'], - answer: false, -}; - -describe('findWord', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); \ No newline at end of file diff --git a/Challenge/speeduijin/forEachFilter/README.md b/Challenge/speeduijin/forEachFilter/README.md deleted file mode 100644 index 6dcbc7c2..00000000 --- a/Challenge/speeduijin/forEachFilter/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소중 40 이상인 수만 뽑아 배열을 만드세요. diff --git a/Challenge/speeduijin/forEachFilter/solve.js b/Challenge/speeduijin/forEachFilter/solve.js deleted file mode 100644 index 026605a5..00000000 --- a/Challenge/speeduijin/forEachFilter/solve.js +++ /dev/null @@ -1,12 +0,0 @@ -// write your codes -function solution(inputArray) { - const result = []; - inputArray.forEach((el) => { - if (el >= 40) { - result.push(el); - } - }); - return result; -} - -exports.solution = solution; diff --git a/Challenge/speeduijin/forEachFilter/solve.test.js b/Challenge/speeduijin/forEachFilter/solve.test.js deleted file mode 100644 index 3d73b25c..00000000 --- a/Challenge/speeduijin/forEachFilter/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: [100, 40], -}; - -describe('forEachFilter', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/speeduijin/forEachFilterIsNaN/README.md b/Challenge/speeduijin/forEachFilterIsNaN/README.md deleted file mode 100644 index 570c030e..00000000 --- a/Challenge/speeduijin/forEachFilterIsNaN/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소중 숫자인 원소만 뽑아 배열을 만드세요. diff --git a/Challenge/speeduijin/forEachFilterIsNaN/solve.js b/Challenge/speeduijin/forEachFilterIsNaN/solve.js deleted file mode 100644 index bfdf1d97..00000000 --- a/Challenge/speeduijin/forEachFilterIsNaN/solve.js +++ /dev/null @@ -1,12 +0,0 @@ -// write your codes -function solution(inputArray) { - let answer = []; - inputArray.forEach((el) => { - if (isNaN(el) === false && String(el) !== el) { - answer.push(el); - } - }); - return answer; -} - -exports.solution = solution; diff --git a/Challenge/speeduijin/forEachFilterIsNaN/solve.test.js b/Challenge/speeduijin/forEachFilterIsNaN/solve.test.js deleted file mode 100644 index d6e118bb..00000000 --- a/Challenge/speeduijin/forEachFilterIsNaN/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 40, '라매', '개발자', 51.5, 'a', 88], - answer: [1, 40, 51.5, 88], -}; - -const test2 = { - input: [1, 2, 3, '4', 5, '6'], - answer: [1, 2, 3, 5], -}; - -const test3 = { - input: [-3, -2, -1, 0, 1, 2, 3], - answer: [-3, -2, -1, 0, 1, 2, 3], -}; - -describe('forEachFilterIsNaN', () => { - test('test1: 숫자,문자 판별', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2: 문자로된 숫자 판별', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3: 음수 양수 포함', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); \ No newline at end of file diff --git a/Challenge/speeduijin/forEachMap/README.md b/Challenge/speeduijin/forEachMap/README.md deleted file mode 100644 index 1e8e03c8..00000000 --- a/Challenge/speeduijin/forEachMap/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -forEach 메소드를 사용해서 배열의 각 원소 끝에 '%'를 붙인 문자열 배열을 출력하세요 diff --git a/Challenge/speeduijin/forEachMap/solve.js b/Challenge/speeduijin/forEachMap/solve.js deleted file mode 100644 index f4aed293..00000000 --- a/Challenge/speeduijin/forEachMap/solve.js +++ /dev/null @@ -1,12 +0,0 @@ -// write your codes -// function solution(inputArray) { -// return inputArray.map((el) => `${el}%`); -// } - -function solution(inputArray) { - const result = []; - inputArray.forEach((el) => result.push(`${el}%`)); - return result; -} - -exports.solution = solution; diff --git a/Challenge/speeduijin/forEachMap/solve.test.js b/Challenge/speeduijin/forEachMap/solve.test.js deleted file mode 100644 index de4868c6..00000000 --- a/Challenge/speeduijin/forEachMap/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: ['100%', '10%', '20%', '40%'], -}; - -describe('forEachMap', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/speeduijin/forEachReduce/README.md b/Challenge/speeduijin/forEachReduce/README.md deleted file mode 100644 index a984df2d..00000000 --- a/Challenge/speeduijin/forEachReduce/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -forEach 메소드를 사용해서 배열의 총 합을 출력하는 코드를 작성하세요 diff --git a/Challenge/speeduijin/forEachReduce/solve.js b/Challenge/speeduijin/forEachReduce/solve.js deleted file mode 100644 index 0a1ec798..00000000 --- a/Challenge/speeduijin/forEachReduce/solve.js +++ /dev/null @@ -1,10 +0,0 @@ -// write your codes -function solution(inputArray) { - let sum = 0; - inputArray.forEach((el) => { - sum += el; - }); - return sum; -} - -exports.solution = solution; diff --git a/Challenge/speeduijin/forEachReduce/solve.test.js b/Challenge/speeduijin/forEachReduce/solve.test.js deleted file mode 100644 index 397e4b50..00000000 --- a/Challenge/speeduijin/forEachReduce/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: 170, -}; - -const test2 = { - input: [120, -20, -30, 0, 15], - answer: 85, -}; - -const test3 = { - input: [-10, -20, -30], - answer: -60, -}; - -describe('forEachReduce', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2: 음수가 포함된 계산', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3: 음수만 존재하는 계산', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/speeduijin/mapAddPercent/README.md b/Challenge/speeduijin/mapAddPercent/README.md deleted file mode 100644 index 75e73042..00000000 --- a/Challenge/speeduijin/mapAddPercent/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -map 메소드를 사용해 배열 각각 숫자 뒤에 %를 붙인 문자열을 만드세요 diff --git a/Challenge/speeduijin/mapAddPercent/solve.js b/Challenge/speeduijin/mapAddPercent/solve.js deleted file mode 100644 index 4d9e309a..00000000 --- a/Challenge/speeduijin/mapAddPercent/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.map((el) => `${el}%`); -} - -exports.solution = solution; diff --git a/Challenge/speeduijin/mapAddPercent/solve.test.js b/Challenge/speeduijin/mapAddPercent/solve.test.js deleted file mode 100644 index dac1b3cc..00000000 --- a/Challenge/speeduijin/mapAddPercent/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: ['100%', '10%', '20%', '40%'], -}; - -describe('mapAddPercent', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/speeduijin/mapAppendOrder/README.md b/Challenge/speeduijin/mapAppendOrder/README.md deleted file mode 100644 index 1435623a..00000000 --- a/Challenge/speeduijin/mapAppendOrder/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열의 값을 name 프로퍼티에 넣고 몇번째 원소인지를 order에 넣은 객체의 배열을 출력하세요 diff --git a/Challenge/speeduijin/mapAppendOrder/solve.js b/Challenge/speeduijin/mapAppendOrder/solve.js deleted file mode 100644 index 0b1c105f..00000000 --- a/Challenge/speeduijin/mapAppendOrder/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -// write your codes -function solution(inputArray) { - const answer = []; - inputArray.map((el, idx) => answer.push({ name: el, order: idx + 1 })); - return answer; -} - -exports.solution = solution; diff --git a/Challenge/speeduijin/mapAppendOrder/solve.test.js b/Challenge/speeduijin/mapAppendOrder/solve.test.js deleted file mode 100644 index e08db10c..00000000 --- a/Challenge/speeduijin/mapAppendOrder/solve.test.js +++ /dev/null @@ -1,16 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: ['홍길동', '둘리', '루피'], - answer: [ - { name: '홍길동', order: 1 }, - { name: '둘리', order: 2 }, - { name: '루피', order: 3 }, - ], -}; - -describe('mapAppendOrder', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/speeduijin/recommendAd/README.md b/Challenge/speeduijin/recommendAd/README.md deleted file mode 100644 index 132e8800..00000000 --- a/Challenge/speeduijin/recommendAd/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# 문제제목 - -사용자가 안 본 광고는? - -## 설명 - -유튜브는 사용자가 프리미엄 회원이 아닌 경우 영상 시작이나 중간에 광고가 나오도록 설정되어 있습니다. - -[2020년 유튜브 인기 광고](https://www.thinkwithgoogle.com/intl/ko-kr/marketing-strategies/video/%EB%8C%80%ED%95%9C%EB%AF%BC%EA%B5%AD-youtube-%EC%9D%B8%EA%B8%B0-%EA%B4%91%EA%B3%A0%EC%98%81%EC%83%81-2020%EB%85%84-%EC%97%B0%EB%A7%90%EA%B2%B0%EC%82%B0/)는 총 열 편으로, 사용자의 일주일간 광고 시청 이력을 통해 해당 사용자가 일주일 동안 안 본 광고를 그 다음주에 노출함으로써 광고들이 사용자에게 골고루 노출되길 원합니다. - -유저가 매일 유튜브에 접속하여 하루 한 편 이상의 광고를 보았다고 가정할 때, 이 유저가 안 본 광고는 무엇인지 출력해주세요. - -## Expected Output - -[ '동원F&B' ] diff --git a/Challenge/speeduijin/recommendAd/solve.js b/Challenge/speeduijin/recommendAd/solve.js deleted file mode 100644 index 926ffc3a..00000000 --- a/Challenge/speeduijin/recommendAd/solve.js +++ /dev/null @@ -1,18 +0,0 @@ -const userHistory = [ - { date: "2020-11-03", watched: ["KT", "BBQ"] }, - { date: "2020-11-04", watched: ["정관장", "KT", "딱좋은데이"] }, - { date: "2020-11-05", watched: ["그랑사가", "농심"] }, - { date: "2020-11-06", watched: ["BBQ"] }, - { date: "2020-11-07", watched: ["쌍용자동차", "BBQ", "KT"] }, - { date: "2020-11-08", watched: ["켈로그코리아", "빙그레"] }, - { date: "2020-11-09", watched: ["KT", "그랑사가", "빙그레"] }, -]; - -// write your codes -function solution(inputArray) { - let watchList = []; - userHistory.forEach((el) => (watchList = watchList.concat(el.watched))); - return inputArray.filter((el) => !watchList.includes(el)); -} - -exports.solution = solution; diff --git a/Challenge/speeduijin/recommendAd/solve.test.js b/Challenge/speeduijin/recommendAd/solve.test.js deleted file mode 100644 index 8a0f6464..00000000 --- a/Challenge/speeduijin/recommendAd/solve.test.js +++ /dev/null @@ -1,23 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - '동원F&B', - '정관장', - 'KT', - 'BBQ', - '그랑사가', - '농심', - '딱좋은데이', - '빙그레', - '쌍용자동차', - '켈로그코리아', - ], - answer: ['동원F&B'], -}; - -describe('recommendAd', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/speeduijin/reduceMaxValueNIndex/README.md b/Challenge/speeduijin/reduceMaxValueNIndex/README.md deleted file mode 100644 index 965bdec6..00000000 --- a/Challenge/speeduijin/reduceMaxValueNIndex/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -reduce 메소드를 사용해 최댓값의 값을 maxValue에, 해당 값의 index를 idx에 넣은 객체를 출력하세요 diff --git a/Challenge/speeduijin/reduceMaxValueNIndex/solve.js b/Challenge/speeduijin/reduceMaxValueNIndex/solve.js deleted file mode 100644 index 658e2847..00000000 --- a/Challenge/speeduijin/reduceMaxValueNIndex/solve.js +++ /dev/null @@ -1,21 +0,0 @@ -// write your codes -function solution(inputArray) { - // const max = inputArray.reduce((max, cur) => Math.max(max, cur), -Infinity); - // const index = inputArray.indexOf(max); - // return { maxValue: max, idx: index }; - const answer = inputArray.reduce( - (acc, cur, index) => { - if (acc.maxValue < cur) { - return { - maxValue: cur, - idx: index, - }; - } - return acc; - }, - { maxValue: -Infinity, idx: -1 } - ); - return answer; -} - -exports.solution = solution; diff --git a/Challenge/speeduijin/reduceMaxValueNIndex/solve.test.js b/Challenge/speeduijin/reduceMaxValueNIndex/solve.test.js deleted file mode 100644 index 0daef5b8..00000000 --- a/Challenge/speeduijin/reduceMaxValueNIndex/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [3, 29, 38, 12, 57, 74, 40, 85, 61], - answer: { maxValue: 85, idx: 7 }, -}; - -const test2 = { - input: [-24, -2, -13, -49, -999999, -17], - answer: { maxValue: -2, idx: 1 }, -}; -//최댓값이 중복일 때에는 먼저 나온 최댓값의 인덱스를 유지하도록 설정하였습니다. -const test3 = { - input: [2, -20, 21, -874, 99, -16, -29, 99], - answer: { maxValue: 99, idx: 4 }, -}; - -describe('reduceMaxValueNIndex', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2 : 음수 테스트', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3 : 중복된 최대값 테스트', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/speeduijin/reduceNameNickname/README.md b/Challenge/speeduijin/reduceNameNickname/README.md deleted file mode 100644 index b6920e05..00000000 --- a/Challenge/speeduijin/reduceNameNickname/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -입력받은 객채배열의 nickname을 key, name을 value로 하는 객체를 출력하세요 diff --git a/Challenge/speeduijin/reduceNameNickname/solve.js b/Challenge/speeduijin/reduceNameNickname/solve.js deleted file mode 100644 index f381e8ec..00000000 --- a/Challenge/speeduijin/reduceNameNickname/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -// write your codes -function solution(inputArray) { - const result = inputArray.reduce((acc, cur) => { - return { ...acc, [cur.nickname]: cur.name }; - }, {}); - return result; -} - -exports.solution = solution; diff --git a/Challenge/speeduijin/reduceNameNickname/solve.test.js b/Challenge/speeduijin/reduceNameNickname/solve.test.js deleted file mode 100644 index 2d19e31d..00000000 --- a/Challenge/speeduijin/reduceNameNickname/solve.test.js +++ /dev/null @@ -1,25 +0,0 @@ -const { solution } = require("./solve"); - -const test1 = { - input: [ - { - name: "홍길동", - nickname: "hong", - }, - { - name: "둘리", - nickname: "2li", - }, - { - name: "오스트랄로피테쿠스", - nickname: "1Cin", - }, - ], - answer: { hong: "홍길동", "2li": "둘리", "1Cin": "오스트랄로피테쿠스" }, -}; - -describe("reduceNameNickname", () => { - test("test1", () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/speeduijin/reduceSum/README.md b/Challenge/speeduijin/reduceSum/README.md deleted file mode 100644 index 8c607eb2..00000000 --- a/Challenge/speeduijin/reduceSum/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -reduce 메소드를 사용해서 배열의 모든 수의 합을 구하세요. - -## Expected Output - -106 diff --git a/Challenge/speeduijin/reduceSum/solve.js b/Challenge/speeduijin/reduceSum/solve.js deleted file mode 100644 index 9ce2dbb2..00000000 --- a/Challenge/speeduijin/reduceSum/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.reduce((acc, cur) => (acc += cur)); -} - -exports.solution = solution; diff --git a/Challenge/speeduijin/reduceSum/solve.test.js b/Challenge/speeduijin/reduceSum/solve.test.js deleted file mode 100644 index 046c40cb..00000000 --- a/Challenge/speeduijin/reduceSum/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [10, 3, 20, 5, 8, 60], - answer: 106, -}; - -describe('reduceSum', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/speeduijin/sortByPrice/README.md b/Challenge/speeduijin/sortByPrice/README.md deleted file mode 100644 index b1ccf70e..00000000 --- a/Challenge/speeduijin/sortByPrice/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 - -## Expected Output - -[ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 } -] diff --git a/Challenge/speeduijin/sortByPrice/solve.js b/Challenge/speeduijin/sortByPrice/solve.js deleted file mode 100644 index cb4fa4c3..00000000 --- a/Challenge/speeduijin/sortByPrice/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.sort((a, b) => a.price - b.price); -} - -exports.solution = solution; diff --git a/Challenge/speeduijin/sortByPrice/solve.test.js b/Challenge/speeduijin/sortByPrice/solve.test.js deleted file mode 100644 index 3d6a3431..00000000 --- a/Challenge/speeduijin/sortByPrice/solve.test.js +++ /dev/null @@ -1,34 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '사과', - price: 1000, - }, - { - name: '수박', - price: 5000, - }, - { - name: '당근', - price: 2000, - }, - { - name: '참외', - price: 10000, - }, - ], - answer: [ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 }, - ], -}; - -describe('sortByPrice', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/speeduijin/sortByPriceAndQuantity/README.md b/Challenge/speeduijin/sortByPriceAndQuantity/README.md deleted file mode 100644 index 41cd5c95..00000000 --- a/Challenge/speeduijin/sortByPriceAndQuantity/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 -만약 price가 같다면 quantity기준으로 오름차순 정렬하세요 - -## Expected Output - -[ - { name: '사과', price: 1000, quantity: 2 }, - { name: '오이', price: 2000, quantity: 49 }, - { name: '당근', price: 2000, quantity: 50 }, - { name: '참외', price: 5000, quantity: 10 }, - { name: '수박', price: 5000, quantity: 20 } -] diff --git a/Challenge/speeduijin/sortByPriceAndQuantity/solve.js b/Challenge/speeduijin/sortByPriceAndQuantity/solve.js deleted file mode 100644 index ef3cafa4..00000000 --- a/Challenge/speeduijin/sortByPriceAndQuantity/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -// write your codes -function solution(inputArray) { - const result = inputArray.sort( - (a, b) => a.price - b.price || a.quantity - b.quantity - ); - return result; -} - -exports.solution = solution; diff --git a/Challenge/speeduijin/sortByPriceAndQuantity/solve.test.js b/Challenge/speeduijin/sortByPriceAndQuantity/solve.test.js deleted file mode 100644 index 424f42b7..00000000 --- a/Challenge/speeduijin/sortByPriceAndQuantity/solve.test.js +++ /dev/null @@ -1,44 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '사과', - price: 1000, - quantity: 2, - }, - { - name: '수박', - price: 5000, - quantity: 20, - }, - { - name: '당근', - price: 2000, - quantity: 50, - }, - { - name: '참외', - price: 5000, - quantity: 10, - }, - { - name: '오이', - price: 2000, - quantity: 49, - }, - ], - answer: [ - { name: '사과', price: 1000, quantity: 2 }, - { name: '오이', price: 2000, quantity: 49 }, - { name: '당근', price: 2000, quantity: 50 }, - { name: '참외', price: 5000, quantity: 10 }, - { name: '수박', price: 5000, quantity: 20 }, - ], -}; - -describe('sortByPriceAndQuantity', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/speeduijin/spreadOperatorMaxValue/README.md b/Challenge/speeduijin/spreadOperatorMaxValue/README.md deleted file mode 100644 index 164b68a1..00000000 --- a/Challenge/speeduijin/spreadOperatorMaxValue/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -Spread Operator를 이용해서 값의 최대, 최소값을 구하세요 diff --git a/Challenge/speeduijin/spreadOperatorMaxValue/solve.js b/Challenge/speeduijin/spreadOperatorMaxValue/solve.js deleted file mode 100644 index 6ff97e38..00000000 --- a/Challenge/speeduijin/spreadOperatorMaxValue/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -// write your codes -function solution(inputArray) { - const maxValue = Math.max(...inputArray); - const minValue = Math.min(...inputArray); - return `max : ${maxValue}, min : ${minValue}`; -} - -exports.solution = solution; diff --git a/Challenge/speeduijin/spreadOperatorMaxValue/solve.test.js b/Challenge/speeduijin/spreadOperatorMaxValue/solve.test.js deleted file mode 100644 index 26f2abf9..00000000 --- a/Challenge/speeduijin/spreadOperatorMaxValue/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], - answer: 'max : 10, min : 1', -}; - -describe('spreadOperatorMaxValue', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/star6973/everyArray/README.md b/Challenge/star6973/everyArray/README.md deleted file mode 100644 index 442558f6..00000000 --- a/Challenge/star6973/everyArray/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -every를 이용해서 모든 원소가 짝수인지 아닌지를 판별하세요 - -## Expected Output - -true \ No newline at end of file diff --git a/Challenge/star6973/everyArray/solve.js b/Challenge/star6973/everyArray/solve.js deleted file mode 100644 index b11cf093..00000000 --- a/Challenge/star6973/everyArray/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -const isEven = item => item % 2 === 0; -function solution(inputArray) { - return inputArray.every(isEven); -} - -exports.solution = solution; \ No newline at end of file diff --git a/Challenge/star6973/everyArray/solve.test.js b/Challenge/star6973/everyArray/solve.test.js deleted file mode 100644 index b03e4791..00000000 --- a/Challenge/star6973/everyArray/solve.test.js +++ /dev/null @@ -1,21 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [2, 4, 6, 8, 10], - answer: true, -}; - -const test2 = { - input: [2, 3, 6, 8, 10], - answer: false, -}; - -describe('everyArray', () => { - test('모두 짝수면 true여야 한다.', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - - test('홀수가 있으면 false여야 한다.', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); -}); diff --git a/Challenge/star6973/expDivOdd/README.md b/Challenge/star6973/expDivOdd/README.md deleted file mode 100644 index c07ab10b..00000000 --- a/Challenge/star6973/expDivOdd/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -제곱한 후 3으로 나눈 나머지가 홀수인 것 을 뽑은 배열의 총 합을 구하세요. diff --git a/Challenge/star6973/expDivOdd/solve.js b/Challenge/star6973/expDivOdd/solve.js deleted file mode 100644 index 1ca77098..00000000 --- a/Challenge/star6973/expDivOdd/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -function solution(inputArray) { - const answer = inputArray.filter(item => (Math.pow(item, 2) % 3) % 2 !== 0).map(item => Math.pow(item, 2)); - return answer.reduce((acc, curr) => { return acc + curr }); -} - -exports.solution = solution; \ No newline at end of file diff --git a/Challenge/star6973/expDivOdd/solve.test.js b/Challenge/star6973/expDivOdd/solve.test.js deleted file mode 100644 index ca37fcc3..00000000 --- a/Challenge/star6973/expDivOdd/solve.test.js +++ /dev/null @@ -1,21 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 7, 3, 4, 6], - answer: 66, -}; - -const test2 = { - input: [2, 3, 6, 8, 10], - answer: 168, -}; - -describe('everyArray', () => { - test('1, 7, 3, 4, 6', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - - test('2, 3, 6, 8, 10', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); -}); diff --git a/Challenge/star6973/figureSkating/README.md b/Challenge/star6973/figureSkating/README.md deleted file mode 100644 index 54b85fbd..00000000 --- a/Challenge/star6973/figureSkating/README.md +++ /dev/null @@ -1,35 +0,0 @@ -## 설명 - -점수를 계산해서 점수가 높은 순으로 name과 score를 가진 객체의 배열을 출력하세요. -단 실격자는 출력하지 않습니다. - -### 피겨 점수 기준 - -피겨 점수는 ‘기술점수(TES)+예술점수(PCS)-감점’으로 구성된다. - -기술점수(TES·Total Element Score)는 기본점수에 수행점수(GOE·Grade Of Execution)를 합산해 도출한다. - -심판은 선수들이 점프와 스핀의 기술을 제대로 수행하는지 살핀다. 점프에선 회전수를 제대로 지켰는지, 에지를 제대로 사용했는지에 따라 ‘롱 에지’(잘못된 에지 사용)나 ‘다운그레이드’(난이도 하락), ‘어텐션’(주의) 등의 판정을 내린다. 스핀과 스텝시퀀스에 붙는 레벨(1~4)도 이들이 결정한다. - -9명의 심판은 선수들이 미리 제출한 연기 구성표를 기준으로 과제별 기본점수에서 가·감점을 한다. 이른바 ‘GOE’라 불리는 수행점수다. - -쇼트프로그램은 점프 3개, 스핀 3개, 스텝 1개의 수행과제가 반드시 포함돼야 한다. - -예술점수(PCS·Total Program Component Score)는 프로그램의 완성도에 영향을 미치는 스케이팅 기술·동작의 연결·연기·안무·곡 해석 등 5가지를 평가한다. - -마지막으로 감점이 반영된다. 감점 항목이 발생할 때마다 1점씩 감점된다. - -원문보기: -http://news.khan.co.kr/kh_news/khan_art_view.html?art_id=201402172146545#csidx6329aebb6a02152bca884614a7f0544 - -### 판정 기준 - -- 점수가 가장 높은 사람이 1등이다. -- 점수는 기술점수(TES) + 예술점수(PCS) - 감점 으로 구성된다. -- 기술점수(TES)는 기본점수 \* 수행점수(GOE)를 합산해 도출한다. -- 필수 수행과제를 수행하지 못했을 시 실격이다. - -### 필수 수행과제 - -- 쇼트프로그램은 점프 3개, 스핀 3개, 스텝 1개의 수행과제가 반드시 포함돼야 한다. -- 점프와 스핀을 4번 이상 수행했을 시 가장 잘한 3개를 기준으로 한다. diff --git a/Challenge/star6973/figureSkating/solve.js b/Challenge/star6973/figureSkating/solve.js deleted file mode 100644 index 7c4f6dfa..00000000 --- a/Challenge/star6973/figureSkating/solve.js +++ /dev/null @@ -1,55 +0,0 @@ -// 기본 점수 -const baseScore = { - jump: 10, - spin: 20, - step: 15, -}; - -const baseAssignment = { - jump: 3, - spin: 3, - step: 1, -}; - -// write your codes - -function solution(inputArray) { - // 필수 과제를 수행하지 못할 시 실격 - let figureScore = []; - inputArray.forEach(person => { - const { jump, spin, step } = person.goe; - if (jump.length >= 3 && spin.length >= 3 && step.length >= 1) { - figureScore.push(person); - } - }) - - let answer = []; - figureScore.forEach(person => { - const { jump, spin, step } = person.goe; - - // 점프와 스핀이 4번 이상 수행되면 가장 잘한 3개만 선택 - const sortJump = jump.sort((a, b) => b - a).slice(0, 3); - const sortSpin = spin.sort((a, b) => b - a).slice(0, 3); - - // 스텝이 2번 이상 수행되면 가장 잘한 1개만 선택 - const sortStep = step.sort((a, b) => b - a).slice(0, 1); - - const jumpScore = baseScore.jump * sortJump.reduce((acc, curr) => acc + curr); - const spinScore = baseScore.spin * sortSpin.reduce((acc, curr) => acc + curr); - const stepScore = baseScore.step * sortStep.reduce((acc, curr) => acc + curr); - - const result = (jumpScore + spinScore + stepScore) + person.pcs - person.penalty; - - answer.push({ - "name": person.name, - "score": result - }) - }) - - // 점수가 높은 순서 - answer.sort((a, b) => b.score - a.score); - - return answer; -} - -exports.solution = solution; diff --git a/Challenge/star6973/figureSkating/solve.test.js b/Challenge/star6973/figureSkating/solve.test.js deleted file mode 100644 index 7bceadf1..00000000 --- a/Challenge/star6973/figureSkating/solve.test.js +++ /dev/null @@ -1,46 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '김연아', - goe: { - jump: [10, 9, 10], - spin: [10, 10, 10], - step: [9], - }, - pcs: 30, - penalty: 0, - }, - { - name: '피겨의 신', - goe: { - jump: [10000, 10000], - spin: [10000, 10000, 10000], - step: [10000], - }, - pcs: 100000, - penalty: 0, - }, - { - name: '아사다 마오', - goe: { - jump: [9, 6, 8, 9], - spin: [9, 9, 9], - step: [8], - }, - pcs: 29, - penalty: 10, - }, - ], - answer: [ - { name: '김연아', score: 1055 }, - { name: '아사다 마오', score: 939 }, - ], -}; - -describe('everyArray', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/star6973/filterAge/README.md b/Challenge/star6973/filterAge/README.md deleted file mode 100644 index 873a15c1..00000000 --- a/Challenge/star6973/filterAge/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소의 age가 30이상 50미만인 사람만 있는 객체의 배열을 만드세요 diff --git a/Challenge/star6973/filterAge/solve.js b/Challenge/star6973/filterAge/solve.js deleted file mode 100644 index 8d693b25..00000000 --- a/Challenge/star6973/filterAge/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.filter(item => item.age >= 30 && item.age < 50); -} - -exports.solution = solution; \ No newline at end of file diff --git a/Challenge/star6973/filterAge/solve.test.js b/Challenge/star6973/filterAge/solve.test.js deleted file mode 100644 index b9081601..00000000 --- a/Challenge/star6973/filterAge/solve.test.js +++ /dev/null @@ -1,32 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '영미', - age: 25, - }, - { - name: '일미', - age: 35, - }, - { - name: '이미', - age: 45, - }, - { - name: '삼미', - age: 55, - }, - ], - answer: [ - { name: '일미', age: 35 }, - { name: '이미', age: 45 }, - ], -}; - -describe('filterAge', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/star6973/filterDifference/README.md b/Challenge/star6973/filterDifference/README.md deleted file mode 100644 index 6a641761..00000000 --- a/Challenge/star6973/filterDifference/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# 문제제목 - -## 설명 - -두 배열의 차집합을 출력하세요! 두 번째 배열의 차이도 포함하세요. \ No newline at end of file diff --git a/Challenge/star6973/filterDifference/solve.js b/Challenge/star6973/filterDifference/solve.js deleted file mode 100644 index fe27ed8f..00000000 --- a/Challenge/star6973/filterDifference/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -function solution(inputArray1, inputArray2) { - const difference = [ - ...inputArray1.filter(item => !inputArray2.includes(item)), - ...inputArray2.filter(item => !inputArray1.includes(item)) - ]; - return difference; -} - -exports.solution = solution; \ No newline at end of file diff --git a/Challenge/star6973/filterDifference/solve.test.js b/Challenge/star6973/filterDifference/solve.test.js deleted file mode 100644 index c3f87f79..00000000 --- a/Challenge/star6973/filterDifference/solve.test.js +++ /dev/null @@ -1,15 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: { - A: [1, 2, 3, 4, 5], - B: [3, 4, 5, 6, 7], - }, - answer: [1, 2, 6, 7], -}; - -describe('filterDifference', () => { - test('test1', () => { - expect(solution(test1.input.A, test1.input.B)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/star6973/filterIntersection/README.md b/Challenge/star6973/filterIntersection/README.md deleted file mode 100644 index d7c9ad39..00000000 --- a/Challenge/star6973/filterIntersection/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# 문제제목 - -## 설명 - -두 배열의 교집합을 출력하세요! diff --git a/Challenge/star6973/filterIntersection/solve.js b/Challenge/star6973/filterIntersection/solve.js deleted file mode 100644 index 10f21fc6..00000000 --- a/Challenge/star6973/filterIntersection/solve.js +++ /dev/null @@ -1,5 +0,0 @@ -function solution(inputArray1, inputArray2) { - return inputArray1.filter(item => inputArray2.includes(item)); -} - -exports.solution = solution; \ No newline at end of file diff --git a/Challenge/star6973/filterIntersection/solve.test.js b/Challenge/star6973/filterIntersection/solve.test.js deleted file mode 100644 index 576cbc86..00000000 --- a/Challenge/star6973/filterIntersection/solve.test.js +++ /dev/null @@ -1,15 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: { - A: [1, 2, 3, 4, 5], - B: [3, 4, 5, 6, 7], - }, - answer: [3, 4, 5], -}; - -describe('filterIntersection', () => { - test('test1', () => { - expect(solution(test1.input.A, test1.input.B)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/star6973/filterOdd/README.md b/Challenge/star6973/filterOdd/README.md deleted file mode 100644 index cf9eda79..00000000 --- a/Challenge/star6973/filterOdd/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -홀수만 뽑아 배열로 만드세요 diff --git a/Challenge/star6973/filterOdd/solve.js b/Challenge/star6973/filterOdd/solve.js deleted file mode 100644 index 85982591..00000000 --- a/Challenge/star6973/filterOdd/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.filter(item => item % 2 !== 0); -} - -exports.solution = solution; \ No newline at end of file diff --git a/Challenge/star6973/filterOdd/solve.test.js b/Challenge/star6973/filterOdd/solve.test.js deleted file mode 100644 index 8cfd7f5a..00000000 --- a/Challenge/star6973/filterOdd/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [4, 2, 5, 1, 3], - answer: [5, 1, 3], -}; - -const test2 = { - input: [4, 2, 6, 8, 50, 16], - answer: [], -}; - -const test3 = { - input: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], - answer: [1, 3, 5, 7, 9, 11], -}; - -describe('filterOdd', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/star6973/findWord/README.md b/Challenge/star6973/findWord/README.md deleted file mode 100644 index 8ef123f4..00000000 --- a/Challenge/star6973/findWord/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -용가리라는 단어가 있으면 true 없으면 false를 출력 - -## Expected Output - -true diff --git a/Challenge/star6973/findWord/solve.js b/Challenge/star6973/findWord/solve.js deleted file mode 100644 index 6368e6cd..00000000 --- a/Challenge/star6973/findWord/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.includes("용가리"); -} - -exports.solution = solution; \ No newline at end of file diff --git a/Challenge/star6973/findWord/solve.test.js b/Challenge/star6973/findWord/solve.test.js deleted file mode 100644 index 804114f6..00000000 --- a/Challenge/star6973/findWord/solve.test.js +++ /dev/null @@ -1,26 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: ['잠', '자', '고', '싶', '다', '용가리'], - answer: true, -}; -const test2 = { - input: ['맛있는', '용가리치킨'], - answer: false, -}; -const test3 = { - input: ['고질라', '용가리 ', '울트라맨'], - answer: false, -}; - -describe('findWord', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); \ No newline at end of file diff --git a/Challenge/star6973/forEachFilter/README.md b/Challenge/star6973/forEachFilter/README.md deleted file mode 100644 index 6dcbc7c2..00000000 --- a/Challenge/star6973/forEachFilter/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소중 40 이상인 수만 뽑아 배열을 만드세요. diff --git a/Challenge/star6973/forEachFilter/solve.js b/Challenge/star6973/forEachFilter/solve.js deleted file mode 100644 index 2c1de411..00000000 --- a/Challenge/star6973/forEachFilter/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.filter(item => item >= 40); -} - -exports.solution = solution; \ No newline at end of file diff --git a/Challenge/star6973/forEachFilter/solve.test.js b/Challenge/star6973/forEachFilter/solve.test.js deleted file mode 100644 index 3d73b25c..00000000 --- a/Challenge/star6973/forEachFilter/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: [100, 40], -}; - -describe('forEachFilter', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/star6973/forEachFilterIsNaN/README.md b/Challenge/star6973/forEachFilterIsNaN/README.md deleted file mode 100644 index 570c030e..00000000 --- a/Challenge/star6973/forEachFilterIsNaN/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소중 숫자인 원소만 뽑아 배열을 만드세요. diff --git a/Challenge/star6973/forEachFilterIsNaN/solve.js b/Challenge/star6973/forEachFilterIsNaN/solve.js deleted file mode 100644 index 10bea9be..00000000 --- a/Challenge/star6973/forEachFilterIsNaN/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.filter(item => (!isNaN(item) && typeof(item) === "number")); -} - -exports.solution = solution; \ No newline at end of file diff --git a/Challenge/star6973/forEachFilterIsNaN/solve.test.js b/Challenge/star6973/forEachFilterIsNaN/solve.test.js deleted file mode 100644 index d6e118bb..00000000 --- a/Challenge/star6973/forEachFilterIsNaN/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 40, '라매', '개발자', 51.5, 'a', 88], - answer: [1, 40, 51.5, 88], -}; - -const test2 = { - input: [1, 2, 3, '4', 5, '6'], - answer: [1, 2, 3, 5], -}; - -const test3 = { - input: [-3, -2, -1, 0, 1, 2, 3], - answer: [-3, -2, -1, 0, 1, 2, 3], -}; - -describe('forEachFilterIsNaN', () => { - test('test1: 숫자,문자 판별', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2: 문자로된 숫자 판별', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3: 음수 양수 포함', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); \ No newline at end of file diff --git a/Challenge/star6973/forEachMap/README.md b/Challenge/star6973/forEachMap/README.md deleted file mode 100644 index 1e8e03c8..00000000 --- a/Challenge/star6973/forEachMap/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -forEach 메소드를 사용해서 배열의 각 원소 끝에 '%'를 붙인 문자열 배열을 출력하세요 diff --git a/Challenge/star6973/forEachMap/solve.js b/Challenge/star6973/forEachMap/solve.js deleted file mode 100644 index 54807012..00000000 --- a/Challenge/star6973/forEachMap/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.map(item => `${item}%`); -} - -exports.solution = solution; \ No newline at end of file diff --git a/Challenge/star6973/forEachMap/solve.test.js b/Challenge/star6973/forEachMap/solve.test.js deleted file mode 100644 index de4868c6..00000000 --- a/Challenge/star6973/forEachMap/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: ['100%', '10%', '20%', '40%'], -}; - -describe('forEachMap', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/star6973/forEachReduce/README.md b/Challenge/star6973/forEachReduce/README.md deleted file mode 100644 index a984df2d..00000000 --- a/Challenge/star6973/forEachReduce/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -forEach 메소드를 사용해서 배열의 총 합을 출력하는 코드를 작성하세요 diff --git a/Challenge/star6973/forEachReduce/solve.js b/Challenge/star6973/forEachReduce/solve.js deleted file mode 100644 index ec506e05..00000000 --- a/Challenge/star6973/forEachReduce/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.reduce((arr, curr) => arr + curr); -} - -exports.solution = solution; \ No newline at end of file diff --git a/Challenge/star6973/forEachReduce/solve.test.js b/Challenge/star6973/forEachReduce/solve.test.js deleted file mode 100644 index 397e4b50..00000000 --- a/Challenge/star6973/forEachReduce/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: 170, -}; - -const test2 = { - input: [120, -20, -30, 0, 15], - answer: 85, -}; - -const test3 = { - input: [-10, -20, -30], - answer: -60, -}; - -describe('forEachReduce', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2: 음수가 포함된 계산', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3: 음수만 존재하는 계산', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/star6973/mapAddPercent/README.md b/Challenge/star6973/mapAddPercent/README.md deleted file mode 100644 index 75e73042..00000000 --- a/Challenge/star6973/mapAddPercent/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -map 메소드를 사용해 배열 각각 숫자 뒤에 %를 붙인 문자열을 만드세요 diff --git a/Challenge/star6973/mapAddPercent/solve.js b/Challenge/star6973/mapAddPercent/solve.js deleted file mode 100644 index d89d1492..00000000 --- a/Challenge/star6973/mapAddPercent/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.map(item => `${item}%`) -} - -exports.solution = solution; \ No newline at end of file diff --git a/Challenge/star6973/mapAddPercent/solve.test.js b/Challenge/star6973/mapAddPercent/solve.test.js deleted file mode 100644 index dac1b3cc..00000000 --- a/Challenge/star6973/mapAddPercent/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: ['100%', '10%', '20%', '40%'], -}; - -describe('mapAddPercent', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/star6973/mapAppendOrder/README.md b/Challenge/star6973/mapAppendOrder/README.md deleted file mode 100644 index 1435623a..00000000 --- a/Challenge/star6973/mapAppendOrder/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열의 값을 name 프로퍼티에 넣고 몇번째 원소인지를 order에 넣은 객체의 배열을 출력하세요 diff --git a/Challenge/star6973/mapAppendOrder/solve.js b/Challenge/star6973/mapAppendOrder/solve.js deleted file mode 100644 index 870932d5..00000000 --- a/Challenge/star6973/mapAppendOrder/solve.js +++ /dev/null @@ -1,11 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.map((item, idx) => { - return { - "name": item, - "order": idx+1 - } - }) -} - -exports.solution = solution; \ No newline at end of file diff --git a/Challenge/star6973/mapAppendOrder/solve.test.js b/Challenge/star6973/mapAppendOrder/solve.test.js deleted file mode 100644 index e08db10c..00000000 --- a/Challenge/star6973/mapAppendOrder/solve.test.js +++ /dev/null @@ -1,16 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: ['홍길동', '둘리', '루피'], - answer: [ - { name: '홍길동', order: 1 }, - { name: '둘리', order: 2 }, - { name: '루피', order: 3 }, - ], -}; - -describe('mapAppendOrder', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/star6973/recommendAd/README.md b/Challenge/star6973/recommendAd/README.md deleted file mode 100644 index 132e8800..00000000 --- a/Challenge/star6973/recommendAd/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# 문제제목 - -사용자가 안 본 광고는? - -## 설명 - -유튜브는 사용자가 프리미엄 회원이 아닌 경우 영상 시작이나 중간에 광고가 나오도록 설정되어 있습니다. - -[2020년 유튜브 인기 광고](https://www.thinkwithgoogle.com/intl/ko-kr/marketing-strategies/video/%EB%8C%80%ED%95%9C%EB%AF%BC%EA%B5%AD-youtube-%EC%9D%B8%EA%B8%B0-%EA%B4%91%EA%B3%A0%EC%98%81%EC%83%81-2020%EB%85%84-%EC%97%B0%EB%A7%90%EA%B2%B0%EC%82%B0/)는 총 열 편으로, 사용자의 일주일간 광고 시청 이력을 통해 해당 사용자가 일주일 동안 안 본 광고를 그 다음주에 노출함으로써 광고들이 사용자에게 골고루 노출되길 원합니다. - -유저가 매일 유튜브에 접속하여 하루 한 편 이상의 광고를 보았다고 가정할 때, 이 유저가 안 본 광고는 무엇인지 출력해주세요. - -## Expected Output - -[ '동원F&B' ] diff --git a/Challenge/star6973/recommendAd/solve.js b/Challenge/star6973/recommendAd/solve.js deleted file mode 100644 index 41b3ad42..00000000 --- a/Challenge/star6973/recommendAd/solve.js +++ /dev/null @@ -1,22 +0,0 @@ -const userHistory = [ - { date: '2020-11-03', watched: ['KT', 'BBQ'] }, - { date: '2020-11-04', watched: ['정관장', 'KT', '딱좋은데이'] }, - { date: '2020-11-05', watched: ['그랑사가', '농심'] }, - { date: '2020-11-06', watched: ['BBQ'] }, - { date: '2020-11-07', watched: ['쌍용자동차', 'BBQ', 'KT'] }, - { date: '2020-11-08', watched: ['켈로그코리아', '빙그레'] }, - { date: '2020-11-09', watched: ['KT', '그랑사가', '빙그레'] }, -]; - -// write your codes -function solution(inputArray) { - let watchList = []; - userHistory.forEach(item => watchList.push(...item.watched)); - - // 배열의 중복 제거 - watchList = [...new Set(watchList)]; - - return inputArray.filter(item => !watchList.includes(item)); -} - -exports.solution = solution; \ No newline at end of file diff --git a/Challenge/star6973/recommendAd/solve.test.js b/Challenge/star6973/recommendAd/solve.test.js deleted file mode 100644 index 8a0f6464..00000000 --- a/Challenge/star6973/recommendAd/solve.test.js +++ /dev/null @@ -1,23 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - '동원F&B', - '정관장', - 'KT', - 'BBQ', - '그랑사가', - '농심', - '딱좋은데이', - '빙그레', - '쌍용자동차', - '켈로그코리아', - ], - answer: ['동원F&B'], -}; - -describe('recommendAd', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/star6973/reduceMaxValueNIndex/README.md b/Challenge/star6973/reduceMaxValueNIndex/README.md deleted file mode 100644 index 965bdec6..00000000 --- a/Challenge/star6973/reduceMaxValueNIndex/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -reduce 메소드를 사용해 최댓값의 값을 maxValue에, 해당 값의 index를 idx에 넣은 객체를 출력하세요 diff --git a/Challenge/star6973/reduceMaxValueNIndex/solve.js b/Challenge/star6973/reduceMaxValueNIndex/solve.js deleted file mode 100644 index 6bf87f07..00000000 --- a/Challenge/star6973/reduceMaxValueNIndex/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.reduce((acc, cur, idx) => { - return (acc.maxValue >= cur) ? acc : { maxValue: cur, idx: idx }; - }, { maxValue: Number.NEGATIVE_INFINITY, idx: -1 }) -} - -exports.solution = solution; \ No newline at end of file diff --git a/Challenge/star6973/reduceMaxValueNIndex/solve.test.js b/Challenge/star6973/reduceMaxValueNIndex/solve.test.js deleted file mode 100644 index 0daef5b8..00000000 --- a/Challenge/star6973/reduceMaxValueNIndex/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [3, 29, 38, 12, 57, 74, 40, 85, 61], - answer: { maxValue: 85, idx: 7 }, -}; - -const test2 = { - input: [-24, -2, -13, -49, -999999, -17], - answer: { maxValue: -2, idx: 1 }, -}; -//최댓값이 중복일 때에는 먼저 나온 최댓값의 인덱스를 유지하도록 설정하였습니다. -const test3 = { - input: [2, -20, 21, -874, 99, -16, -29, 99], - answer: { maxValue: 99, idx: 4 }, -}; - -describe('reduceMaxValueNIndex', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2 : 음수 테스트', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3 : 중복된 최대값 테스트', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/star6973/reduceNameNickname/README.md b/Challenge/star6973/reduceNameNickname/README.md deleted file mode 100644 index b6920e05..00000000 --- a/Challenge/star6973/reduceNameNickname/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -입력받은 객채배열의 nickname을 key, name을 value로 하는 객체를 출력하세요 diff --git a/Challenge/star6973/reduceNameNickname/solve.js b/Challenge/star6973/reduceNameNickname/solve.js deleted file mode 100644 index e6cbab2c..00000000 --- a/Challenge/star6973/reduceNameNickname/solve.js +++ /dev/null @@ -1,11 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.reduce((acc, cur) => { - return { - ...acc, - [cur.nickname]: cur.name - } - }, {}) -} - -exports.solution = solution; \ No newline at end of file diff --git a/Challenge/star6973/reduceNameNickname/solve.test.js b/Challenge/star6973/reduceNameNickname/solve.test.js deleted file mode 100644 index 67b74529..00000000 --- a/Challenge/star6973/reduceNameNickname/solve.test.js +++ /dev/null @@ -1,25 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '홍길동', - nickname: 'hong', - }, - { - name: '둘리', - nickname: '2li', - }, - { - name: '오스트랄로피테쿠스', - nickname: '1Cin', - }, - ], - answer: { hong: '홍길동', '2li': '둘리', '1Cin': '오스트랄로피테쿠스' }, -}; - -describe('reduceNameNickname', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/star6973/reduceSum/README.md b/Challenge/star6973/reduceSum/README.md deleted file mode 100644 index 8c607eb2..00000000 --- a/Challenge/star6973/reduceSum/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -reduce 메소드를 사용해서 배열의 모든 수의 합을 구하세요. - -## Expected Output - -106 diff --git a/Challenge/star6973/reduceSum/solve.js b/Challenge/star6973/reduceSum/solve.js deleted file mode 100644 index 49beeed0..00000000 --- a/Challenge/star6973/reduceSum/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.reduce((acc, cur) => { return acc + cur }) -} - -exports.solution = solution; \ No newline at end of file diff --git a/Challenge/star6973/reduceSum/solve.test.js b/Challenge/star6973/reduceSum/solve.test.js deleted file mode 100644 index 046c40cb..00000000 --- a/Challenge/star6973/reduceSum/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [10, 3, 20, 5, 8, 60], - answer: 106, -}; - -describe('reduceSum', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/star6973/sortByPrice/README.md b/Challenge/star6973/sortByPrice/README.md deleted file mode 100644 index b1ccf70e..00000000 --- a/Challenge/star6973/sortByPrice/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 - -## Expected Output - -[ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 } -] diff --git a/Challenge/star6973/sortByPrice/solve.js b/Challenge/star6973/sortByPrice/solve.js deleted file mode 100644 index a50e31b2..00000000 --- a/Challenge/star6973/sortByPrice/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.sort((a, b) => a.price - b.price) -} - -exports.solution = solution; \ No newline at end of file diff --git a/Challenge/star6973/sortByPrice/solve.test.js b/Challenge/star6973/sortByPrice/solve.test.js deleted file mode 100644 index 3d6a3431..00000000 --- a/Challenge/star6973/sortByPrice/solve.test.js +++ /dev/null @@ -1,34 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '사과', - price: 1000, - }, - { - name: '수박', - price: 5000, - }, - { - name: '당근', - price: 2000, - }, - { - name: '참외', - price: 10000, - }, - ], - answer: [ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 }, - ], -}; - -describe('sortByPrice', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/star6973/sortByPriceAndQuantity/README.md b/Challenge/star6973/sortByPriceAndQuantity/README.md deleted file mode 100644 index 41cd5c95..00000000 --- a/Challenge/star6973/sortByPriceAndQuantity/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 -만약 price가 같다면 quantity기준으로 오름차순 정렬하세요 - -## Expected Output - -[ - { name: '사과', price: 1000, quantity: 2 }, - { name: '오이', price: 2000, quantity: 49 }, - { name: '당근', price: 2000, quantity: 50 }, - { name: '참외', price: 5000, quantity: 10 }, - { name: '수박', price: 5000, quantity: 20 } -] diff --git a/Challenge/star6973/sortByPriceAndQuantity/solve.js b/Challenge/star6973/sortByPriceAndQuantity/solve.js deleted file mode 100644 index 4f9c775f..00000000 --- a/Challenge/star6973/sortByPriceAndQuantity/solve.js +++ /dev/null @@ -1,13 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.sort((a, b) => { - if (a.price === b.price) { - return a.quantity - b.quantity - } - return a.price - b.price - }) - - // return inputArray.sort((a, b) => a.price - b.price || a.quantity - b.quantity) -} - -exports.solution = solution; \ No newline at end of file diff --git a/Challenge/star6973/sortByPriceAndQuantity/solve.test.js b/Challenge/star6973/sortByPriceAndQuantity/solve.test.js deleted file mode 100644 index 424f42b7..00000000 --- a/Challenge/star6973/sortByPriceAndQuantity/solve.test.js +++ /dev/null @@ -1,44 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '사과', - price: 1000, - quantity: 2, - }, - { - name: '수박', - price: 5000, - quantity: 20, - }, - { - name: '당근', - price: 2000, - quantity: 50, - }, - { - name: '참외', - price: 5000, - quantity: 10, - }, - { - name: '오이', - price: 2000, - quantity: 49, - }, - ], - answer: [ - { name: '사과', price: 1000, quantity: 2 }, - { name: '오이', price: 2000, quantity: 49 }, - { name: '당근', price: 2000, quantity: 50 }, - { name: '참외', price: 5000, quantity: 10 }, - { name: '수박', price: 5000, quantity: 20 }, - ], -}; - -describe('sortByPriceAndQuantity', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/star6973/spreadOperatorMaxValue/README.md b/Challenge/star6973/spreadOperatorMaxValue/README.md deleted file mode 100644 index 164b68a1..00000000 --- a/Challenge/star6973/spreadOperatorMaxValue/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -Spread Operator를 이용해서 값의 최대, 최소값을 구하세요 diff --git a/Challenge/star6973/spreadOperatorMaxValue/solve.js b/Challenge/star6973/spreadOperatorMaxValue/solve.js deleted file mode 100644 index f9215ed0..00000000 --- a/Challenge/star6973/spreadOperatorMaxValue/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return `max : ${Math.max(...inputArray)}, min : ${Math.min(...inputArray)}` -} - -exports.solution = solution; \ No newline at end of file diff --git a/Challenge/star6973/spreadOperatorMaxValue/solve.test.js b/Challenge/star6973/spreadOperatorMaxValue/solve.test.js deleted file mode 100644 index 26f2abf9..00000000 --- a/Challenge/star6973/spreadOperatorMaxValue/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], - answer: 'max : 10, min : 1', -}; - -describe('spreadOperatorMaxValue', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/suhyeon21/everyArray/README.md b/Challenge/suhyeon21/everyArray/README.md deleted file mode 100644 index 442558f6..00000000 --- a/Challenge/suhyeon21/everyArray/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -every를 이용해서 모든 원소가 짝수인지 아닌지를 판별하세요 - -## Expected Output - -true \ No newline at end of file diff --git a/Challenge/suhyeon21/everyArray/solve.js b/Challenge/suhyeon21/everyArray/solve.js deleted file mode 100644 index ee08441b..00000000 --- a/Challenge/suhyeon21/everyArray/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -function solution(inputArray) { - const isEven = inputArray.every((item) => item % 2 === 0); - return isEven; -} - -exports.solution = solution; diff --git a/Challenge/suhyeon21/everyArray/solve.test.js b/Challenge/suhyeon21/everyArray/solve.test.js deleted file mode 100644 index b03e4791..00000000 --- a/Challenge/suhyeon21/everyArray/solve.test.js +++ /dev/null @@ -1,21 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [2, 4, 6, 8, 10], - answer: true, -}; - -const test2 = { - input: [2, 3, 6, 8, 10], - answer: false, -}; - -describe('everyArray', () => { - test('모두 짝수면 true여야 한다.', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - - test('홀수가 있으면 false여야 한다.', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); -}); diff --git a/Challenge/suhyeon21/expDivOdd/README.md b/Challenge/suhyeon21/expDivOdd/README.md deleted file mode 100644 index c07ab10b..00000000 --- a/Challenge/suhyeon21/expDivOdd/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -제곱한 후 3으로 나눈 나머지가 홀수인 것 을 뽑은 배열의 총 합을 구하세요. diff --git a/Challenge/suhyeon21/expDivOdd/solve.js b/Challenge/suhyeon21/expDivOdd/solve.js deleted file mode 100644 index bf87ef39..00000000 --- a/Challenge/suhyeon21/expDivOdd/solve.js +++ /dev/null @@ -1,11 +0,0 @@ -function solution(inputArray) { - const answer = inputArray - .map((num) => num ** 2) - .filter((num) => (num % 3) % 2 === 1) - .reduce((prev, curr) => prev + curr); - - console.log(answer); - - return answer; -} -exports.solution = solution; diff --git a/Challenge/suhyeon21/expDivOdd/solve.test.js b/Challenge/suhyeon21/expDivOdd/solve.test.js deleted file mode 100644 index ca37fcc3..00000000 --- a/Challenge/suhyeon21/expDivOdd/solve.test.js +++ /dev/null @@ -1,21 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 7, 3, 4, 6], - answer: 66, -}; - -const test2 = { - input: [2, 3, 6, 8, 10], - answer: 168, -}; - -describe('everyArray', () => { - test('1, 7, 3, 4, 6', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - - test('2, 3, 6, 8, 10', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); -}); diff --git a/Challenge/suhyeon21/filterAge/README.md b/Challenge/suhyeon21/filterAge/README.md deleted file mode 100644 index 873a15c1..00000000 --- a/Challenge/suhyeon21/filterAge/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소의 age가 30이상 50미만인 사람만 있는 객체의 배열을 만드세요 diff --git a/Challenge/suhyeon21/filterAge/solve.js b/Challenge/suhyeon21/filterAge/solve.js deleted file mode 100644 index acf3bc95..00000000 --- a/Challenge/suhyeon21/filterAge/solve.js +++ /dev/null @@ -1,7 +0,0 @@ -// write your codes - -function solution(inputArray) { - return inputArray.filter((person) => person.age >= 30 && person.age < 50); -} - -exports.solution = solution; diff --git a/Challenge/suhyeon21/filterAge/solve.test.js b/Challenge/suhyeon21/filterAge/solve.test.js deleted file mode 100644 index b9081601..00000000 --- a/Challenge/suhyeon21/filterAge/solve.test.js +++ /dev/null @@ -1,32 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '영미', - age: 25, - }, - { - name: '일미', - age: 35, - }, - { - name: '이미', - age: 45, - }, - { - name: '삼미', - age: 55, - }, - ], - answer: [ - { name: '일미', age: 35 }, - { name: '이미', age: 45 }, - ], -}; - -describe('filterAge', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/suhyeon21/filterIntersection/README.md b/Challenge/suhyeon21/filterIntersection/README.md deleted file mode 100644 index d7c9ad39..00000000 --- a/Challenge/suhyeon21/filterIntersection/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# 문제제목 - -## 설명 - -두 배열의 교집합을 출력하세요! diff --git a/Challenge/suhyeon21/filterIntersection/solve.js b/Challenge/suhyeon21/filterIntersection/solve.js deleted file mode 100644 index ea046b7a..00000000 --- a/Challenge/suhyeon21/filterIntersection/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -const A = [1, 2, 3, 4, 5]; -const B = [3, 4, 5, 6, 7]; -// write your codes - -const solution = A.filter((n) => B.includes(n)); -console.log(solution); diff --git a/Challenge/suhyeon21/filterOdd/README.md b/Challenge/suhyeon21/filterOdd/README.md deleted file mode 100644 index cf9eda79..00000000 --- a/Challenge/suhyeon21/filterOdd/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -홀수만 뽑아 배열로 만드세요 diff --git a/Challenge/suhyeon21/filterOdd/solve.js b/Challenge/suhyeon21/filterOdd/solve.js deleted file mode 100644 index 4417547c..00000000 --- a/Challenge/suhyeon21/filterOdd/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.filter((num) => num % 2 === 1); -} - -exports.solution = solution; diff --git a/Challenge/suhyeon21/filterOdd/solve.test.js b/Challenge/suhyeon21/filterOdd/solve.test.js deleted file mode 100644 index 8cfd7f5a..00000000 --- a/Challenge/suhyeon21/filterOdd/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [4, 2, 5, 1, 3], - answer: [5, 1, 3], -}; - -const test2 = { - input: [4, 2, 6, 8, 50, 16], - answer: [], -}; - -const test3 = { - input: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], - answer: [1, 3, 5, 7, 9, 11], -}; - -describe('filterOdd', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/suhyeon21/findWord/README.md b/Challenge/suhyeon21/findWord/README.md deleted file mode 100644 index 8ef123f4..00000000 --- a/Challenge/suhyeon21/findWord/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -용가리라는 단어가 있으면 true 없으면 false를 출력 - -## Expected Output - -true diff --git a/Challenge/suhyeon21/findWord/solve.js b/Challenge/suhyeon21/findWord/solve.js deleted file mode 100644 index 24f6e193..00000000 --- a/Challenge/suhyeon21/findWord/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.includes("용가리"); -} - -exports.solution = solution; diff --git a/Challenge/suhyeon21/findWord/solve.test.js b/Challenge/suhyeon21/findWord/solve.test.js deleted file mode 100644 index 804114f6..00000000 --- a/Challenge/suhyeon21/findWord/solve.test.js +++ /dev/null @@ -1,26 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: ['잠', '자', '고', '싶', '다', '용가리'], - answer: true, -}; -const test2 = { - input: ['맛있는', '용가리치킨'], - answer: false, -}; -const test3 = { - input: ['고질라', '용가리 ', '울트라맨'], - answer: false, -}; - -describe('findWord', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); \ No newline at end of file diff --git a/Challenge/sunnyfterrain/everyArray/README.md b/Challenge/sunnyfterrain/everyArray/README.md deleted file mode 100644 index 442558f6..00000000 --- a/Challenge/sunnyfterrain/everyArray/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -every를 이용해서 모든 원소가 짝수인지 아닌지를 판별하세요 - -## Expected Output - -true \ No newline at end of file diff --git a/Challenge/sunnyfterrain/everyArray/solve.js b/Challenge/sunnyfterrain/everyArray/solve.js deleted file mode 100644 index 5478676f..00000000 --- a/Challenge/sunnyfterrain/everyArray/solve.js +++ /dev/null @@ -1,5 +0,0 @@ -function solution(inputArray) { - return inputArray.every((e) => e % 2 === 0); -} - -exports.solution = solution; diff --git a/Challenge/sunnyfterrain/everyArray/solve.test.js b/Challenge/sunnyfterrain/everyArray/solve.test.js deleted file mode 100644 index b03e4791..00000000 --- a/Challenge/sunnyfterrain/everyArray/solve.test.js +++ /dev/null @@ -1,21 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [2, 4, 6, 8, 10], - answer: true, -}; - -const test2 = { - input: [2, 3, 6, 8, 10], - answer: false, -}; - -describe('everyArray', () => { - test('모두 짝수면 true여야 한다.', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - - test('홀수가 있으면 false여야 한다.', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); -}); diff --git a/Challenge/sunnyfterrain/filterAge/README.md b/Challenge/sunnyfterrain/filterAge/README.md deleted file mode 100644 index 873a15c1..00000000 --- a/Challenge/sunnyfterrain/filterAge/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소의 age가 30이상 50미만인 사람만 있는 객체의 배열을 만드세요 diff --git a/Challenge/sunnyfterrain/filterAge/solve.js b/Challenge/sunnyfterrain/filterAge/solve.js deleted file mode 100644 index 58021435..00000000 --- a/Challenge/sunnyfterrain/filterAge/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.filter((item) => (item.age >= 30) & (item.age < 50)); -} - -exports.solution = solution; diff --git a/Challenge/sunnyfterrain/filterAge/solve.test.js b/Challenge/sunnyfterrain/filterAge/solve.test.js deleted file mode 100644 index b9081601..00000000 --- a/Challenge/sunnyfterrain/filterAge/solve.test.js +++ /dev/null @@ -1,32 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '영미', - age: 25, - }, - { - name: '일미', - age: 35, - }, - { - name: '이미', - age: 45, - }, - { - name: '삼미', - age: 55, - }, - ], - answer: [ - { name: '일미', age: 35 }, - { name: '이미', age: 45 }, - ], -}; - -describe('filterAge', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/sunnyfterrain/filterIntersection/README.md b/Challenge/sunnyfterrain/filterIntersection/README.md deleted file mode 100644 index d7c9ad39..00000000 --- a/Challenge/sunnyfterrain/filterIntersection/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# 문제제목 - -## 설명 - -두 배열의 교집합을 출력하세요! diff --git a/Challenge/sunnyfterrain/filterIntersection/solve.js b/Challenge/sunnyfterrain/filterIntersection/solve.js deleted file mode 100644 index 64d4301d..00000000 --- a/Challenge/sunnyfterrain/filterIntersection/solve.js +++ /dev/null @@ -1,5 +0,0 @@ -function solution(inputArray1, inputArray2) { - return inputArray1.filter((item) => inputArray2.includes(item)); -} - -exports.solution = solution; diff --git a/Challenge/sunnyfterrain/filterIntersection/solve.test.js b/Challenge/sunnyfterrain/filterIntersection/solve.test.js deleted file mode 100644 index 576cbc86..00000000 --- a/Challenge/sunnyfterrain/filterIntersection/solve.test.js +++ /dev/null @@ -1,15 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: { - A: [1, 2, 3, 4, 5], - B: [3, 4, 5, 6, 7], - }, - answer: [3, 4, 5], -}; - -describe('filterIntersection', () => { - test('test1', () => { - expect(solution(test1.input.A, test1.input.B)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/sunnyfterrain/filterOdd/README.md b/Challenge/sunnyfterrain/filterOdd/README.md deleted file mode 100644 index cf9eda79..00000000 --- a/Challenge/sunnyfterrain/filterOdd/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -홀수만 뽑아 배열로 만드세요 diff --git a/Challenge/sunnyfterrain/filterOdd/solve.js b/Challenge/sunnyfterrain/filterOdd/solve.js deleted file mode 100644 index eddd1e30..00000000 --- a/Challenge/sunnyfterrain/filterOdd/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.filter((arry) => arry % 2 === 1); -} - -exports.solution = solution; diff --git a/Challenge/sunnyfterrain/filterOdd/solve.test.js b/Challenge/sunnyfterrain/filterOdd/solve.test.js deleted file mode 100644 index 8cfd7f5a..00000000 --- a/Challenge/sunnyfterrain/filterOdd/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [4, 2, 5, 1, 3], - answer: [5, 1, 3], -}; - -const test2 = { - input: [4, 2, 6, 8, 50, 16], - answer: [], -}; - -const test3 = { - input: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], - answer: [1, 3, 5, 7, 9, 11], -}; - -describe('filterOdd', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/sunnyfterrain/findWord/README.md b/Challenge/sunnyfterrain/findWord/README.md deleted file mode 100644 index 8ef123f4..00000000 --- a/Challenge/sunnyfterrain/findWord/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -용가리라는 단어가 있으면 true 없으면 false를 출력 - -## Expected Output - -true diff --git a/Challenge/sunnyfterrain/findWord/solve.js b/Challenge/sunnyfterrain/findWord/solve.js deleted file mode 100644 index e538ff03..00000000 --- a/Challenge/sunnyfterrain/findWord/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -// write your codes -function solution(inputArray) { - if (inputArray.find((e) => e === '용가리')) { - return true; - } - return false; -} - -exports.solution = solution; diff --git a/Challenge/sunnyfterrain/findWord/solve.test.js b/Challenge/sunnyfterrain/findWord/solve.test.js deleted file mode 100644 index 3e88a818..00000000 --- a/Challenge/sunnyfterrain/findWord/solve.test.js +++ /dev/null @@ -1,26 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: ['잠', '자', '고', '싶', '다', '용가리'], - answer: true, -}; -const test2 = { - input: ['맛있는', '용가리치킨'], - answer: false, -}; -const test3 = { - input: ['고질라', '용가리 ', '울트라맨'], - answer: false, -}; - -describe('findWord', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/sunnyfterrain/forEachFilter/README.md b/Challenge/sunnyfterrain/forEachFilter/README.md deleted file mode 100644 index 6dcbc7c2..00000000 --- a/Challenge/sunnyfterrain/forEachFilter/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소중 40 이상인 수만 뽑아 배열을 만드세요. diff --git a/Challenge/sunnyfterrain/forEachFilter/solve.js b/Challenge/sunnyfterrain/forEachFilter/solve.js deleted file mode 100644 index 11707955..00000000 --- a/Challenge/sunnyfterrain/forEachFilter/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.filter((item) => item >= 40); -} - -exports.solution = solution; diff --git a/Challenge/sunnyfterrain/forEachFilter/solve.test.js b/Challenge/sunnyfterrain/forEachFilter/solve.test.js deleted file mode 100644 index 3d73b25c..00000000 --- a/Challenge/sunnyfterrain/forEachFilter/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: [100, 40], -}; - -describe('forEachFilter', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/sunnyfterrain/forEachMap/README.md b/Challenge/sunnyfterrain/forEachMap/README.md deleted file mode 100644 index 1e8e03c8..00000000 --- a/Challenge/sunnyfterrain/forEachMap/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -forEach 메소드를 사용해서 배열의 각 원소 끝에 '%'를 붙인 문자열 배열을 출력하세요 diff --git a/Challenge/sunnyfterrain/forEachMap/solve.js b/Challenge/sunnyfterrain/forEachMap/solve.js deleted file mode 100644 index aa448aec..00000000 --- a/Challenge/sunnyfterrain/forEachMap/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -// write your codes -function solution(inputArray) { - let answer = []; - inputArray.forEach((item) => answer.push(item + '%')); - return answer; -} - -exports.solution = solution; diff --git a/Challenge/sunnyfterrain/forEachMap/solve.test.js b/Challenge/sunnyfterrain/forEachMap/solve.test.js deleted file mode 100644 index de4868c6..00000000 --- a/Challenge/sunnyfterrain/forEachMap/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: ['100%', '10%', '20%', '40%'], -}; - -describe('forEachMap', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/sunnyfterrain/mapAddPercent/README.md b/Challenge/sunnyfterrain/mapAddPercent/README.md deleted file mode 100644 index 75e73042..00000000 --- a/Challenge/sunnyfterrain/mapAddPercent/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -map 메소드를 사용해 배열 각각 숫자 뒤에 %를 붙인 문자열을 만드세요 diff --git a/Challenge/sunnyfterrain/mapAddPercent/solve.js b/Challenge/sunnyfterrain/mapAddPercent/solve.js deleted file mode 100644 index 2ee32692..00000000 --- a/Challenge/sunnyfterrain/mapAddPercent/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.map((e) => `${e}%`); -} - -exports.solution = solution; diff --git a/Challenge/sunnyfterrain/mapAddPercent/solve.test.js b/Challenge/sunnyfterrain/mapAddPercent/solve.test.js deleted file mode 100644 index dac1b3cc..00000000 --- a/Challenge/sunnyfterrain/mapAddPercent/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: ['100%', '10%', '20%', '40%'], -}; - -describe('mapAddPercent', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/sunnyfterrain/mapAppendOrder/README.md b/Challenge/sunnyfterrain/mapAppendOrder/README.md deleted file mode 100644 index 1435623a..00000000 --- a/Challenge/sunnyfterrain/mapAppendOrder/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열의 값을 name 프로퍼티에 넣고 몇번째 원소인지를 order에 넣은 객체의 배열을 출력하세요 diff --git a/Challenge/sunnyfterrain/mapAppendOrder/solve.js b/Challenge/sunnyfterrain/mapAppendOrder/solve.js deleted file mode 100644 index fc5b7074..00000000 --- a/Challenge/sunnyfterrain/mapAppendOrder/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.map((item, idx) => { - return { name: item, order: idx + 1 }; - }); -} - -exports.solution = solution; diff --git a/Challenge/sunnyfterrain/mapAppendOrder/solve.test.js b/Challenge/sunnyfterrain/mapAppendOrder/solve.test.js deleted file mode 100644 index e08db10c..00000000 --- a/Challenge/sunnyfterrain/mapAppendOrder/solve.test.js +++ /dev/null @@ -1,16 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: ['홍길동', '둘리', '루피'], - answer: [ - { name: '홍길동', order: 1 }, - { name: '둘리', order: 2 }, - { name: '루피', order: 3 }, - ], -}; - -describe('mapAppendOrder', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/sunnyfterrain/sortByPrice/README.md b/Challenge/sunnyfterrain/sortByPrice/README.md deleted file mode 100644 index b1ccf70e..00000000 --- a/Challenge/sunnyfterrain/sortByPrice/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 - -## Expected Output - -[ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 } -] diff --git a/Challenge/sunnyfterrain/sortByPrice/solve.js b/Challenge/sunnyfterrain/sortByPrice/solve.js deleted file mode 100644 index cb4fa4c3..00000000 --- a/Challenge/sunnyfterrain/sortByPrice/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.sort((a, b) => a.price - b.price); -} - -exports.solution = solution; diff --git a/Challenge/sunnyfterrain/sortByPrice/solve.test.js b/Challenge/sunnyfterrain/sortByPrice/solve.test.js deleted file mode 100644 index 3d6a3431..00000000 --- a/Challenge/sunnyfterrain/sortByPrice/solve.test.js +++ /dev/null @@ -1,34 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '사과', - price: 1000, - }, - { - name: '수박', - price: 5000, - }, - { - name: '당근', - price: 2000, - }, - { - name: '참외', - price: 10000, - }, - ], - answer: [ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 }, - ], -}; - -describe('sortByPrice', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/thdwlsgus0/everyArray/README.md b/Challenge/thdwlsgus0/everyArray/README.md deleted file mode 100644 index 442558f6..00000000 --- a/Challenge/thdwlsgus0/everyArray/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -every를 이용해서 모든 원소가 짝수인지 아닌지를 판별하세요 - -## Expected Output - -true \ No newline at end of file diff --git a/Challenge/thdwlsgus0/everyArray/solve.js b/Challenge/thdwlsgus0/everyArray/solve.js deleted file mode 100644 index fd404622..00000000 --- a/Challenge/thdwlsgus0/everyArray/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -const inputArray = [2, 4, 6, 8, 10]; - -// write your codes - -const solution = (inputArray) => { - return inputArray.every(num=>num%2===0); -} - -console.log(solution(inputArray)); \ No newline at end of file diff --git a/Challenge/thdwlsgus0/expDivOdd/README.md b/Challenge/thdwlsgus0/expDivOdd/README.md deleted file mode 100644 index 6749b510..00000000 --- a/Challenge/thdwlsgus0/expDivOdd/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -// 제곱한 후 3으로 나눈 나머지가 홀수인 것의 총 합을 구하세요. - -## Expected Output - -59 diff --git a/Challenge/thdwlsgus0/expDivOdd/solve.js b/Challenge/thdwlsgus0/expDivOdd/solve.js deleted file mode 100644 index 1f223b0f..00000000 --- a/Challenge/thdwlsgus0/expDivOdd/solve.js +++ /dev/null @@ -1,13 +0,0 @@ -const inputArray = [ 1, 7, 3, 4, 6 ]; - -// write your codes - -const solution = (inputArray) => { - return inputArray.map((v)=> Math.pow(v,2)) - .reduce((acc,cur)=>{ - if(cur%3===1)return acc+cur; - else return acc; - },0); -} - -console.log(solution(inputArray)); \ No newline at end of file diff --git a/Challenge/thdwlsgus0/figureSkating/README.md b/Challenge/thdwlsgus0/figureSkating/README.md deleted file mode 100644 index 54b85fbd..00000000 --- a/Challenge/thdwlsgus0/figureSkating/README.md +++ /dev/null @@ -1,35 +0,0 @@ -## 설명 - -점수를 계산해서 점수가 높은 순으로 name과 score를 가진 객체의 배열을 출력하세요. -단 실격자는 출력하지 않습니다. - -### 피겨 점수 기준 - -피겨 점수는 ‘기술점수(TES)+예술점수(PCS)-감점’으로 구성된다. - -기술점수(TES·Total Element Score)는 기본점수에 수행점수(GOE·Grade Of Execution)를 합산해 도출한다. - -심판은 선수들이 점프와 스핀의 기술을 제대로 수행하는지 살핀다. 점프에선 회전수를 제대로 지켰는지, 에지를 제대로 사용했는지에 따라 ‘롱 에지’(잘못된 에지 사용)나 ‘다운그레이드’(난이도 하락), ‘어텐션’(주의) 등의 판정을 내린다. 스핀과 스텝시퀀스에 붙는 레벨(1~4)도 이들이 결정한다. - -9명의 심판은 선수들이 미리 제출한 연기 구성표를 기준으로 과제별 기본점수에서 가·감점을 한다. 이른바 ‘GOE’라 불리는 수행점수다. - -쇼트프로그램은 점프 3개, 스핀 3개, 스텝 1개의 수행과제가 반드시 포함돼야 한다. - -예술점수(PCS·Total Program Component Score)는 프로그램의 완성도에 영향을 미치는 스케이팅 기술·동작의 연결·연기·안무·곡 해석 등 5가지를 평가한다. - -마지막으로 감점이 반영된다. 감점 항목이 발생할 때마다 1점씩 감점된다. - -원문보기: -http://news.khan.co.kr/kh_news/khan_art_view.html?art_id=201402172146545#csidx6329aebb6a02152bca884614a7f0544 - -### 판정 기준 - -- 점수가 가장 높은 사람이 1등이다. -- 점수는 기술점수(TES) + 예술점수(PCS) - 감점 으로 구성된다. -- 기술점수(TES)는 기본점수 \* 수행점수(GOE)를 합산해 도출한다. -- 필수 수행과제를 수행하지 못했을 시 실격이다. - -### 필수 수행과제 - -- 쇼트프로그램은 점프 3개, 스핀 3개, 스텝 1개의 수행과제가 반드시 포함돼야 한다. -- 점프와 스핀을 4번 이상 수행했을 시 가장 잘한 3개를 기준으로 한다. diff --git a/Challenge/thdwlsgus0/figureSkating/solve.js b/Challenge/thdwlsgus0/figureSkating/solve.js deleted file mode 100644 index 958dfb8f..00000000 --- a/Challenge/thdwlsgus0/figureSkating/solve.js +++ /dev/null @@ -1,102 +0,0 @@ -// 기본 점수 -const baseScore = { - jump: 10, - spin: 20, - step: 15, -}; - -const baseAssignment = { - jump: 3, - spin: 3, - step: 1, -}; - -const inputArray = [ - { - name: "김연아", - goe: { - jump: [10, 9, 10], - spin: [10, 10, 10], - step: [9], - }, - pcs: 30, - penalty: 0, - }, - { - name: "피겨의 신", - goe: { - jump: [10000, 10000], - spin: [10000, 10000, 10000], - step: [10000], - }, - pcs: 100000, - penalty: 0, - }, - { - name: "아사다 마오", - goe: { - jump: [9, 6, 8, 9], - spin: [9, 9, 9], - step: [8], - }, - pcs: 29, - penalty: 10, - }, -]; - -// write your codes - -function solution(inputArray) { - - const baseComp = (array) => { - if(array.goe.jump.length >= baseAssignment.jump && - array.goe.spin.length >= baseAssignment.spin && - array.goe.step.length >= baseAssignment.step) - return array; - } - - const sumScore = (array) => { - const sum = array.reduce((acc, cur)=>{ - return acc+cur; - },0); - - return sum; - } - - const getScore = (player, n) => { - - const jumpScore = baseScore.jump * sumScore(sortScore(player.goe.jump, n)); - const spinScore = baseScore.spin * sumScore(sortScore(player.goe.spin, n)); - const stepScore = baseScore.step * sumScore(sortScore(player.goe.step, n)); - - const totalScore = jumpScore + spinScore + stepScore + player.pcs - player.penalty; - - return totalScore; - } - - const sortScore = (actionArray, n) => { - if(actionArray.length>=n){ - return actionArray.sort((a,b)=>b-a) - .slice(0, 3); - } - else return actionArray.sort((a,b)=> a-b); - } - - const getObject = (currentPlayer) => { - const obj = {}; - obj['name'] = currentPlayer.name; - obj['score'] = getScore(currentPlayer, 4); - return obj; - } - - const answer = inputArray.filter(item=>baseComp(item)) - .reduce((player, currentPlayer)=>{ - player.push(getObject(currentPlayer)); - return player; - },[]); - - return answer; -} - -console.log(solution(inputArray)); -exports.solution = solution; diff --git a/Challenge/thdwlsgus0/figureSkating/solve.test.js b/Challenge/thdwlsgus0/figureSkating/solve.test.js deleted file mode 100644 index 7bceadf1..00000000 --- a/Challenge/thdwlsgus0/figureSkating/solve.test.js +++ /dev/null @@ -1,46 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '김연아', - goe: { - jump: [10, 9, 10], - spin: [10, 10, 10], - step: [9], - }, - pcs: 30, - penalty: 0, - }, - { - name: '피겨의 신', - goe: { - jump: [10000, 10000], - spin: [10000, 10000, 10000], - step: [10000], - }, - pcs: 100000, - penalty: 0, - }, - { - name: '아사다 마오', - goe: { - jump: [9, 6, 8, 9], - spin: [9, 9, 9], - step: [8], - }, - pcs: 29, - penalty: 10, - }, - ], - answer: [ - { name: '김연아', score: 1055 }, - { name: '아사다 마오', score: 939 }, - ], -}; - -describe('everyArray', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/thdwlsgus0/filterAge/README.md b/Challenge/thdwlsgus0/filterAge/README.md deleted file mode 100644 index 1c73138e..00000000 --- a/Challenge/thdwlsgus0/filterAge/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소의 age가 30이상 50미만인 사람만 있는 객체의 배열을 만드세요 - -## Expected Output - -[ { name: '일미', age: 35 }, { name: '이미', age: 45 } ] diff --git a/Challenge/thdwlsgus0/filterAge/solve.js b/Challenge/thdwlsgus0/filterAge/solve.js deleted file mode 100644 index 074c1b35..00000000 --- a/Challenge/thdwlsgus0/filterAge/solve.js +++ /dev/null @@ -1,25 +0,0 @@ -const inputArray = [ - { - name: '영미', - age: 25, - }, - { - name: '일미', - age: 35, - }, - { - name: '이미', - age: 45, - }, - { - name: '삼미', - age: 55, - }, -] -// write your codes - -const solution = (inputArray) => { - return inputArray.filter((v)=> v.age>=30 && v.age<50); -} - -console.log(solution(inputArray)); \ No newline at end of file diff --git a/Challenge/thdwlsgus0/filterIntersection/README.md b/Challenge/thdwlsgus0/filterIntersection/README.md deleted file mode 100644 index 56c8d04a..00000000 --- a/Challenge/thdwlsgus0/filterIntersection/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -두 배열의 교집합을 출력하세요! - -## Expected Output - -[3, 4, 5] \ No newline at end of file diff --git a/Challenge/thdwlsgus0/filterIntersection/solve.js b/Challenge/thdwlsgus0/filterIntersection/solve.js deleted file mode 100644 index 6f0e412c..00000000 --- a/Challenge/thdwlsgus0/filterIntersection/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -const A = [1, 2, 3, 4, 5]; -const B = [3, 4, 5, 6, 7]; -// write your codes - -const solution = (A,B)=>{ - return A.filter((v)=>B.includes(v)); -} - -console.log(solution(A,B)); \ No newline at end of file diff --git a/Challenge/thdwlsgus0/filterOdd/README.md b/Challenge/thdwlsgus0/filterOdd/README.md deleted file mode 100644 index 9bf99a18..00000000 --- a/Challenge/thdwlsgus0/filterOdd/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -홀수만 뽑아 배열로 만드세요 - -## Expected Output - -[5, 1, 3] diff --git a/Challenge/thdwlsgus0/filterOdd/solve.js b/Challenge/thdwlsgus0/filterOdd/solve.js deleted file mode 100644 index faa9ef6d..00000000 --- a/Challenge/thdwlsgus0/filterOdd/solve.js +++ /dev/null @@ -1,10 +0,0 @@ -const inputArray = [4, 2, 5, 1, 3]; - -// write your codes - -const solution = (inputArray) => { - return inputArray.filter(v=> v%2===1); -} - -console.log(solution(inputArray)); - diff --git a/Challenge/thdwlsgus0/findWord/README.md b/Challenge/thdwlsgus0/findWord/README.md deleted file mode 100644 index 8ef123f4..00000000 --- a/Challenge/thdwlsgus0/findWord/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -용가리라는 단어가 있으면 true 없으면 false를 출력 - -## Expected Output - -true diff --git a/Challenge/thdwlsgus0/findWord/solve.js b/Challenge/thdwlsgus0/findWord/solve.js deleted file mode 100644 index 66219450..00000000 --- a/Challenge/thdwlsgus0/findWord/solve.js +++ /dev/null @@ -1,7 +0,0 @@ -const inputArray = ['잠', '자', '고', '싶', '다', '용가리']; - -// write your codes - -const solution = (inputArray) => { - return inputArray.includes('용가리'); -} \ No newline at end of file diff --git a/Challenge/thdwlsgus0/forEachFilter/README.md b/Challenge/thdwlsgus0/forEachFilter/README.md deleted file mode 100644 index d826e8e6..00000000 --- a/Challenge/thdwlsgus0/forEachFilter/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소중 40 이상인 수만 뽑아 배열을 만드세요. - -## Expected Output - -[ 100, 40 ] diff --git a/Challenge/thdwlsgus0/forEachFilter/solve.js b/Challenge/thdwlsgus0/forEachFilter/solve.js deleted file mode 100644 index 403c6979..00000000 --- a/Challenge/thdwlsgus0/forEachFilter/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes - -const solution = (inputArray) => { - return inputArray.filter(v => v>=40); -} - -console.log(solution(inputArray)); \ No newline at end of file diff --git a/Challenge/thdwlsgus0/forEachFilterIsNaN/README.md b/Challenge/thdwlsgus0/forEachFilterIsNaN/README.md deleted file mode 100644 index ba71774d..00000000 --- a/Challenge/thdwlsgus0/forEachFilterIsNaN/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소중 숫자인 원소만 뽑아 배열을 만드세요. - -## Expected Output - -[ 1, 40, 51.5, 88 ] diff --git a/Challenge/thdwlsgus0/forEachFilterIsNaN/solve.js b/Challenge/thdwlsgus0/forEachFilterIsNaN/solve.js deleted file mode 100644 index ac326af5..00000000 --- a/Challenge/thdwlsgus0/forEachFilterIsNaN/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -const inputArray = [ 1, 40, "라매", "개발자", 51.5, 'a', 88 ]; - -// write your codes - -const solution = (inputArray) => { - return inputArray.filter(v=> !isNaN(v)); -} - -console.log(solution(inputArray)); \ No newline at end of file diff --git a/Challenge/thdwlsgus0/forEachMap/README.md b/Challenge/thdwlsgus0/forEachMap/README.md deleted file mode 100644 index d0e84215..00000000 --- a/Challenge/thdwlsgus0/forEachMap/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# forEachReduce - -## 설명 - -forEach 메소드를 사용해서 배열의 각 원소 끝에 '%'를 붙인 문자열 배열을 출력하세요 - -## Expected Output - -[ '100%', '10%', '20%', '40%' ] diff --git a/Challenge/thdwlsgus0/forEachMap/solve.js b/Challenge/thdwlsgus0/forEachMap/solve.js deleted file mode 100644 index 41ab6906..00000000 --- a/Challenge/thdwlsgus0/forEachMap/solve.js +++ /dev/null @@ -1,13 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes - -const solution = (inputArray) => { - const output = []; - inputArray.forEach((v)=>{ - output.push(v+'%'); - }); - return output; -} - -console.log(solution(inputArray)); \ No newline at end of file diff --git a/Challenge/thdwlsgus0/forEachReduce/README.md b/Challenge/thdwlsgus0/forEachReduce/README.md deleted file mode 100644 index 8f369ed9..00000000 --- a/Challenge/thdwlsgus0/forEachReduce/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# forEachReduce - -## 설명 - -forEach 메소드를 사용해서 배열의 총 합을 출력하는 코드를 작성하세요 - -## Expected Output - -170 diff --git a/Challenge/thdwlsgus0/forEachReduce/solve.js b/Challenge/thdwlsgus0/forEachReduce/solve.js deleted file mode 100644 index ce2cec85..00000000 --- a/Challenge/thdwlsgus0/forEachReduce/solve.js +++ /dev/null @@ -1,11 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes - -const solution = (inputArray) => { - return inputArray.reduce((acc, cur)=> { - return acc+cur; - }) -} - -console.log(solution(inputArray)); \ No newline at end of file diff --git a/Challenge/thdwlsgus0/mapAddPercent/README.md b/Challenge/thdwlsgus0/mapAddPercent/README.md deleted file mode 100644 index 4156a2f9..00000000 --- a/Challenge/thdwlsgus0/mapAddPercent/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -map 메소드를 사용해 배열 각각 숫자 뒤에 %를 붙인 문자열을 만드세요 - -## Expected Output - -['100%', '10%', '20%', '40%'] diff --git a/Challenge/thdwlsgus0/mapAddPercent/solve.js b/Challenge/thdwlsgus0/mapAddPercent/solve.js deleted file mode 100644 index ef70649c..00000000 --- a/Challenge/thdwlsgus0/mapAddPercent/solve.js +++ /dev/null @@ -1,10 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes - -const solution = (inputArray) => { - return inputArray.map((v)=>{ - return v+'%'; - }) -} -console.log(solution(inputArray)); \ No newline at end of file diff --git a/Challenge/thdwlsgus0/mapAppendOrder/README.md b/Challenge/thdwlsgus0/mapAppendOrder/README.md deleted file mode 100644 index fccb0d1a..00000000 --- a/Challenge/thdwlsgus0/mapAppendOrder/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# 문제제목 - -## 설명 - -배열의 값을 name 프로퍼티에 넣고 몇번째 원소인지를 order에 넣은 객체의 배열을 출력하세요 - -## Expected Output - -[ - { name: '홍길동', order: 1 }, - { name: '둘리', order: 2 }, - { name: '루피', order: 3 } -] diff --git a/Challenge/thdwlsgus0/mapAppendOrder/solve.js b/Challenge/thdwlsgus0/mapAppendOrder/solve.js deleted file mode 100644 index c8a21846..00000000 --- a/Challenge/thdwlsgus0/mapAppendOrder/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -const inputArray = ['홍길동', '둘리', '루피']; - -// write your codes - -const solution = (inputArray) => { - return inputArray.map((name,index)=>({name, order: index+1})) -} - -console.log(solution(inputArray)); \ No newline at end of file diff --git a/Challenge/thdwlsgus0/reduceMaxValueNIndex/README.md b/Challenge/thdwlsgus0/reduceMaxValueNIndex/README.md deleted file mode 100644 index 02a22b52..00000000 --- a/Challenge/thdwlsgus0/reduceMaxValueNIndex/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -reduce 메소드를 사용해 최댓값의 값을 maxValue에, 해당 값의 index를 idx에 넣은 객체를 출력하세요 - -## Expected Output - -{ maxValue: 85, idx: 7 }. diff --git a/Challenge/thdwlsgus0/reduceMaxValueNIndex/solve.js b/Challenge/thdwlsgus0/reduceMaxValueNIndex/solve.js deleted file mode 100644 index 1a99c0d5..00000000 --- a/Challenge/thdwlsgus0/reduceMaxValueNIndex/solve.js +++ /dev/null @@ -1,17 +0,0 @@ -const inputArray = [3, 29, 38, 12, 57, 74, 40, 85, 61]; - -// write your codes - -const solution = (inputArray) => { - return inputArray.reduce((acc ,cur, index)=> { - if(acc?.maxValue < cur){ - return { - maxValue: cur, - idx:index, - } - } - return acc; - },{maxValue:-Infinity, idx:-1}); -} - -console.log(solution(inputArray)); \ No newline at end of file diff --git a/Challenge/thdwlsgus0/reduceNameNickname/README.md b/Challenge/thdwlsgus0/reduceNameNickname/README.md deleted file mode 100644 index aeaf5b31..00000000 --- a/Challenge/thdwlsgus0/reduceNameNickname/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -입력받은 객채배열의 nickname을 key, name을 value로 하는 객체를 출력하세요 - -## Expected Output - -{ hong: '홍길동', '2li': '둘리', '1Cin': '오스트랄로피테쿠스' } diff --git a/Challenge/thdwlsgus0/reduceNameNickname/solve.js b/Challenge/thdwlsgus0/reduceNameNickname/solve.js deleted file mode 100644 index 083ce3e2..00000000 --- a/Challenge/thdwlsgus0/reduceNameNickname/solve.js +++ /dev/null @@ -1,25 +0,0 @@ -const inputArray = [ - { - name: '홍길동', - nickname: 'hong', - }, - { - name: '둘리', - nickname: '2li', - }, - { - name: '오스트랄로피테쿠스', - nickname: '1Cin', - }, -]; - -// write your codes - -const solution = (inputArray) => { - return inputArray.reduce((acc, cur, index)=>{ - acc[cur.nickname] = cur.name; - return acc; - },{}); -} - -console.log(solution(inputArray)); \ No newline at end of file diff --git a/Challenge/thdwlsgus0/reduceSum/README.md b/Challenge/thdwlsgus0/reduceSum/README.md deleted file mode 100644 index 8c607eb2..00000000 --- a/Challenge/thdwlsgus0/reduceSum/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -reduce 메소드를 사용해서 배열의 모든 수의 합을 구하세요. - -## Expected Output - -106 diff --git a/Challenge/thdwlsgus0/reduceSum/solve.js b/Challenge/thdwlsgus0/reduceSum/solve.js deleted file mode 100644 index 98839167..00000000 --- a/Challenge/thdwlsgus0/reduceSum/solve.js +++ /dev/null @@ -1,12 +0,0 @@ -const inputArray = [10, 3, 20, 5, 8, 60]; - -// write your codes - - -const solution = (inputArray) => { - return inputArray.reduce((acc, cur, index) => { - return acc+cur; - }); -} - -console.log(solution(inputArray)); \ No newline at end of file diff --git a/Challenge/thdwlsgus0/sortByPrice/README.md b/Challenge/thdwlsgus0/sortByPrice/README.md deleted file mode 100644 index b1ccf70e..00000000 --- a/Challenge/thdwlsgus0/sortByPrice/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 - -## Expected Output - -[ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 } -] diff --git a/Challenge/thdwlsgus0/sortByPrice/solve.js b/Challenge/thdwlsgus0/sortByPrice/solve.js deleted file mode 100644 index 6b9592fb..00000000 --- a/Challenge/thdwlsgus0/sortByPrice/solve.js +++ /dev/null @@ -1,27 +0,0 @@ -const inputArray = [ - { - name: '사과', - price: 1000, - }, - { - name: '수박', - price: 5000, - }, - { - name: '당근', - price: 2000, - }, - { - name: '참외', - price: 10000, - } -]; - -// write your codes - -const solution = (inputArray) => { - return inputArray.sort((a,b)=>{ - return a.price - b.price; - }) -} - diff --git a/Challenge/thdwlsgus0/sortByPriceAndQuantity/README.md b/Challenge/thdwlsgus0/sortByPriceAndQuantity/README.md deleted file mode 100644 index 41cd5c95..00000000 --- a/Challenge/thdwlsgus0/sortByPriceAndQuantity/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 -만약 price가 같다면 quantity기준으로 오름차순 정렬하세요 - -## Expected Output - -[ - { name: '사과', price: 1000, quantity: 2 }, - { name: '오이', price: 2000, quantity: 49 }, - { name: '당근', price: 2000, quantity: 50 }, - { name: '참외', price: 5000, quantity: 10 }, - { name: '수박', price: 5000, quantity: 20 } -] diff --git a/Challenge/thdwlsgus0/sortByPriceAndQuantity/solve.js b/Challenge/thdwlsgus0/sortByPriceAndQuantity/solve.js deleted file mode 100644 index a29c573f..00000000 --- a/Challenge/thdwlsgus0/sortByPriceAndQuantity/solve.js +++ /dev/null @@ -1,36 +0,0 @@ -const inputArray = [ - { - name: '사과', - price: 1000, - quantity: 2, - }, - { - name: '수박', - price: 5000, - quantity: 20, - }, - { - name: '당근', - price: 2000, - quantity: 50, - }, - { - name: '참외', - price: 5000, - quantity: 10, - }, - { - name: '오이', - price: 2000, - quantity: 49, - } -]; - -// write your codes - -const solution = (inputArray) => { - return inputArray.sort((a,b)=>{ - return a.price - b.price || a.quantity - b.quantity; - }) -} - diff --git a/Challenge/thdwlsgus0/spreadOperatorMaxValue/README.md b/Challenge/thdwlsgus0/spreadOperatorMaxValue/README.md deleted file mode 100644 index b4ffffdb..00000000 --- a/Challenge/thdwlsgus0/spreadOperatorMaxValue/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# 문제제목 - -## 설명 - -Spread Operator를 이용해서 값의 최대, 최소값을 구하세요 - - -## Expected Output - - -max : 10, min : 1 \ No newline at end of file diff --git a/Challenge/thdwlsgus0/spreadOperatorMaxValue/solve.js b/Challenge/thdwlsgus0/spreadOperatorMaxValue/solve.js deleted file mode 100644 index c81364b5..00000000 --- a/Challenge/thdwlsgus0/spreadOperatorMaxValue/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -const inputArray = [1,2,3,4,5,6,7,8,9,10]; - -// write your codes - -const solution = (inputArray) => { - console.log(`max : ${Math.max(...inputArray)}, min : ${Math.min(...inputArray)}`); -} - -solution(inputArray); \ No newline at end of file diff --git a/Challenge/uhj1993/expDivOdd/README.md b/Challenge/uhj1993/expDivOdd/README.md deleted file mode 100644 index ca68f81d..00000000 --- a/Challenge/uhj1993/expDivOdd/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -제곱한 후 3으로 나눈 나머지가 홀수인 것의 총 합을 구하세요. - -## Expected Output - -66 diff --git a/Challenge/uhj1993/expDivOdd/solve.js b/Challenge/uhj1993/expDivOdd/solve.js deleted file mode 100644 index 97e38bed..00000000 --- a/Challenge/uhj1993/expDivOdd/solve.js +++ /dev/null @@ -1,19 +0,0 @@ -const inputArray = [1, 7, 3, 4, 6]; - -// write your codes - -const result = inputArray - .map((item) => { - return item * item; - }) - .filter((item) => { - if (item % 3 === 1) { - return true; - } - }) - .reduce((a, b) => a + b); - -console.log(result); - -// 1. filter메소드의 return값은 boolean값이어야 한다. -// 2. 메소드체이닝 사용하기 diff --git a/Challenge/uhj1993/figureSkating/README.md b/Challenge/uhj1993/figureSkating/README.md deleted file mode 100644 index bfaa0743..00000000 --- a/Challenge/uhj1993/figureSkating/README.md +++ /dev/null @@ -1,41 +0,0 @@ -# 문제제목 - -## 설명 - -점수를 계산해서 점수가 높은 순으로 name과 score를 가진 객체의 배열을 출력하세요. -단 실격자는 출력하지 않습니다. - -### 피겨 점수 기준 - -피겨 점수는 ‘기술점수(TES)+예술점수(PCS)-감점’으로 구성된다. - -기술점수(TES·Total Element Score)는 기본점수에 수행점수(GOE·Grade Of Execution)를 합산해 도출한다. - -심판은 선수들이 점프와 스핀의 기술을 제대로 수행하는지 살핀다. 점프에선 회전수를 제대로 지켰는지, 에지를 제대로 사용했는지에 따라 ‘롱 에지’(잘못된 에지 사용)나 ‘다운그레이드’(난이도 하락), ‘어텐션’(주의) 등의 판정을 내린다. 스핀과 스텝시퀀스에 붙는 레벨(1~4)도 이들이 결정한다. - -9명의 심판은 선수들이 미리 제출한 연기 구성표를 기준으로 과제별 기본점수에서 가·감점을 한다. 이른바 ‘GOE’라 불리는 수행점수다. - -쇼트프로그램은 점프 3개, 스핀 3개, 스텝 1개의 수행과제가 반드시 포함돼야 한다. - -예술점수(PCS·Total Program Component Score)는 프로그램의 완성도에 영향을 미치는 스케이팅 기술·동작의 연결·연기·안무·곡 해석 등 5가지를 평가한다. - -마지막으로 감점이 반영된다. 감점 항목이 발생할 때마다 1점씩 감점된다. - -원문보기: -http://news.khan.co.kr/kh_news/khan_art_view.html?art_id=201402172146545#csidx6329aebb6a02152bca884614a7f0544 - -### 판정 기준 - -* 점수가 가장 높은 사람이 1등이다. -* 점수는 기술점수(TES) + 예술점수(PCS) - 감점 으로 구성된다. -* 기술점수(TES)는 기본점수 * 수행점수(GOE)를 합산해 도출한다. -* 필수 수행과제를 수행하지 못했을 시 실격이다. - -### 필수 수행과제 - -* 쇼트프로그램은 점프 3개, 스핀 3개, 스텝 1개의 수행과제가 반드시 포함돼야 한다. -* 점프와 스핀을 4번 이상 수행했을 시 가장 잘한 3개를 기준으로 한다. - -## Expected Output - -[ { name: '김연아', score: 1055 }, { name: '아사다 마오', score: 999 } ] diff --git a/Challenge/uhj1993/figureSkating/solve.js b/Challenge/uhj1993/figureSkating/solve.js deleted file mode 100644 index 1c0a8a7b..00000000 --- a/Challenge/uhj1993/figureSkating/solve.js +++ /dev/null @@ -1,90 +0,0 @@ -// 기본 점수 -const baseScore = { - jump: 10, - spin: 20, - step: 15, -}; - -const baseAssignment = { - jump: 3, - spin: 3, - step: 1, -}; - -const inputArray = [ - { - name: "김연아", - goe: { - jump: [10, 9, 10], - spin: [10, 10, 10], - step: [9], - }, - pcs: 30, - penalty: 0, - }, - { - name: "피겨의 신", - goe: { - jump: [10000, 10000], - spin: [10000, 10000, 10000], - step: [10000], - }, - pcs: 100000, - penalty: 0, - }, - { - name: "아사다 마오", - goe: { - jump: [9, 6, 8, 9], - spin: [9, 9, 9], - step: [8], - }, - pcs: 29, - penalty: 10, - }, -]; - -// write your codes - -// 실격자 구분 -let dq = inputArray.filter((item) => { - if ( - item.goe.jump.length >= baseAssignment.jump && - item.goe.spin.length >= baseAssignment.spin && - item.goe.step.length >= baseAssignment.step - ) { - return true; - } -}); - -// 점수 계산 -let calculScore = dq.map((item) => { - const { name, goe, pcs, penalty } = item; - const { jump, spin, step } = goe; - - let jumpCount = jump.reduce((a, b) => { - return a + b * baseScore.jump; - }, 0); - - let spinCount = spin.reduce((a, b) => { - return a + b * baseScore.spin; - }, 0); - - let stepCount = step.reduce((a, b) => { - return a + b * baseScore.step; - }, 0); - - let tes = jumpCount + spinCount + stepCount; - - return { - name, - score: tes + pcs - penalty, - }; -}); - -// 순위 계산 -const result = calculScore.sort((a, b) => { - b.sort - a.sorts; -}); - -console.log(result); diff --git a/Challenge/uhj1993/filterAge/README.md b/Challenge/uhj1993/filterAge/README.md deleted file mode 100644 index 1c73138e..00000000 --- a/Challenge/uhj1993/filterAge/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소의 age가 30이상 50미만인 사람만 있는 객체의 배열을 만드세요 - -## Expected Output - -[ { name: '일미', age: 35 }, { name: '이미', age: 45 } ] diff --git a/Challenge/uhj1993/filterAge/solve.js b/Challenge/uhj1993/filterAge/solve.js deleted file mode 100644 index fb72bf3b..00000000 --- a/Challenge/uhj1993/filterAge/solve.js +++ /dev/null @@ -1,37 +0,0 @@ -const inputArray = [ - { - name: "영미", - age: 25, - }, - { - name: "일미", - age: 35, - }, - { - name: "이미", - age: 45, - }, - { - name: "삼미", - age: 55, - }, -]; -// write your codes - -// 1. else 조건이 없을 땐 undefined가 return되며 false와 같은 의미로 해석되기 때문에 좋은 방식은 아님 -// item.age >= 30 && item.age < 50 의 return값이 true or false 이므로 2번 방식으로 코딩하자 - -// const result = inputArray.filter((item) => { -// if (item.age >= 30 && item.age < 50) { -// return true; -// } else { -// return false; -// } -// }); - -// 2. 아예 조건을 return 해주자. -const result = inputArray.filter((item) => { - return item.age >= 30 && item.age < 50; -}); - -console.log(result); diff --git a/Challenge/uhj1993/filterOdd/README.md b/Challenge/uhj1993/filterOdd/README.md deleted file mode 100644 index 9bf99a18..00000000 --- a/Challenge/uhj1993/filterOdd/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -홀수만 뽑아 배열로 만드세요 - -## Expected Output - -[5, 1, 3] diff --git a/Challenge/uhj1993/filterOdd/solve.js b/Challenge/uhj1993/filterOdd/solve.js deleted file mode 100644 index 673aa81a..00000000 --- a/Challenge/uhj1993/filterOdd/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -const inputArray = [4, 2, 5, 1, 3]; - -// write your codes - -const result = inputArray.filter((item) => { - return item % 2 === 1; -}); - -console.log(result); diff --git a/Challenge/uhj1993/findWord/README.md b/Challenge/uhj1993/findWord/README.md deleted file mode 100644 index 8ef123f4..00000000 --- a/Challenge/uhj1993/findWord/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -용가리라는 단어가 있으면 true 없으면 false를 출력 - -## Expected Output - -true diff --git a/Challenge/uhj1993/findWord/solve.js b/Challenge/uhj1993/findWord/solve.js deleted file mode 100644 index 1ea57c7c..00000000 --- a/Challenge/uhj1993/findWord/solve.js +++ /dev/null @@ -1,7 +0,0 @@ -const inputArray = ["잠", "자", "고", "싶", "다", "용가리"]; - -// write your codes - -const result = inputArray.includes("용가리"); - -console.log(result); diff --git a/Challenge/uhj1993/forEachFilter/README.md b/Challenge/uhj1993/forEachFilter/README.md deleted file mode 100644 index d826e8e6..00000000 --- a/Challenge/uhj1993/forEachFilter/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소중 40 이상인 수만 뽑아 배열을 만드세요. - -## Expected Output - -[ 100, 40 ] diff --git a/Challenge/uhj1993/forEachFilter/solve.js b/Challenge/uhj1993/forEachFilter/solve.js deleted file mode 100644 index 57872ef3..00000000 --- a/Challenge/uhj1993/forEachFilter/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes - -const result = inputArray.filter((item) => { - return item >= 40; -}); - -console.log(result); diff --git a/Challenge/uhj1993/forEachFilterIsNaN/README.md b/Challenge/uhj1993/forEachFilterIsNaN/README.md deleted file mode 100644 index ba71774d..00000000 --- a/Challenge/uhj1993/forEachFilterIsNaN/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소중 숫자인 원소만 뽑아 배열을 만드세요. - -## Expected Output - -[ 1, 40, 51.5, 88 ] diff --git a/Challenge/uhj1993/forEachFilterIsNaN/solve.js b/Challenge/uhj1993/forEachFilterIsNaN/solve.js deleted file mode 100644 index fe118cf5..00000000 --- a/Challenge/uhj1993/forEachFilterIsNaN/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -const inputArray = [1, 40, "라매", "개발자", 51.5, "a", 88]; - -// write your codes - -const result = inputArray.filter((item) => { - return typeof item === "number"; -}); - -console.log(result); diff --git a/Challenge/uhj1993/forEachMap/README.md b/Challenge/uhj1993/forEachMap/README.md deleted file mode 100644 index d0e84215..00000000 --- a/Challenge/uhj1993/forEachMap/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# forEachReduce - -## 설명 - -forEach 메소드를 사용해서 배열의 각 원소 끝에 '%'를 붙인 문자열 배열을 출력하세요 - -## Expected Output - -[ '100%', '10%', '20%', '40%' ] diff --git a/Challenge/uhj1993/forEachMap/solve.js b/Challenge/uhj1993/forEachMap/solve.js deleted file mode 100644 index d9119368..00000000 --- a/Challenge/uhj1993/forEachMap/solve.js +++ /dev/null @@ -1,7 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes - -const arr = []; -inputArray.forEach((item) => arr.push(item + "%")); -console.log(arr); diff --git a/Challenge/uhj1993/forEachReduce/README.md b/Challenge/uhj1993/forEachReduce/README.md deleted file mode 100644 index 8f369ed9..00000000 --- a/Challenge/uhj1993/forEachReduce/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# forEachReduce - -## 설명 - -forEach 메소드를 사용해서 배열의 총 합을 출력하는 코드를 작성하세요 - -## Expected Output - -170 diff --git a/Challenge/uhj1993/forEachReduce/solve.js b/Challenge/uhj1993/forEachReduce/solve.js deleted file mode 100644 index 9606d579..00000000 --- a/Challenge/uhj1993/forEachReduce/solve.js +++ /dev/null @@ -1,7 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes -let result = 0; -inputArray.forEach((item) => (result += item)); - -console.log(result); diff --git a/Challenge/uhj1993/mapAddPercent/README.md b/Challenge/uhj1993/mapAddPercent/README.md deleted file mode 100644 index 4156a2f9..00000000 --- a/Challenge/uhj1993/mapAddPercent/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -map 메소드를 사용해 배열 각각 숫자 뒤에 %를 붙인 문자열을 만드세요 - -## Expected Output - -['100%', '10%', '20%', '40%'] diff --git a/Challenge/uhj1993/mapAddPercent/solve.js b/Challenge/uhj1993/mapAddPercent/solve.js deleted file mode 100644 index 61e43d77..00000000 --- a/Challenge/uhj1993/mapAddPercent/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes - -const result = inputArray.map((item) => item + "%"); -console.log(result); diff --git a/Challenge/uhj1993/mapAppendOrder/README.md b/Challenge/uhj1993/mapAppendOrder/README.md deleted file mode 100644 index fccb0d1a..00000000 --- a/Challenge/uhj1993/mapAppendOrder/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# 문제제목 - -## 설명 - -배열의 값을 name 프로퍼티에 넣고 몇번째 원소인지를 order에 넣은 객체의 배열을 출력하세요 - -## Expected Output - -[ - { name: '홍길동', order: 1 }, - { name: '둘리', order: 2 }, - { name: '루피', order: 3 } -] diff --git a/Challenge/uhj1993/mapAppendOrder/solve.js b/Challenge/uhj1993/mapAppendOrder/solve.js deleted file mode 100644 index 6129f15a..00000000 --- a/Challenge/uhj1993/mapAppendOrder/solve.js +++ /dev/null @@ -1,12 +0,0 @@ -const inputArray = ["홍길동", "둘리", "루피"]; - -// write your codes - -const result = inputArray.map((item, index) => { - return { - name: item, - order: index + 1, - }; -}); - -console.log(result); diff --git a/Challenge/uhj1993/reduceMaxValueNIndex/README.md b/Challenge/uhj1993/reduceMaxValueNIndex/README.md deleted file mode 100644 index 02a22b52..00000000 --- a/Challenge/uhj1993/reduceMaxValueNIndex/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -reduce 메소드를 사용해 최댓값의 값을 maxValue에, 해당 값의 index를 idx에 넣은 객체를 출력하세요 - -## Expected Output - -{ maxValue: 85, idx: 7 }. diff --git a/Challenge/uhj1993/reduceMaxValueNIndex/solve.js b/Challenge/uhj1993/reduceMaxValueNIndex/solve.js deleted file mode 100644 index 8151af6a..00000000 --- a/Challenge/uhj1993/reduceMaxValueNIndex/solve.js +++ /dev/null @@ -1,19 +0,0 @@ -const inputArray = [3, 29, 38, 12, 57, 74, 40, 85, 61]; - -// write your codes - -// 1번풀이 -const result1 = inputArray.reduce((acc, cur, idx) => { - if (acc.maxValue > cur) { - return acc; - } - return { maxValue: cur, idx }; -}); - -// 2번풀이 -const result2 = inputArray.reduce((acc, cur, idx) => { - return acc > cur ? { maxValue: acc, idx: idx - 1 } : cur; -}); - -console.log(result1); -console.log(result2); diff --git a/Challenge/uhj1993/reduceNameNickname/README.md b/Challenge/uhj1993/reduceNameNickname/README.md deleted file mode 100644 index aeaf5b31..00000000 --- a/Challenge/uhj1993/reduceNameNickname/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -입력받은 객채배열의 nickname을 key, name을 value로 하는 객체를 출력하세요 - -## Expected Output - -{ hong: '홍길동', '2li': '둘리', '1Cin': '오스트랄로피테쿠스' } diff --git a/Challenge/uhj1993/reduceNameNickname/solve.js b/Challenge/uhj1993/reduceNameNickname/solve.js deleted file mode 100644 index 797b4c61..00000000 --- a/Challenge/uhj1993/reduceNameNickname/solve.js +++ /dev/null @@ -1,22 +0,0 @@ -const inputArray = [ - { - name: "홍길동", - nickname: "hong", - }, - { - name: "둘리", - nickname: "2li", - }, - { - name: "오스트랄로피테쿠스", - nickname: "1Cin", - }, -]; - -// write your codes - -const result = inputArray.reduce((acc, cur) => { - return { ...acc, [cur.nickname]: cur.name }; -}, []); - -console.log(result); diff --git a/Challenge/uhj1993/reduceSum/README.md b/Challenge/uhj1993/reduceSum/README.md deleted file mode 100644 index 8c607eb2..00000000 --- a/Challenge/uhj1993/reduceSum/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -reduce 메소드를 사용해서 배열의 모든 수의 합을 구하세요. - -## Expected Output - -106 diff --git a/Challenge/uhj1993/reduceSum/solve.js b/Challenge/uhj1993/reduceSum/solve.js deleted file mode 100644 index c428a7a6..00000000 --- a/Challenge/uhj1993/reduceSum/solve.js +++ /dev/null @@ -1,7 +0,0 @@ -const inputArray = [10, 3, 20, 5, 8, 60]; - -// write your codes - -const result = inputArray.reduce((acc, cur) => acc + cur); - -console.log(result); diff --git a/Challenge/uhj1993/sortByPrice/README.md b/Challenge/uhj1993/sortByPrice/README.md deleted file mode 100644 index b1ccf70e..00000000 --- a/Challenge/uhj1993/sortByPrice/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 - -## Expected Output - -[ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 } -] diff --git a/Challenge/uhj1993/sortByPrice/solve.js b/Challenge/uhj1993/sortByPrice/solve.js deleted file mode 100644 index dd5e6ac3..00000000 --- a/Challenge/uhj1993/sortByPrice/solve.js +++ /dev/null @@ -1,14 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.sort((a, b) => { - return a.price - b.price; - // if (a.price > b.price) { - // return 1; - // } else if (a.price < b.price) { - // return -1; - // } - // return 0; - }); -} - -exports.solution = solution; diff --git a/Challenge/uhj1993/sortByPrice/solve.test.js b/Challenge/uhj1993/sortByPrice/solve.test.js deleted file mode 100644 index 3d6a3431..00000000 --- a/Challenge/uhj1993/sortByPrice/solve.test.js +++ /dev/null @@ -1,34 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '사과', - price: 1000, - }, - { - name: '수박', - price: 5000, - }, - { - name: '당근', - price: 2000, - }, - { - name: '참외', - price: 10000, - }, - ], - answer: [ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 }, - ], -}; - -describe('sortByPrice', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/uhj1993/sortByPriceAndQuantity/README.md b/Challenge/uhj1993/sortByPriceAndQuantity/README.md deleted file mode 100644 index 41cd5c95..00000000 --- a/Challenge/uhj1993/sortByPriceAndQuantity/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 -만약 price가 같다면 quantity기준으로 오름차순 정렬하세요 - -## Expected Output - -[ - { name: '사과', price: 1000, quantity: 2 }, - { name: '오이', price: 2000, quantity: 49 }, - { name: '당근', price: 2000, quantity: 50 }, - { name: '참외', price: 5000, quantity: 10 }, - { name: '수박', price: 5000, quantity: 20 } -] diff --git a/Challenge/uhj1993/sortByPriceAndQuantity/solve.js b/Challenge/uhj1993/sortByPriceAndQuantity/solve.js deleted file mode 100644 index 701d794b..00000000 --- a/Challenge/uhj1993/sortByPriceAndQuantity/solve.js +++ /dev/null @@ -1,12 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.sort((a, b) => { - if (a.price != b.price) { - return a.price - b.price; - } else { - return a.quantity - b.quantity; - } - }); -} - -exports.solution = solution; diff --git a/Challenge/uhj1993/sortByPriceAndQuantity/solve.test.js b/Challenge/uhj1993/sortByPriceAndQuantity/solve.test.js deleted file mode 100644 index 424f42b7..00000000 --- a/Challenge/uhj1993/sortByPriceAndQuantity/solve.test.js +++ /dev/null @@ -1,44 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '사과', - price: 1000, - quantity: 2, - }, - { - name: '수박', - price: 5000, - quantity: 20, - }, - { - name: '당근', - price: 2000, - quantity: 50, - }, - { - name: '참외', - price: 5000, - quantity: 10, - }, - { - name: '오이', - price: 2000, - quantity: 49, - }, - ], - answer: [ - { name: '사과', price: 1000, quantity: 2 }, - { name: '오이', price: 2000, quantity: 49 }, - { name: '당근', price: 2000, quantity: 50 }, - { name: '참외', price: 5000, quantity: 10 }, - { name: '수박', price: 5000, quantity: 20 }, - ], -}; - -describe('sortByPriceAndQuantity', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/uhj1993/spreadOperatorMaxValue/README.md b/Challenge/uhj1993/spreadOperatorMaxValue/README.md deleted file mode 100644 index 164b68a1..00000000 --- a/Challenge/uhj1993/spreadOperatorMaxValue/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -Spread Operator를 이용해서 값의 최대, 최소값을 구하세요 diff --git a/Challenge/uhj1993/spreadOperatorMaxValue/solve.js b/Challenge/uhj1993/spreadOperatorMaxValue/solve.js deleted file mode 100644 index 49c5cf13..00000000 --- a/Challenge/uhj1993/spreadOperatorMaxValue/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return `max : ${Math.max(...inputArray)}, min : ${Math.min(...inputArray)}`; -} - -exports.solution = solution; diff --git a/Challenge/uhj1993/spreadOperatorMaxValue/solve.test.js b/Challenge/uhj1993/spreadOperatorMaxValue/solve.test.js deleted file mode 100644 index 5358e190..00000000 --- a/Challenge/uhj1993/spreadOperatorMaxValue/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require("./solve"); - -const test1 = { - input: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], - answer: "max : 10, min : 1", -}; - -describe("spreadOperatorMaxValue", () => { - test("test1", () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/vsakurav1/expDivOdd/README.md b/Challenge/vsakurav1/expDivOdd/README.md deleted file mode 100644 index ca68f81d..00000000 --- a/Challenge/vsakurav1/expDivOdd/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -제곱한 후 3으로 나눈 나머지가 홀수인 것의 총 합을 구하세요. - -## Expected Output - -66 diff --git a/Challenge/vsakurav1/expDivOdd/solve.js b/Challenge/vsakurav1/expDivOdd/solve.js deleted file mode 100644 index 1e0f666b..00000000 --- a/Challenge/vsakurav1/expDivOdd/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -const inputArray = [1, 7, 3, 4, 6]; - -// write your codes -const result = inputArray - .map(number => number * number) - .filter(item => item % 3 !== 0) - .reduce((acc, crr) => acc + crr, 0); - -console.log(result); diff --git a/Challenge/vsakurav1/filterAge/README.md b/Challenge/vsakurav1/filterAge/README.md deleted file mode 100644 index 1c73138e..00000000 --- a/Challenge/vsakurav1/filterAge/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소의 age가 30이상 50미만인 사람만 있는 객체의 배열을 만드세요 - -## Expected Output - -[ { name: '일미', age: 35 }, { name: '이미', age: 45 } ] diff --git a/Challenge/vsakurav1/filterAge/solve.js b/Challenge/vsakurav1/filterAge/solve.js deleted file mode 100644 index 30b19bc9..00000000 --- a/Challenge/vsakurav1/filterAge/solve.js +++ /dev/null @@ -1,22 +0,0 @@ -const inputArray = [ - { - name: '영미', - age: 25, - }, - { - name: '일미', - age: 35, - }, - { - name: '이미', - age: 45, - }, - { - name: '삼미', - age: 55, - }, -]; -// write your codes - -const result = inputArray.filter(item => item.age >= 30 && item.age < 50); -console.log(result); diff --git a/Challenge/vsakurav1/filterOdd/README.md b/Challenge/vsakurav1/filterOdd/README.md deleted file mode 100644 index 9bf99a18..00000000 --- a/Challenge/vsakurav1/filterOdd/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -홀수만 뽑아 배열로 만드세요 - -## Expected Output - -[5, 1, 3] diff --git a/Challenge/vsakurav1/filterOdd/solve.js b/Challenge/vsakurav1/filterOdd/solve.js deleted file mode 100644 index 546adf74..00000000 --- a/Challenge/vsakurav1/filterOdd/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -const inputArray = [4, 2, 5, 1, 3]; - -// write your codes -const result = inputArray.filter(number => number % 2 !== 0); - -console.log(result); diff --git a/Challenge/vsakurav1/forEachFilter/README.md b/Challenge/vsakurav1/forEachFilter/README.md deleted file mode 100644 index d826e8e6..00000000 --- a/Challenge/vsakurav1/forEachFilter/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소중 40 이상인 수만 뽑아 배열을 만드세요. - -## Expected Output - -[ 100, 40 ] diff --git a/Challenge/vsakurav1/forEachFilter/solve.js b/Challenge/vsakurav1/forEachFilter/solve.js deleted file mode 100644 index df422265..00000000 --- a/Challenge/vsakurav1/forEachFilter/solve.js +++ /dev/null @@ -1,11 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes -const result = []; -inputArray.forEach(number => { - if (number >= 40) { - result.push(number); - } -}); - -console.log(result); diff --git a/Challenge/vsakurav1/forEachFilterIsNaN/README.md b/Challenge/vsakurav1/forEachFilterIsNaN/README.md deleted file mode 100644 index ba71774d..00000000 --- a/Challenge/vsakurav1/forEachFilterIsNaN/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소중 숫자인 원소만 뽑아 배열을 만드세요. - -## Expected Output - -[ 1, 40, 51.5, 88 ] diff --git a/Challenge/vsakurav1/forEachFilterIsNaN/solve.js b/Challenge/vsakurav1/forEachFilterIsNaN/solve.js deleted file mode 100644 index 6d7c3420..00000000 --- a/Challenge/vsakurav1/forEachFilterIsNaN/solve.js +++ /dev/null @@ -1,11 +0,0 @@ -const inputArray = [1, 40, '라매', '개발자', 51.5, 'a', 88]; - -// write your codes -const result = []; -inputArray.forEach(item => { - if (!isNaN(item)) { - result.push(item); - } -}); - -console.log(result); diff --git a/Challenge/vsakurav1/forEachMap/README.md b/Challenge/vsakurav1/forEachMap/README.md deleted file mode 100644 index d0e84215..00000000 --- a/Challenge/vsakurav1/forEachMap/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# forEachReduce - -## 설명 - -forEach 메소드를 사용해서 배열의 각 원소 끝에 '%'를 붙인 문자열 배열을 출력하세요 - -## Expected Output - -[ '100%', '10%', '20%', '40%' ] diff --git a/Challenge/vsakurav1/forEachMap/solve.js b/Challenge/vsakurav1/forEachMap/solve.js deleted file mode 100644 index c455ce03..00000000 --- a/Challenge/vsakurav1/forEachMap/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes -const result = []; -inputArray.forEach(item => { - result.push(item + '%'); -}); - -console.log(result); diff --git a/Challenge/vsakurav1/forEachReduce/README.md b/Challenge/vsakurav1/forEachReduce/README.md deleted file mode 100644 index 8f369ed9..00000000 --- a/Challenge/vsakurav1/forEachReduce/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# forEachReduce - -## 설명 - -forEach 메소드를 사용해서 배열의 총 합을 출력하는 코드를 작성하세요 - -## Expected Output - -170 diff --git a/Challenge/vsakurav1/forEachReduce/solve.js b/Challenge/vsakurav1/forEachReduce/solve.js deleted file mode 100644 index 52775c00..00000000 --- a/Challenge/vsakurav1/forEachReduce/solve.js +++ /dev/null @@ -1,7 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes -let sum = 0; -inputArray.forEach(number => (sum += number)); - -console.log(sum); diff --git a/Challenge/vsakurav1/mapAddPercent/README.md b/Challenge/vsakurav1/mapAddPercent/README.md deleted file mode 100644 index 4156a2f9..00000000 --- a/Challenge/vsakurav1/mapAddPercent/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -map 메소드를 사용해 배열 각각 숫자 뒤에 %를 붙인 문자열을 만드세요 - -## Expected Output - -['100%', '10%', '20%', '40%'] diff --git a/Challenge/vsakurav1/mapAddPercent/solve.js b/Challenge/vsakurav1/mapAddPercent/solve.js deleted file mode 100644 index f488d8b2..00000000 --- a/Challenge/vsakurav1/mapAddPercent/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes -const result = inputArray.map(item => item + '%'); - -console.log(result); diff --git a/Challenge/vsakurav1/mapAppendOrder/README.md b/Challenge/vsakurav1/mapAppendOrder/README.md deleted file mode 100644 index fccb0d1a..00000000 --- a/Challenge/vsakurav1/mapAppendOrder/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# 문제제목 - -## 설명 - -배열의 값을 name 프로퍼티에 넣고 몇번째 원소인지를 order에 넣은 객체의 배열을 출력하세요 - -## Expected Output - -[ - { name: '홍길동', order: 1 }, - { name: '둘리', order: 2 }, - { name: '루피', order: 3 } -] diff --git a/Challenge/vsakurav1/mapAppendOrder/solve.js b/Challenge/vsakurav1/mapAppendOrder/solve.js deleted file mode 100644 index 9ec43d8a..00000000 --- a/Challenge/vsakurav1/mapAppendOrder/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -const inputArray = ['홍길동', '둘리', '루피']; - -// write your codes -const result = inputArray.map((name, index) => ({ name, order: index + 1 })); - -console.log(result); diff --git a/Challenge/vsakurav1/reduceSum/README.md b/Challenge/vsakurav1/reduceSum/README.md deleted file mode 100644 index 8c607eb2..00000000 --- a/Challenge/vsakurav1/reduceSum/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -reduce 메소드를 사용해서 배열의 모든 수의 합을 구하세요. - -## Expected Output - -106 diff --git a/Challenge/vsakurav1/reduceSum/solve.js b/Challenge/vsakurav1/reduceSum/solve.js deleted file mode 100644 index ee752188..00000000 --- a/Challenge/vsakurav1/reduceSum/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -const inputArray = [10, 3, 20, 5, 8, 60]; - -// write your codes -const result = inputArray.reduce((acc, crr) => acc + crr, 0); - -console.log(result); diff --git a/Challenge/vsakurav1/sortByPrice/README.md b/Challenge/vsakurav1/sortByPrice/README.md deleted file mode 100644 index b1ccf70e..00000000 --- a/Challenge/vsakurav1/sortByPrice/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 - -## Expected Output - -[ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 } -] diff --git a/Challenge/vsakurav1/sortByPrice/solve.js b/Challenge/vsakurav1/sortByPrice/solve.js deleted file mode 100644 index 47bff3d4..00000000 --- a/Challenge/vsakurav1/sortByPrice/solve.js +++ /dev/null @@ -1,25 +0,0 @@ -const inputArray = [ - { - name: '사과', - price: 1000, - }, - { - name: '수박', - price: 5000, - }, - { - name: '당근', - price: 2000, - }, - { - name: '참외', - price: 10000, - }, -]; - -// write your codes -const result = inputArray - .map(fruits => fruits) - .sort((fruitA, fruitB) => fruitA.price - fruitB.price); - -console.log(result); diff --git a/Challenge/vsakurav1/sortByPriceAndQuantity/README.md b/Challenge/vsakurav1/sortByPriceAndQuantity/README.md deleted file mode 100644 index 41cd5c95..00000000 --- a/Challenge/vsakurav1/sortByPriceAndQuantity/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 -만약 price가 같다면 quantity기준으로 오름차순 정렬하세요 - -## Expected Output - -[ - { name: '사과', price: 1000, quantity: 2 }, - { name: '오이', price: 2000, quantity: 49 }, - { name: '당근', price: 2000, quantity: 50 }, - { name: '참외', price: 5000, quantity: 10 }, - { name: '수박', price: 5000, quantity: 20 } -] diff --git a/Challenge/vsakurav1/sortByPriceAndQuantity/solve.js b/Challenge/vsakurav1/sortByPriceAndQuantity/solve.js deleted file mode 100644 index a8689e02..00000000 --- a/Challenge/vsakurav1/sortByPriceAndQuantity/solve.js +++ /dev/null @@ -1,40 +0,0 @@ -const inputArray = [ - { - name: '사과', - price: 1000, - quantity: 2, - }, - { - name: '수박', - price: 5000, - quantity: 20, - }, - { - name: '당근', - price: 2000, - quantity: 50, - }, - { - name: '참외', - price: 5000, - quantity: 10, - }, - { - name: '오이', - price: 2000, - quantity: 49, - }, -]; - -// write your codes -const result = inputArray - .map(fruits => fruits) - .sort((fruitA, fruitB) => { - if (fruitA.price !== fruitB.price) { - return fruitA.price - fruitB.price; - } else { - return fruitA.quantity - fruitB.quantity; - } - }); - -console.log(result); diff --git a/Challenge/whistleJs/everyArray/README.md b/Challenge/whistleJs/everyArray/README.md deleted file mode 100644 index 442558f6..00000000 --- a/Challenge/whistleJs/everyArray/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -every를 이용해서 모든 원소가 짝수인지 아닌지를 판별하세요 - -## Expected Output - -true \ No newline at end of file diff --git a/Challenge/whistleJs/everyArray/solve.js b/Challenge/whistleJs/everyArray/solve.js deleted file mode 100644 index 9d3df686..00000000 --- a/Challenge/whistleJs/everyArray/solve.js +++ /dev/null @@ -1,5 +0,0 @@ -const solution = (inputArray) => { - return inputArray.every(item => item % 2 === 0); -} - -exports.solution = solution; diff --git a/Challenge/whistleJs/everyArray/solve.test.js b/Challenge/whistleJs/everyArray/solve.test.js deleted file mode 100644 index 7dac26a4..00000000 --- a/Challenge/whistleJs/everyArray/solve.test.js +++ /dev/null @@ -1,21 +0,0 @@ -const { solution } = require("./solve"); - -const test1 = { - input: [2, 4, 6, 8, 10], - answer: true, -}; - -const test2 = { - input: [2, 3, 6, 8, 10], - answer: false, -}; - -describe("everyArray", () => { - test("모두 짝수면 true여야 한다.", () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - - test("홀수가 있으면 false여야 한다.", () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); -}); diff --git a/Challenge/whistleJs/expDivOdd/README.md b/Challenge/whistleJs/expDivOdd/README.md deleted file mode 100644 index c07ab10b..00000000 --- a/Challenge/whistleJs/expDivOdd/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -제곱한 후 3으로 나눈 나머지가 홀수인 것 을 뽑은 배열의 총 합을 구하세요. diff --git a/Challenge/whistleJs/expDivOdd/solve.js b/Challenge/whistleJs/expDivOdd/solve.js deleted file mode 100644 index b17c4de1..00000000 --- a/Challenge/whistleJs/expDivOdd/solve.js +++ /dev/null @@ -1,12 +0,0 @@ -const solution = (inputArray) => { - return inputArray.map(item => { - const result = Math.pow(item, 2); - - // 어차피 3으로 나눈 홀수는 1밖에 없음 - if (result % 3 === 1) return result; - // 조건에 맞지 않는 값은 0으로 반환 - return 0; - }).reduce((total, item) => total + item, 0); // 다 더하기 -} - -exports.solution = solution; diff --git a/Challenge/whistleJs/expDivOdd/solve.test.js b/Challenge/whistleJs/expDivOdd/solve.test.js deleted file mode 100644 index ca37fcc3..00000000 --- a/Challenge/whistleJs/expDivOdd/solve.test.js +++ /dev/null @@ -1,21 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 7, 3, 4, 6], - answer: 66, -}; - -const test2 = { - input: [2, 3, 6, 8, 10], - answer: 168, -}; - -describe('everyArray', () => { - test('1, 7, 3, 4, 6', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - - test('2, 3, 6, 8, 10', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); -}); diff --git a/Challenge/whistleJs/figureSkating/README.md b/Challenge/whistleJs/figureSkating/README.md deleted file mode 100644 index 54b85fbd..00000000 --- a/Challenge/whistleJs/figureSkating/README.md +++ /dev/null @@ -1,35 +0,0 @@ -## 설명 - -점수를 계산해서 점수가 높은 순으로 name과 score를 가진 객체의 배열을 출력하세요. -단 실격자는 출력하지 않습니다. - -### 피겨 점수 기준 - -피겨 점수는 ‘기술점수(TES)+예술점수(PCS)-감점’으로 구성된다. - -기술점수(TES·Total Element Score)는 기본점수에 수행점수(GOE·Grade Of Execution)를 합산해 도출한다. - -심판은 선수들이 점프와 스핀의 기술을 제대로 수행하는지 살핀다. 점프에선 회전수를 제대로 지켰는지, 에지를 제대로 사용했는지에 따라 ‘롱 에지’(잘못된 에지 사용)나 ‘다운그레이드’(난이도 하락), ‘어텐션’(주의) 등의 판정을 내린다. 스핀과 스텝시퀀스에 붙는 레벨(1~4)도 이들이 결정한다. - -9명의 심판은 선수들이 미리 제출한 연기 구성표를 기준으로 과제별 기본점수에서 가·감점을 한다. 이른바 ‘GOE’라 불리는 수행점수다. - -쇼트프로그램은 점프 3개, 스핀 3개, 스텝 1개의 수행과제가 반드시 포함돼야 한다. - -예술점수(PCS·Total Program Component Score)는 프로그램의 완성도에 영향을 미치는 스케이팅 기술·동작의 연결·연기·안무·곡 해석 등 5가지를 평가한다. - -마지막으로 감점이 반영된다. 감점 항목이 발생할 때마다 1점씩 감점된다. - -원문보기: -http://news.khan.co.kr/kh_news/khan_art_view.html?art_id=201402172146545#csidx6329aebb6a02152bca884614a7f0544 - -### 판정 기준 - -- 점수가 가장 높은 사람이 1등이다. -- 점수는 기술점수(TES) + 예술점수(PCS) - 감점 으로 구성된다. -- 기술점수(TES)는 기본점수 \* 수행점수(GOE)를 합산해 도출한다. -- 필수 수행과제를 수행하지 못했을 시 실격이다. - -### 필수 수행과제 - -- 쇼트프로그램은 점프 3개, 스핀 3개, 스텝 1개의 수행과제가 반드시 포함돼야 한다. -- 점프와 스핀을 4번 이상 수행했을 시 가장 잘한 3개를 기준으로 한다. diff --git a/Challenge/whistleJs/figureSkating/solve.js b/Challenge/whistleJs/figureSkating/solve.js deleted file mode 100644 index daf5c128..00000000 --- a/Challenge/whistleJs/figureSkating/solve.js +++ /dev/null @@ -1,36 +0,0 @@ -// 기본 점수 -const baseScore = { - jump: 10, - spin: 20, - step: 15, -}; - -const baseAssignment = { - jump: 3, - spin: 3, - step: 1, -}; - -// write your codes - -const solution = (inputArray) => { - const result = []; - - // 실격자는 제외 - const clearPlayers = inputArray.filter(({ goe }) => goe.jump.length >= baseAssignment.jump && goe.spin.length >= baseAssignment.spin && goe.step.length >= baseAssignment.step); - - clearPlayers.forEach(({ name, pcs, penalty, goe }) => { - let score = pcs - penalty; - - for (const key in goe) { - // 정렬 후 최대 3개까지만 점수 더하기 - score += goe[key].sort((a, b) => a < b ? 1 : -1).slice(0, 3).reduce((total, item) => total + item * baseScore[key], 0); - } - - result.push({ name, score }); - }); - - return result.sort((a, b) => a.score < b.score ? 1 : -1); -} - -exports.solution = solution; diff --git a/Challenge/whistleJs/figureSkating/solve.test.js b/Challenge/whistleJs/figureSkating/solve.test.js deleted file mode 100644 index 7bceadf1..00000000 --- a/Challenge/whistleJs/figureSkating/solve.test.js +++ /dev/null @@ -1,46 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '김연아', - goe: { - jump: [10, 9, 10], - spin: [10, 10, 10], - step: [9], - }, - pcs: 30, - penalty: 0, - }, - { - name: '피겨의 신', - goe: { - jump: [10000, 10000], - spin: [10000, 10000, 10000], - step: [10000], - }, - pcs: 100000, - penalty: 0, - }, - { - name: '아사다 마오', - goe: { - jump: [9, 6, 8, 9], - spin: [9, 9, 9], - step: [8], - }, - pcs: 29, - penalty: 10, - }, - ], - answer: [ - { name: '김연아', score: 1055 }, - { name: '아사다 마오', score: 939 }, - ], -}; - -describe('everyArray', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/whistleJs/filterAge/README.md b/Challenge/whistleJs/filterAge/README.md deleted file mode 100644 index 873a15c1..00000000 --- a/Challenge/whistleJs/filterAge/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소의 age가 30이상 50미만인 사람만 있는 객체의 배열을 만드세요 diff --git a/Challenge/whistleJs/filterAge/solve.js b/Challenge/whistleJs/filterAge/solve.js deleted file mode 100644 index bfa55b69..00000000 --- a/Challenge/whistleJs/filterAge/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -const solution = (inputArray) => { - return inputArray.filter(item => item.age >= 30 && item.age < 50); -} - -exports.solution = solution; diff --git a/Challenge/whistleJs/filterAge/solve.test.js b/Challenge/whistleJs/filterAge/solve.test.js deleted file mode 100644 index b9081601..00000000 --- a/Challenge/whistleJs/filterAge/solve.test.js +++ /dev/null @@ -1,32 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '영미', - age: 25, - }, - { - name: '일미', - age: 35, - }, - { - name: '이미', - age: 45, - }, - { - name: '삼미', - age: 55, - }, - ], - answer: [ - { name: '일미', age: 35 }, - { name: '이미', age: 45 }, - ], -}; - -describe('filterAge', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/whistleJs/filterIntersection/README.md b/Challenge/whistleJs/filterIntersection/README.md deleted file mode 100644 index d7c9ad39..00000000 --- a/Challenge/whistleJs/filterIntersection/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# 문제제목 - -## 설명 - -두 배열의 교집합을 출력하세요! diff --git a/Challenge/whistleJs/filterIntersection/solve.js b/Challenge/whistleJs/filterIntersection/solve.js deleted file mode 100644 index bd7a36eb..00000000 --- a/Challenge/whistleJs/filterIntersection/solve.js +++ /dev/null @@ -1,5 +0,0 @@ -const solution = (inputArray1, inputArray2) => { - return inputArray1.filter(item => inputArray2.includes(item)); -} - -exports.solution = solution; diff --git a/Challenge/whistleJs/filterIntersection/solve.test.js b/Challenge/whistleJs/filterIntersection/solve.test.js deleted file mode 100644 index 576cbc86..00000000 --- a/Challenge/whistleJs/filterIntersection/solve.test.js +++ /dev/null @@ -1,15 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: { - A: [1, 2, 3, 4, 5], - B: [3, 4, 5, 6, 7], - }, - answer: [3, 4, 5], -}; - -describe('filterIntersection', () => { - test('test1', () => { - expect(solution(test1.input.A, test1.input.B)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/whistleJs/filterOdd/README.md b/Challenge/whistleJs/filterOdd/README.md deleted file mode 100644 index cf9eda79..00000000 --- a/Challenge/whistleJs/filterOdd/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -홀수만 뽑아 배열로 만드세요 diff --git a/Challenge/whistleJs/filterOdd/solve.js b/Challenge/whistleJs/filterOdd/solve.js deleted file mode 100644 index 0e15921b..00000000 --- a/Challenge/whistleJs/filterOdd/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -const solution = (inputArray) => { - return inputArray.filter(item => item % 2 === 1); -} - -exports.solution = solution; diff --git a/Challenge/whistleJs/filterOdd/solve.test.js b/Challenge/whistleJs/filterOdd/solve.test.js deleted file mode 100644 index 8cfd7f5a..00000000 --- a/Challenge/whistleJs/filterOdd/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [4, 2, 5, 1, 3], - answer: [5, 1, 3], -}; - -const test2 = { - input: [4, 2, 6, 8, 50, 16], - answer: [], -}; - -const test3 = { - input: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], - answer: [1, 3, 5, 7, 9, 11], -}; - -describe('filterOdd', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/whistleJs/findWord/README.md b/Challenge/whistleJs/findWord/README.md deleted file mode 100644 index 8ef123f4..00000000 --- a/Challenge/whistleJs/findWord/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -용가리라는 단어가 있으면 true 없으면 false를 출력 - -## Expected Output - -true diff --git a/Challenge/whistleJs/findWord/solve.js b/Challenge/whistleJs/findWord/solve.js deleted file mode 100644 index cfef8e0b..00000000 --- a/Challenge/whistleJs/findWord/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -const solution = (inputArray) => { - return inputArray.includes('용가리'); -} - -exports.solution = solution; diff --git a/Challenge/whistleJs/findWord/solve.test.js b/Challenge/whistleJs/findWord/solve.test.js deleted file mode 100644 index 804114f6..00000000 --- a/Challenge/whistleJs/findWord/solve.test.js +++ /dev/null @@ -1,26 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: ['잠', '자', '고', '싶', '다', '용가리'], - answer: true, -}; -const test2 = { - input: ['맛있는', '용가리치킨'], - answer: false, -}; -const test3 = { - input: ['고질라', '용가리 ', '울트라맨'], - answer: false, -}; - -describe('findWord', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); \ No newline at end of file diff --git a/Challenge/whistleJs/forEachFilter/README.md b/Challenge/whistleJs/forEachFilter/README.md deleted file mode 100644 index 6dcbc7c2..00000000 --- a/Challenge/whistleJs/forEachFilter/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소중 40 이상인 수만 뽑아 배열을 만드세요. diff --git a/Challenge/whistleJs/forEachFilter/solve.js b/Challenge/whistleJs/forEachFilter/solve.js deleted file mode 100644 index 2f12e4f5..00000000 --- a/Challenge/whistleJs/forEachFilter/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -const solution = (inputArray) => { - return inputArray.filter(item => item >= 40); -} - -exports.solution = solution; diff --git a/Challenge/whistleJs/forEachFilter/solve.test.js b/Challenge/whistleJs/forEachFilter/solve.test.js deleted file mode 100644 index 3d73b25c..00000000 --- a/Challenge/whistleJs/forEachFilter/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: [100, 40], -}; - -describe('forEachFilter', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/whistleJs/forEachFilterIsNaN/README.md b/Challenge/whistleJs/forEachFilterIsNaN/README.md deleted file mode 100644 index 570c030e..00000000 --- a/Challenge/whistleJs/forEachFilterIsNaN/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열 원소중 숫자인 원소만 뽑아 배열을 만드세요. diff --git a/Challenge/whistleJs/forEachFilterIsNaN/solve.js b/Challenge/whistleJs/forEachFilterIsNaN/solve.js deleted file mode 100644 index 45458e87..00000000 --- a/Challenge/whistleJs/forEachFilterIsNaN/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -const solution = (inputArray) => { - return inputArray.filter(item => typeof item === 'number' && !Number.isNaN(item)); -} - -exports.solution = solution; diff --git a/Challenge/whistleJs/forEachFilterIsNaN/solve.test.js b/Challenge/whistleJs/forEachFilterIsNaN/solve.test.js deleted file mode 100644 index d6e118bb..00000000 --- a/Challenge/whistleJs/forEachFilterIsNaN/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 40, '라매', '개발자', 51.5, 'a', 88], - answer: [1, 40, 51.5, 88], -}; - -const test2 = { - input: [1, 2, 3, '4', 5, '6'], - answer: [1, 2, 3, 5], -}; - -const test3 = { - input: [-3, -2, -1, 0, 1, 2, 3], - answer: [-3, -2, -1, 0, 1, 2, 3], -}; - -describe('forEachFilterIsNaN', () => { - test('test1: 숫자,문자 판별', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2: 문자로된 숫자 판별', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3: 음수 양수 포함', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); \ No newline at end of file diff --git a/Challenge/whistleJs/forEachMap/README.md b/Challenge/whistleJs/forEachMap/README.md deleted file mode 100644 index 1e8e03c8..00000000 --- a/Challenge/whistleJs/forEachMap/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -forEach 메소드를 사용해서 배열의 각 원소 끝에 '%'를 붙인 문자열 배열을 출력하세요 diff --git a/Challenge/whistleJs/forEachMap/solve.js b/Challenge/whistleJs/forEachMap/solve.js deleted file mode 100644 index 3c22028e..00000000 --- a/Challenge/whistleJs/forEachMap/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -// write your codes -const solution = (inputArray) => { - const result = []; - inputArray.forEach(item => result.push(`${item}%`)); - - return result; -} - -exports.solution = solution; diff --git a/Challenge/whistleJs/forEachMap/solve.test.js b/Challenge/whistleJs/forEachMap/solve.test.js deleted file mode 100644 index de4868c6..00000000 --- a/Challenge/whistleJs/forEachMap/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: ['100%', '10%', '20%', '40%'], -}; - -describe('forEachMap', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/whistleJs/forEachReduce/README.md b/Challenge/whistleJs/forEachReduce/README.md deleted file mode 100644 index a984df2d..00000000 --- a/Challenge/whistleJs/forEachReduce/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -forEach 메소드를 사용해서 배열의 총 합을 출력하는 코드를 작성하세요 diff --git a/Challenge/whistleJs/forEachReduce/solve.js b/Challenge/whistleJs/forEachReduce/solve.js deleted file mode 100644 index 34b7feb3..00000000 --- a/Challenge/whistleJs/forEachReduce/solve.js +++ /dev/null @@ -1,9 +0,0 @@ -// write your codes -const solution = (inputArray) => { - let total = 0; - inputArray.forEach(item => total += item); - - return total; -} - -exports.solution = solution; diff --git a/Challenge/whistleJs/forEachReduce/solve.test.js b/Challenge/whistleJs/forEachReduce/solve.test.js deleted file mode 100644 index 397e4b50..00000000 --- a/Challenge/whistleJs/forEachReduce/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: 170, -}; - -const test2 = { - input: [120, -20, -30, 0, 15], - answer: 85, -}; - -const test3 = { - input: [-10, -20, -30], - answer: -60, -}; - -describe('forEachReduce', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2: 음수가 포함된 계산', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3: 음수만 존재하는 계산', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/whistleJs/mapAddPercent/README.md b/Challenge/whistleJs/mapAddPercent/README.md deleted file mode 100644 index 75e73042..00000000 --- a/Challenge/whistleJs/mapAddPercent/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -map 메소드를 사용해 배열 각각 숫자 뒤에 %를 붙인 문자열을 만드세요 diff --git a/Challenge/whistleJs/mapAddPercent/solve.js b/Challenge/whistleJs/mapAddPercent/solve.js deleted file mode 100644 index 28b53073..00000000 --- a/Challenge/whistleJs/mapAddPercent/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -const solution = (inputArray) => { - return inputArray.map(item => `${item}%`); -} - -exports.solution = solution; diff --git a/Challenge/whistleJs/mapAddPercent/solve.test.js b/Challenge/whistleJs/mapAddPercent/solve.test.js deleted file mode 100644 index dac1b3cc..00000000 --- a/Challenge/whistleJs/mapAddPercent/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [100, 10, 20, 40], - answer: ['100%', '10%', '20%', '40%'], -}; - -describe('mapAddPercent', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/whistleJs/mapAppendOrder/README.md b/Challenge/whistleJs/mapAppendOrder/README.md deleted file mode 100644 index 1435623a..00000000 --- a/Challenge/whistleJs/mapAppendOrder/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열의 값을 name 프로퍼티에 넣고 몇번째 원소인지를 order에 넣은 객체의 배열을 출력하세요 diff --git a/Challenge/whistleJs/mapAppendOrder/solve.js b/Challenge/whistleJs/mapAppendOrder/solve.js deleted file mode 100644 index 6da16175..00000000 --- a/Challenge/whistleJs/mapAppendOrder/solve.js +++ /dev/null @@ -1,11 +0,0 @@ -// write your codes -const solution = (inputArray) => { - return inputArray.map((name, order) => { - return { - name, - order: order + 1 - } - }); -} - -exports.solution = solution; diff --git a/Challenge/whistleJs/mapAppendOrder/solve.test.js b/Challenge/whistleJs/mapAppendOrder/solve.test.js deleted file mode 100644 index e08db10c..00000000 --- a/Challenge/whistleJs/mapAppendOrder/solve.test.js +++ /dev/null @@ -1,16 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: ['홍길동', '둘리', '루피'], - answer: [ - { name: '홍길동', order: 1 }, - { name: '둘리', order: 2 }, - { name: '루피', order: 3 }, - ], -}; - -describe('mapAppendOrder', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/whistleJs/recommendAd/README.md b/Challenge/whistleJs/recommendAd/README.md deleted file mode 100644 index 132e8800..00000000 --- a/Challenge/whistleJs/recommendAd/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# 문제제목 - -사용자가 안 본 광고는? - -## 설명 - -유튜브는 사용자가 프리미엄 회원이 아닌 경우 영상 시작이나 중간에 광고가 나오도록 설정되어 있습니다. - -[2020년 유튜브 인기 광고](https://www.thinkwithgoogle.com/intl/ko-kr/marketing-strategies/video/%EB%8C%80%ED%95%9C%EB%AF%BC%EA%B5%AD-youtube-%EC%9D%B8%EA%B8%B0-%EA%B4%91%EA%B3%A0%EC%98%81%EC%83%81-2020%EB%85%84-%EC%97%B0%EB%A7%90%EA%B2%B0%EC%82%B0/)는 총 열 편으로, 사용자의 일주일간 광고 시청 이력을 통해 해당 사용자가 일주일 동안 안 본 광고를 그 다음주에 노출함으로써 광고들이 사용자에게 골고루 노출되길 원합니다. - -유저가 매일 유튜브에 접속하여 하루 한 편 이상의 광고를 보았다고 가정할 때, 이 유저가 안 본 광고는 무엇인지 출력해주세요. - -## Expected Output - -[ '동원F&B' ] diff --git a/Challenge/whistleJs/recommendAd/solve.js b/Challenge/whistleJs/recommendAd/solve.js deleted file mode 100644 index f980dbfb..00000000 --- a/Challenge/whistleJs/recommendAd/solve.js +++ /dev/null @@ -1,18 +0,0 @@ -const userHistory = [ - { date: '2020-11-03', watched: ['KT', 'BBQ'] }, - { date: '2020-11-04', watched: ['정관장', 'KT', '딱좋은데이'] }, - { date: '2020-11-05', watched: ['그랑사가', '농심'] }, - { date: '2020-11-06', watched: ['BBQ'] }, - { date: '2020-11-07', watched: ['쌍용자동차', 'BBQ', 'KT'] }, - { date: '2020-11-08', watched: ['켈로그코리아', '빙그레'] }, - { date: '2020-11-09', watched: ['KT', '그랑사가', '빙그레'] }, -]; - -// write your codes -const solution = (inputArray) => { - const isUserShowAd = Array.from(new Set(userHistory.reduce((total, cur) => [...total, ...cur.watched], []))); - - return inputArray.filter(item => !isUserShowAd.includes(item)); -} - -exports.solution = solution; diff --git a/Challenge/whistleJs/recommendAd/solve.test.js b/Challenge/whistleJs/recommendAd/solve.test.js deleted file mode 100644 index 8a0f6464..00000000 --- a/Challenge/whistleJs/recommendAd/solve.test.js +++ /dev/null @@ -1,23 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - '동원F&B', - '정관장', - 'KT', - 'BBQ', - '그랑사가', - '농심', - '딱좋은데이', - '빙그레', - '쌍용자동차', - '켈로그코리아', - ], - answer: ['동원F&B'], -}; - -describe('recommendAd', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/whistleJs/reduceMaxValueNIndex/README.md b/Challenge/whistleJs/reduceMaxValueNIndex/README.md deleted file mode 100644 index 965bdec6..00000000 --- a/Challenge/whistleJs/reduceMaxValueNIndex/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -reduce 메소드를 사용해 최댓값의 값을 maxValue에, 해당 값의 index를 idx에 넣은 객체를 출력하세요 diff --git a/Challenge/whistleJs/reduceMaxValueNIndex/solve.js b/Challenge/whistleJs/reduceMaxValueNIndex/solve.js deleted file mode 100644 index 6f66e045..00000000 --- a/Challenge/whistleJs/reduceMaxValueNIndex/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -const solution = (inputArray) => { - return inputArray.reduce((result, maxValue, idx) => result.maxValue < maxValue ? { maxValue, idx } : result, { maxValue: Number.MIN_SAFE_INTEGER, idx: 0 }); -} - -exports.solution = solution; diff --git a/Challenge/whistleJs/reduceMaxValueNIndex/solve.test.js b/Challenge/whistleJs/reduceMaxValueNIndex/solve.test.js deleted file mode 100644 index 0daef5b8..00000000 --- a/Challenge/whistleJs/reduceMaxValueNIndex/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [3, 29, 38, 12, 57, 74, 40, 85, 61], - answer: { maxValue: 85, idx: 7 }, -}; - -const test2 = { - input: [-24, -2, -13, -49, -999999, -17], - answer: { maxValue: -2, idx: 1 }, -}; -//최댓값이 중복일 때에는 먼저 나온 최댓값의 인덱스를 유지하도록 설정하였습니다. -const test3 = { - input: [2, -20, 21, -874, 99, -16, -29, 99], - answer: { maxValue: 99, idx: 4 }, -}; - -describe('reduceMaxValueNIndex', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2 : 음수 테스트', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3 : 중복된 최대값 테스트', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/Challenge/whistleJs/reduceNameNickname/README.md b/Challenge/whistleJs/reduceNameNickname/README.md deleted file mode 100644 index b6920e05..00000000 --- a/Challenge/whistleJs/reduceNameNickname/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -입력받은 객채배열의 nickname을 key, name을 value로 하는 객체를 출력하세요 diff --git a/Challenge/whistleJs/reduceNameNickname/solve.js b/Challenge/whistleJs/reduceNameNickname/solve.js deleted file mode 100644 index 9b1c5fae..00000000 --- a/Challenge/whistleJs/reduceNameNickname/solve.js +++ /dev/null @@ -1,11 +0,0 @@ -// write your codes -const solution = (inputArray) => { - return inputArray.reduce((result, cur) => { - return { - ...result, - [cur.nickname]: cur.name - } - }, {}); -} - -exports.solution = solution; diff --git a/Challenge/whistleJs/reduceNameNickname/solve.test.js b/Challenge/whistleJs/reduceNameNickname/solve.test.js deleted file mode 100644 index 67b74529..00000000 --- a/Challenge/whistleJs/reduceNameNickname/solve.test.js +++ /dev/null @@ -1,25 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '홍길동', - nickname: 'hong', - }, - { - name: '둘리', - nickname: '2li', - }, - { - name: '오스트랄로피테쿠스', - nickname: '1Cin', - }, - ], - answer: { hong: '홍길동', '2li': '둘리', '1Cin': '오스트랄로피테쿠스' }, -}; - -describe('reduceNameNickname', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/whistleJs/reduceSum/README.md b/Challenge/whistleJs/reduceSum/README.md deleted file mode 100644 index 8c607eb2..00000000 --- a/Challenge/whistleJs/reduceSum/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -reduce 메소드를 사용해서 배열의 모든 수의 합을 구하세요. - -## Expected Output - -106 diff --git a/Challenge/whistleJs/reduceSum/solve.js b/Challenge/whistleJs/reduceSum/solve.js deleted file mode 100644 index 58274327..00000000 --- a/Challenge/whistleJs/reduceSum/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -const solution = (inputArray) => { - return inputArray.reduce((total, item) => total + item, 0); -} - -exports.solution = solution; diff --git a/Challenge/whistleJs/reduceSum/solve.test.js b/Challenge/whistleJs/reduceSum/solve.test.js deleted file mode 100644 index 046c40cb..00000000 --- a/Challenge/whistleJs/reduceSum/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [10, 3, 20, 5, 8, 60], - answer: 106, -}; - -describe('reduceSum', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/whistleJs/sortByPrice/README.md b/Challenge/whistleJs/sortByPrice/README.md deleted file mode 100644 index b1ccf70e..00000000 --- a/Challenge/whistleJs/sortByPrice/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 - -## Expected Output - -[ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 } -] diff --git a/Challenge/whistleJs/sortByPrice/solve.js b/Challenge/whistleJs/sortByPrice/solve.js deleted file mode 100644 index 0fc48b25..00000000 --- a/Challenge/whistleJs/sortByPrice/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -const solution = (inputArray) => { - return inputArray.sort((a, b) => a.price > b.price ? 1 : -1); -} - -exports.solution = solution; diff --git a/Challenge/whistleJs/sortByPrice/solve.test.js b/Challenge/whistleJs/sortByPrice/solve.test.js deleted file mode 100644 index 3d6a3431..00000000 --- a/Challenge/whistleJs/sortByPrice/solve.test.js +++ /dev/null @@ -1,34 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '사과', - price: 1000, - }, - { - name: '수박', - price: 5000, - }, - { - name: '당근', - price: 2000, - }, - { - name: '참외', - price: 10000, - }, - ], - answer: [ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 }, - ], -}; - -describe('sortByPrice', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/whistleJs/sortByPriceAndQuantity/README.md b/Challenge/whistleJs/sortByPriceAndQuantity/README.md deleted file mode 100644 index 41cd5c95..00000000 --- a/Challenge/whistleJs/sortByPriceAndQuantity/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 -만약 price가 같다면 quantity기준으로 오름차순 정렬하세요 - -## Expected Output - -[ - { name: '사과', price: 1000, quantity: 2 }, - { name: '오이', price: 2000, quantity: 49 }, - { name: '당근', price: 2000, quantity: 50 }, - { name: '참외', price: 5000, quantity: 10 }, - { name: '수박', price: 5000, quantity: 20 } -] diff --git a/Challenge/whistleJs/sortByPriceAndQuantity/solve.js b/Challenge/whistleJs/sortByPriceAndQuantity/solve.js deleted file mode 100644 index cb5db659..00000000 --- a/Challenge/whistleJs/sortByPriceAndQuantity/solve.js +++ /dev/null @@ -1,11 +0,0 @@ -// write your codes -const solution = (inputArray) => { - return inputArray.sort((a, b) => { - if (a.price > b.price) return 1 - else if (a.price < b.price) return -1 - else if (a.quantity > b.quantity) return 1 - return -1; - }); -} - -exports.solution = solution; diff --git a/Challenge/whistleJs/sortByPriceAndQuantity/solve.test.js b/Challenge/whistleJs/sortByPriceAndQuantity/solve.test.js deleted file mode 100644 index 424f42b7..00000000 --- a/Challenge/whistleJs/sortByPriceAndQuantity/solve.test.js +++ /dev/null @@ -1,44 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [ - { - name: '사과', - price: 1000, - quantity: 2, - }, - { - name: '수박', - price: 5000, - quantity: 20, - }, - { - name: '당근', - price: 2000, - quantity: 50, - }, - { - name: '참외', - price: 5000, - quantity: 10, - }, - { - name: '오이', - price: 2000, - quantity: 49, - }, - ], - answer: [ - { name: '사과', price: 1000, quantity: 2 }, - { name: '오이', price: 2000, quantity: 49 }, - { name: '당근', price: 2000, quantity: 50 }, - { name: '참외', price: 5000, quantity: 10 }, - { name: '수박', price: 5000, quantity: 20 }, - ], -}; - -describe('sortByPriceAndQuantity', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/whistleJs/spreadOperatorMaxValue/README.md b/Challenge/whistleJs/spreadOperatorMaxValue/README.md deleted file mode 100644 index 164b68a1..00000000 --- a/Challenge/whistleJs/spreadOperatorMaxValue/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -Spread Operator를 이용해서 값의 최대, 최소값을 구하세요 diff --git a/Challenge/whistleJs/spreadOperatorMaxValue/solve.js b/Challenge/whistleJs/spreadOperatorMaxValue/solve.js deleted file mode 100644 index f8965b45..00000000 --- a/Challenge/whistleJs/spreadOperatorMaxValue/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -const solution = (inputArray) => { - return `max : ${Math.max(...inputArray)}, min : ${Math.min(...inputArray)}` -} - -exports.solution = solution; diff --git a/Challenge/whistleJs/spreadOperatorMaxValue/solve.test.js b/Challenge/whistleJs/spreadOperatorMaxValue/solve.test.js deleted file mode 100644 index 26f2abf9..00000000 --- a/Challenge/whistleJs/spreadOperatorMaxValue/solve.test.js +++ /dev/null @@ -1,12 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], - answer: 'max : 10, min : 1', -}; - -describe('spreadOperatorMaxValue', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); -}); diff --git a/Challenge/yongveloper/filterAge/README.md b/Challenge/yongveloper/filterAge/README.md deleted file mode 100644 index 1c73138e..00000000 --- a/Challenge/yongveloper/filterAge/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소의 age가 30이상 50미만인 사람만 있는 객체의 배열을 만드세요 - -## Expected Output - -[ { name: '일미', age: 35 }, { name: '이미', age: 45 } ] diff --git a/Challenge/yongveloper/filterAge/solve.js b/Challenge/yongveloper/filterAge/solve.js deleted file mode 100644 index 562cdc13..00000000 --- a/Challenge/yongveloper/filterAge/solve.js +++ /dev/null @@ -1,22 +0,0 @@ -const inputArray = [ - { - name: '영미', - age: 25, - }, - { - name: '일미', - age: 35, - }, - { - name: '이미', - age: 45, - }, - { - name: '삼미', - age: 55, - }, -]; -// write your codes - -const result = inputArray.filter((user) => user.age >= 30 && user.age <= 50); -console.log(result); diff --git a/Challenge/yongveloper/filterOdd/README.md b/Challenge/yongveloper/filterOdd/README.md deleted file mode 100644 index 9bf99a18..00000000 --- a/Challenge/yongveloper/filterOdd/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -홀수만 뽑아 배열로 만드세요 - -## Expected Output - -[5, 1, 3] diff --git a/Challenge/yongveloper/filterOdd/solve.js b/Challenge/yongveloper/filterOdd/solve.js deleted file mode 100644 index f2b47341..00000000 --- a/Challenge/yongveloper/filterOdd/solve.js +++ /dev/null @@ -1,5 +0,0 @@ -const inputArray = [4, 2, 5, 1, 3]; - -// write your codes -const result = inputArray.filter((number) => number % 2 === 1); -console.log(result); diff --git a/Challenge/yongveloper/findWord/README.md b/Challenge/yongveloper/findWord/README.md deleted file mode 100644 index 8ef123f4..00000000 --- a/Challenge/yongveloper/findWord/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -용가리라는 단어가 있으면 true 없으면 false를 출력 - -## Expected Output - -true diff --git a/Challenge/yongveloper/findWord/solve.js b/Challenge/yongveloper/findWord/solve.js deleted file mode 100644 index 497e115f..00000000 --- a/Challenge/yongveloper/findWord/solve.js +++ /dev/null @@ -1,5 +0,0 @@ -const inputArray = ['잠', '자', '고', '싶', '다', '용가리']; - -// write your codes -const result = inputArray.includes('용가리'); -console.log(result); diff --git a/Challenge/yongveloper/forEachFilter/README.md b/Challenge/yongveloper/forEachFilter/README.md deleted file mode 100644 index d826e8e6..00000000 --- a/Challenge/yongveloper/forEachFilter/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소중 40 이상인 수만 뽑아 배열을 만드세요. - -## Expected Output - -[ 100, 40 ] diff --git a/Challenge/yongveloper/forEachFilter/solve.js b/Challenge/yongveloper/forEachFilter/solve.js deleted file mode 100644 index 23975bf7..00000000 --- a/Challenge/yongveloper/forEachFilter/solve.js +++ /dev/null @@ -1,10 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes -let result = []; -inputArray.forEach((number) => { - if (number >= 40) { - result.push(number); - } -}); -console.log(result); diff --git a/Challenge/yongveloper/forEachFilterIsNaN/README.md b/Challenge/yongveloper/forEachFilterIsNaN/README.md deleted file mode 100644 index ba71774d..00000000 --- a/Challenge/yongveloper/forEachFilterIsNaN/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -배열 원소중 숫자인 원소만 뽑아 배열을 만드세요. - -## Expected Output - -[ 1, 40, 51.5, 88 ] diff --git a/Challenge/yongveloper/forEachFilterIsNaN/solve.js b/Challenge/yongveloper/forEachFilterIsNaN/solve.js deleted file mode 100644 index 1c9e6c22..00000000 --- a/Challenge/yongveloper/forEachFilterIsNaN/solve.js +++ /dev/null @@ -1,11 +0,0 @@ -const inputArray = [1, 40, '라매', '개발자', 51.5, 'a', 88]; - -// write your codes - -const result = []; -inputArray.forEach((item) => { - if (typeof item === 'number') { - result.push(item); - } -}); -console.log(result); diff --git a/Challenge/yongveloper/forEachMap/README.md b/Challenge/yongveloper/forEachMap/README.md deleted file mode 100644 index d0e84215..00000000 --- a/Challenge/yongveloper/forEachMap/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# forEachReduce - -## 설명 - -forEach 메소드를 사용해서 배열의 각 원소 끝에 '%'를 붙인 문자열 배열을 출력하세요 - -## Expected Output - -[ '100%', '10%', '20%', '40%' ] diff --git a/Challenge/yongveloper/forEachMap/solve.js b/Challenge/yongveloper/forEachMap/solve.js deleted file mode 100644 index acc6cf1e..00000000 --- a/Challenge/yongveloper/forEachMap/solve.js +++ /dev/null @@ -1,8 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes -let result = []; -inputArray.forEach((number) => { - result.push(`${number}%`); -}); -console.log(result); diff --git a/Challenge/yongveloper/forEachReduce/README.md b/Challenge/yongveloper/forEachReduce/README.md deleted file mode 100644 index 8f369ed9..00000000 --- a/Challenge/yongveloper/forEachReduce/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# forEachReduce - -## 설명 - -forEach 메소드를 사용해서 배열의 총 합을 출력하는 코드를 작성하세요 - -## Expected Output - -170 diff --git a/Challenge/yongveloper/forEachReduce/solve.js b/Challenge/yongveloper/forEachReduce/solve.js deleted file mode 100644 index c0d380c0..00000000 --- a/Challenge/yongveloper/forEachReduce/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -const inputArray = [100, 10, 20, 40]; - -// write your codes -let result = 0; -inputArray.forEach((number) => (result += number)); -console.log(result); diff --git a/Challenge/yongveloper/reduceSum/README.md b/Challenge/yongveloper/reduceSum/README.md deleted file mode 100644 index 8c607eb2..00000000 --- a/Challenge/yongveloper/reduceSum/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# 문제제목 - -## 설명 - -reduce 메소드를 사용해서 배열의 모든 수의 합을 구하세요. - -## Expected Output - -106 diff --git a/Challenge/yongveloper/reduceSum/solve.js b/Challenge/yongveloper/reduceSum/solve.js deleted file mode 100644 index ac791cf6..00000000 --- a/Challenge/yongveloper/reduceSum/solve.js +++ /dev/null @@ -1,5 +0,0 @@ -const inputArray = [10, 3, 20, 5, 8, 60]; - -// write your codes -const result = inputArray.reduce((acc, cur) => acc + cur); -console.log(result); diff --git a/Challenge/yongveloper/sortByPrice/README.md b/Challenge/yongveloper/sortByPrice/README.md deleted file mode 100644 index b1ccf70e..00000000 --- a/Challenge/yongveloper/sortByPrice/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# 문제제목 - -## 설명 - -배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 - -## Expected Output - -[ - { name: '사과', price: 1000 }, - { name: '당근', price: 2000 }, - { name: '수박', price: 5000 }, - { name: '참외', price: 10000 } -] diff --git a/Challenge/yongveloper/sortByPrice/solve.js b/Challenge/yongveloper/sortByPrice/solve.js deleted file mode 100644 index ef40f2da..00000000 --- a/Challenge/yongveloper/sortByPrice/solve.js +++ /dev/null @@ -1,33 +0,0 @@ -const inputArray = [ - { - name: '사과', - price: 1000, - }, - { - name: '수박', - price: 5000, - }, - { - name: '당근', - price: 2000, - }, - { - name: '참외', - price: 10000, - }, -]; - -// write your codes - -const result = [...inputArray]; -result.sort((a, b) => { - if (a.price > b.price) { - return 1; - } else if (a.price < b.price) { - return -1; - } else { - return 0; - } -}); - -console.log(result); diff --git a/Challenge/youngG124/filterOdd/README.md b/Challenge/youngG124/filterOdd/README.md deleted file mode 100644 index cf9eda79..00000000 --- a/Challenge/youngG124/filterOdd/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -홀수만 뽑아 배열로 만드세요 diff --git a/Challenge/youngG124/filterOdd/solve.js b/Challenge/youngG124/filterOdd/solve.js deleted file mode 100644 index 600d53ab..00000000 --- a/Challenge/youngG124/filterOdd/solve.js +++ /dev/null @@ -1,6 +0,0 @@ -// write your codes -function solution(inputArray) { - return inputArray.filter((item) => item%2 === 1); -} - -exports.solution = solution; \ No newline at end of file diff --git a/Challenge/youngG124/filterOdd/solve.test.js b/Challenge/youngG124/filterOdd/solve.test.js deleted file mode 100644 index 8cfd7f5a..00000000 --- a/Challenge/youngG124/filterOdd/solve.test.js +++ /dev/null @@ -1,28 +0,0 @@ -const { solution } = require('./solve'); - -const test1 = { - input: [4, 2, 5, 1, 3], - answer: [5, 1, 3], -}; - -const test2 = { - input: [4, 2, 6, 8, 50, 16], - answer: [], -}; - -const test3 = { - input: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], - answer: [1, 3, 5, 7, 9, 11], -}; - -describe('filterOdd', () => { - test('test1', () => { - expect(solution(test1.input)).toEqual(test1.answer); - }); - test('test2', () => { - expect(solution(test2.input)).toEqual(test2.answer); - }); - test('test3', () => { - expect(solution(test3.input)).toEqual(test3.answer); - }); -}); diff --git a/package-lock.json b/package-lock.json index 210abadc..7df98473 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,9 @@ "version": "1.0.0", "license": "ISC", "devDependencies": { + "@babel/core": "^7.20.2", + "@babel/preset-env": "^7.20.2", + "babel-jest": "^29.3.1", "jest": "^27.5.1" } }, @@ -25,42 +28,42 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", "dev": true, "dependencies": { - "@babel/highlight": "^7.16.7" + "@babel/highlight": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz", - "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==", + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.1.tgz", + "integrity": "sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.9.tgz", - "integrity": "sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.2.tgz", + "integrity": "sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.9", - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helpers": "^7.17.9", - "@babel/parser": "^7.17.9", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.9", - "@babel/types": "^7.17.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.2", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-module-transforms": "^7.20.2", + "@babel/helpers": "^7.20.1", + "@babel/parser": "^7.20.2", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.2", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -76,37 +79,53 @@ } }, "node_modules/@babel/generator": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.9.tgz", - "integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==", + "version": "7.20.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.4.tgz", + "integrity": "sha512-luCf7yk/cm7yab6CAW1aiFnmEfBJplb/JojV56MYEK7ziWfGmFlTfmL9Ehwfy4gFhbjBfWO1wj7/TuSbVNEEtA==", "dev": true, "dependencies": { - "@babel/types": "^7.17.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" + "@babel/types": "^7.20.2", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/generator/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", + "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", + "dev": true, + "dependencies": { + "@babel/helper-explode-assignable-expression": "^7.18.6", + "@babel/types": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz", - "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", + "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-validator-option": "^7.16.7", - "browserslist": "^4.17.5", + "@babel/compat-data": "^7.20.0", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", "semver": "^6.3.0" }, "engines": { @@ -116,146 +135,303 @@ "@babel/core": "^7.0.0" } }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.2.tgz", + "integrity": "sha512-k22GoYRAHPYr9I+Gvy2ZQlAe5mGy8BqWst2wRt8cwIufWTxrsVshhIBvYNqC80N0GSFWTsqRVexOtfzlgOEDvA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.19.1", + "@babel/helper-split-export-declaration": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz", + "integrity": "sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "regexpu-core": "^5.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", + "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0-0" + } + }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", - "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-explode-assignable-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", + "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", "dev": true, "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", - "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", "dev": true, "dependencies": { - "@babel/template": "^7.16.7", - "@babel/types": "^7.17.0" + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", - "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", + "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", "dev": true, "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", - "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", "dev": true, "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", - "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz", + "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", + "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.17.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", - "@babel/types": "^7.17.0" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", + "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-wrap-function": "^7.18.9", + "@babel/types": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", + "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/traverse": "^7.19.1", + "@babel/types": "^7.19.0" + }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", - "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", + "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", "dev": true, "dependencies": { - "@babel/types": "^7.17.0" + "@babel/types": "^7.20.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", "dev": true, "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, + "node_modules/@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", - "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz", + "integrity": "sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==", "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.19.0", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.0", + "@babel/types": "^7.19.0" + }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", - "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.1.tgz", + "integrity": "sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg==", "dev": true, "dependencies": { - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.9", - "@babel/types": "^7.17.0" + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", - "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-validator-identifier": "^7.18.6", "chalk": "^2.0.0", "js-tokens": "^4.0.0" }, @@ -301,13 +477,13 @@ "node_modules/@babel/highlight/node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, "node_modules/@babel/highlight/node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, "engines": { "node": ">=0.8.0" @@ -316,7 +492,7 @@ "node_modules/@babel/highlight/node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, "engines": { "node": ">=4" @@ -335,9 +511,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.9.tgz", - "integrity": "sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==", + "version": "7.20.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.3.tgz", + "integrity": "sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -346,145 +522,196 @@ "node": ">=6.0.0" } }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", + "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", + "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-proposal-optional-chaining": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.13.0" } }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.1.tgz", + "integrity": "sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-remap-async-to-generator": "^7.18.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "node_modules/@babel/plugin-proposal-class-static-block": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", + "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.12.0" } }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "node_modules/@babel/plugin-proposal-dynamic-import": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", + "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "node_modules/@babel/plugin-proposal-export-namespace-from": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", + "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "node_modules/@babel/plugin-proposal-json-strings": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", + "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "node_modules/@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", + "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz", + "integrity": "sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/compat-data": "^7.20.1", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.20.1" }, "engines": { "node": ">=6.9.0" @@ -493,13 +720,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz", - "integrity": "sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==", + "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" }, "engines": { "node": ">=6.9.0" @@ -508,2449 +736,4424 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/template": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", + "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/traverse": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.9.tgz", - "integrity": "sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.9", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.9", - "@babel/types": "^7.17.0", - "debug": "^4.1.0", - "globals": "^11.1.0" + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", + "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "node_modules/@babel/plugin-proposal-unicode-property-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", "dev": true, "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { - "node": ">=8" + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, - "engines": { - "node": ">=8" + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@jest/console": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", - "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", "dev": true, "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", - "slash": "^3.0.0" + "@babel/helper-plugin-utils": "^7.8.0" }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@jest/core": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", - "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, "dependencies": { - "@jest/console": "^27.5.1", - "@jest/reporters": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.8.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^27.5.1", - "jest-config": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-resolve-dependencies": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "jest-watcher": "^27.5.1", - "micromatch": "^4.0.4", - "rimraf": "^3.0.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "@babel/helper-plugin-utils": "^7.12.13" }, "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "@babel/core": "^7.0.0-0" } }, - "node_modules/@jest/environment": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", - "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "dev": true, "dependencies": { - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1" + "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@jest/fake-timers": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", - "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", "dev": true, "dependencies": { - "@jest/types": "^27.5.1", - "@sinonjs/fake-timers": "^8.0.1", - "@types/node": "*", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" + "@babel/helper-plugin-utils": "^7.8.0" }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@jest/globals": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", - "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", "dev": true, "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/types": "^27.5.1", - "expect": "^27.5.1" + "@babel/helper-plugin-utils": "^7.8.3" }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@jest/reporters": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", - "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", + "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", "dev": true, "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.2", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-haste-map": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "slash": "^3.0.0", - "source-map": "^0.6.0", - "string-length": "^4.0.1", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^8.1.0" + "@babel/helper-plugin-utils": "^7.19.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=6.9.0" }, "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "@babel/core": "^7.0.0-0" } }, - "node_modules/@jest/source-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", - "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", "dev": true, "dependencies": { - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9", - "source-map": "^0.6.0" + "@babel/helper-plugin-utils": "^7.10.4" }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@jest/test-result": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", - "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, "dependencies": { - "@jest/console": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" + "@babel/helper-plugin-utils": "^7.8.0" }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@jest/test-sequencer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", - "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, "dependencies": { - "@jest/test-result": "^27.5.1", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-runtime": "^27.5.1" + "@babel/helper-plugin-utils": "^7.10.4" }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@jest/transform": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", - "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, "dependencies": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.5.1", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-util": "^27.5.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" + "@babel/helper-plugin-utils": "^7.8.0" }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" + "@babel/helper-plugin-utils": "^7.10.4" }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", - "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.11", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", - "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz", - "integrity": "sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==", + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@sinonjs/commons": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", - "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, "dependencies": { - "type-detect": "4.0.8" + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@sinonjs/fake-timers": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", - "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, "dependencies": { - "@sinonjs/commons": "^1.7.0" + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, "engines": { - "node": ">= 6" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/babel__core": { - "version": "7.1.19", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", - "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/babel__generator": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", - "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz", + "integrity": "sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==", "dev": true, "dependencies": { - "@babel/types": "^7.0.0" + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/babel__template": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", - "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", + "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", "dev": true, "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/babel__traverse": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.17.0.tgz", - "integrity": "sha512-r8aveDbd+rzGP+ykSdF3oPuTVRWRfbBiHl0rVDM2yNEmSMXfkObQLV46b4RnCv3Lra51OlfnZhkkFaDl2MIRaA==", + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", + "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", "dev": true, "dependencies": { - "@babel/types": "^7.3.0" + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-remap-async-to-generator": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/graceful-fs": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", - "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", + "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", "dev": true, "dependencies": { - "@types/node": "*" + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "dev": true - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.2.tgz", + "integrity": "sha512-y5V15+04ry69OV2wULmwhEA6jwSWXO1TwAtIwiPXcvHcoOQUqpyMVd2bDsQJMW8AurjulIyUV8kDqtjSwHy1uQ==", "dev": true, "dependencies": { - "@types/istanbul-lib-coverage": "*" + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "node_modules/@babel/plugin-transform-classes": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz", + "integrity": "sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==", "dev": true, "dependencies": { - "@types/istanbul-lib-report": "*" + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-replace-supers": "^7.19.1", + "@babel/helper-split-export-declaration": "^7.18.6", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/node": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.24.tgz", - "integrity": "sha512-aveCYRQbgTH9Pssp1voEP7HiuWlD2jW2BO56w+bVrJn04i61yh6mRfoKO6hEYQD9vF+W8Chkwc6j1M36uPkx4g==", - "dev": true - }, - "node_modules/@types/prettier": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.0.tgz", - "integrity": "sha512-G/AdOadiZhnJp0jXCaBQU449W2h716OW/EoXeYkCytxKL06X1WCXB4DZpp8TpZ8eyIJVS1cw4lrlkkSYU21cDw==", - "dev": true - }, - "node_modules/@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", - "dev": true - }, - "node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", + "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", "dev": true, "dependencies": { - "@types/yargs-parser": "*" + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", - "dev": true - }, - "node_modules/abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "dev": true - }, - "node_modules/acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz", + "integrity": "sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==", "dev": true, - "bin": { - "acorn": "bin/acorn" + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" }, "engines": { - "node": ">=0.4.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", + "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", "dev": true, "dependencies": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/acorn-globals/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", + "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", "dev": true, - "bin": { - "acorn": "bin/acorn" + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" }, "engines": { - "node": ">=0.4.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", + "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", "dev": true, + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, "engines": { - "node": ">=0.4.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", + "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", "dev": true, "dependencies": { - "debug": "4" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { - "node": ">= 6.0.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", + "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", "dev": true, "dependencies": { - "type-fest": "^0.21.3" + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9" }, "engines": { - "node": ">=8" + "node": ">=6.9.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/@babel/plugin-transform-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", + "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, "engines": { - "node": ">=8" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", + "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { - "node": ">=8" + "node": ">=6.9.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz", + "integrity": "sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==", "dev": true, "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0" }, "engines": { - "node": ">= 8" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz", + "integrity": "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==", "dev": true, "dependencies": { - "sprintf-js": "~1.0.2" + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-simple-access": "^7.19.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "node_modules/babel-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", - "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz", + "integrity": "sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==", "dev": true, "dependencies": { - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^27.5.1", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-validator-identifier": "^7.19.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.8.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", + "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { - "node": ">=8" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-plugin-jest-hoist": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", - "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz", + "integrity": "sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==", "dev": true, "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.0.0", - "@types/babel__traverse": "^7.0.6" + "@babel/helper-create-regexp-features-plugin": "^7.19.0", + "@babel/helper-plugin-utils": "^7.19.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", + "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", "dev": true, "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-preset-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", - "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", + "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", "dev": true, "dependencies": { - "babel-plugin-jest-hoist": "^27.5.1", - "babel-preset-current-node-syntax": "^1.0.0" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.20.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.3.tgz", + "integrity": "sha512-oZg/Fpx0YDrj13KsLyO8I/CX3Zdw7z0O9qOd95SqcoIzuqy/WTGWvePeHAnZCN54SfdyjHcb1S30gc8zlzlHcA==", "dev": true, "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", + "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", "dev": true, "dependencies": { - "fill-range": "^7.0.1" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { - "node": ">=8" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true - }, - "node_modules/browserslist": { - "version": "4.20.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.2.tgz", - "integrity": "sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==", + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", + "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], "dependencies": { - "caniuse-lite": "^1.0.30001317", - "electron-to-chromium": "^1.4.84", - "escalade": "^3.1.1", - "node-releases": "^2.0.2", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist": "cli.js" + "@babel/helper-plugin-utils": "^7.18.6", + "regenerator-transform": "^0.15.0" }, "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", + "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", "dev": true, "dependencies": { - "node-int64": "^0.4.0" + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", + "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, "engines": { - "node": ">=6" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "node_modules/@babel/plugin-transform-spread": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", + "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" + }, "engines": { - "node": ">=6" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/caniuse-lite": { - "version": "1.0.30001332", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001332.tgz", - "integrity": "sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - } - ] - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", + "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { - "node": ">=10" + "node": ">=6.9.0" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", + "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, "engines": { - "node": ">=10" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", - "dev": true - }, - "node_modules/cjs-module-lexer": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", - "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", - "dev": true - }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", + "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", "dev": true, "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true, + "@babel/helper-plugin-utils": "^7.18.9" + }, "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/collect-v8-coverage": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", - "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", - "dev": true - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", + "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "@babel/helper-plugin-utils": "^7.18.9" }, "engines": { - "node": ">=7.0.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", + "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", "dev": true, "dependencies": { - "delayed-stream": "~1.0.0" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { - "node": ">= 0.8" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true + "node_modules/@babel/preset-env": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz", + "integrity": "sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.20.1", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-async-generator-functions": "^7.20.1", + "@babel/plugin-proposal-class-properties": "^7.18.6", + "@babel/plugin-proposal-class-static-block": "^7.18.6", + "@babel/plugin-proposal-dynamic-import": "^7.18.6", + "@babel/plugin-proposal-export-namespace-from": "^7.18.9", + "@babel/plugin-proposal-json-strings": "^7.18.6", + "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", + "@babel/plugin-proposal-numeric-separator": "^7.18.6", + "@babel/plugin-proposal-object-rest-spread": "^7.20.2", + "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", + "@babel/plugin-proposal-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-private-methods": "^7.18.6", + "@babel/plugin-proposal-private-property-in-object": "^7.18.6", + "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.20.0", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.18.6", + "@babel/plugin-transform-async-to-generator": "^7.18.6", + "@babel/plugin-transform-block-scoped-functions": "^7.18.6", + "@babel/plugin-transform-block-scoping": "^7.20.2", + "@babel/plugin-transform-classes": "^7.20.2", + "@babel/plugin-transform-computed-properties": "^7.18.9", + "@babel/plugin-transform-destructuring": "^7.20.2", + "@babel/plugin-transform-dotall-regex": "^7.18.6", + "@babel/plugin-transform-duplicate-keys": "^7.18.9", + "@babel/plugin-transform-exponentiation-operator": "^7.18.6", + "@babel/plugin-transform-for-of": "^7.18.8", + "@babel/plugin-transform-function-name": "^7.18.9", + "@babel/plugin-transform-literals": "^7.18.9", + "@babel/plugin-transform-member-expression-literals": "^7.18.6", + "@babel/plugin-transform-modules-amd": "^7.19.6", + "@babel/plugin-transform-modules-commonjs": "^7.19.6", + "@babel/plugin-transform-modules-systemjs": "^7.19.6", + "@babel/plugin-transform-modules-umd": "^7.18.6", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1", + "@babel/plugin-transform-new-target": "^7.18.6", + "@babel/plugin-transform-object-super": "^7.18.6", + "@babel/plugin-transform-parameters": "^7.20.1", + "@babel/plugin-transform-property-literals": "^7.18.6", + "@babel/plugin-transform-regenerator": "^7.18.6", + "@babel/plugin-transform-reserved-words": "^7.18.6", + "@babel/plugin-transform-shorthand-properties": "^7.18.6", + "@babel/plugin-transform-spread": "^7.19.0", + "@babel/plugin-transform-sticky-regex": "^7.18.6", + "@babel/plugin-transform-template-literals": "^7.18.9", + "@babel/plugin-transform-typeof-symbol": "^7.18.9", + "@babel/plugin-transform-unicode-escapes": "^7.18.10", + "@babel/plugin-transform-unicode-regex": "^7.18.6", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.20.2", + "babel-plugin-polyfill-corejs2": "^0.3.3", + "babel-plugin-polyfill-corejs3": "^0.6.0", + "babel-plugin-polyfill-regenerator": "^0.4.1", + "core-js-compat": "^3.25.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } }, - "node_modules/convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "node_modules/@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", "dev": true, "dependencies": { - "safe-buffer": "~5.1.1" + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "node_modules/@babel/runtime": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.1.tgz", + "integrity": "sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg==", "dev": true, "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "regenerator-runtime": "^0.13.10" }, "engines": { - "node": ">= 8" + "node": ">=6.9.0" } }, - "node_modules/cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", - "dev": true - }, - "node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "node_modules/@babel/template": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", "dev": true, "dependencies": { - "cssom": "~0.3.6" + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" }, "engines": { - "node": ">=8" + "node": ">=6.9.0" } }, - "node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - }, - "node_modules/data-urls": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", - "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", - "dev": true, - "dependencies": { - "abab": "^2.0.3", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0" + "node_modules/@babel/traverse": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.1.tgz", + "integrity": "sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.1", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.20.1", + "@babel/types": "^7.20.0", + "debug": "^4.1.0", + "globals": "^11.1.0" }, "engines": { - "node": ">=10" + "node": ">=6.9.0" } }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/@babel/types": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.2.tgz", + "integrity": "sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog==", "dev": true, "dependencies": { - "ms": "2.1.2" + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">=6.9.0" } }, - "node_modules/decimal.js": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", - "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", - "dev": true - }, - "node_modules/dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", - "dev": true - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, - "node_modules/deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, "engines": { - "node": ">=0.4.0" + "node": ">=8" } }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true, "engines": { "node": ">=8" } }, - "node_modules/diff-sequences": { + "node_modules/@jest/console": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", + "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0" + }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/domexception": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", - "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "node_modules/@jest/core": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", + "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", "dev": true, "dependencies": { - "webidl-conversions": "^5.0.0" + "@jest/console": "^27.5.1", + "@jest/reporters": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^27.5.1", + "jest-config": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-resolve-dependencies": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "jest-watcher": "^27.5.1", + "micromatch": "^4.0.4", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/domexception/node_modules/webidl-conversions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.4.111", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.111.tgz", - "integrity": "sha512-/s3+fwhKf1YK4k7btOImOzCQLpUjS6MaPf0ODTNuT4eTM1Bg4itBpLkydhOzJmpmH6Z9eXFyuuK5czsmzRzwtw==", - "dev": true - }, - "node_modules/emittery": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", - "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", - "dev": true, - "engines": { - "node": ">=10" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "node_modules/@jest/environment": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", + "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", "dev": true, "dependencies": { - "is-arrayish": "^0.2.1" + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "node_modules/@jest/fake-timers": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", + "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@sinonjs/fake-timers": "^8.0.1", + "@types/node": "*", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + }, "engines": { - "node": ">=6" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "node_modules/@jest/globals": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", + "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", "dev": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/types": "^27.5.1", + "expect": "^27.5.1" + }, "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/escodegen": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "node_modules/@jest/reporters": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", + "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", "dev": true, "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-haste-map": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^8.1.0" }, "engines": { - "node": ">=6.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" }, - "optionalDependencies": { - "source-map": "~0.6.1" + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "node_modules/@jest/schemas": { + "version": "29.0.0", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.0.0.tgz", + "integrity": "sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==", "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" + "dependencies": { + "@sinclair/typebox": "^0.24.1" }, "engines": { - "node": ">=4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "node_modules/@jest/source-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", + "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", "dev": true, + "dependencies": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9", + "source-map": "^0.6.0" + }, "engines": { - "node": ">=4.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "node_modules/@jest/test-result": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", + "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", "dev": true, + "dependencies": { + "@jest/console": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "node_modules/@jest/test-sequencer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", + "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", "dev": true, "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" + "@jest/test-result": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-runtime": "^27.5.1" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "node_modules/@jest/transform": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", "dev": true, + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.5.1", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, "engines": { - "node": ">= 0.8.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/expect": { + "node_modules/@jest/types": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", - "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", "dev": true, "dependencies": { - "@jest/types": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1" + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "node_modules/fb-watchman": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", - "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", - "dev": true, - "dependencies": { - "bser": "2.1.1" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, "engines": { - "node": ">=8" + "node": ">=6.0.0" } }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": ">=6.0.0" } }, - "node_modules/form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", "dev": true, "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" } }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "node_modules/@sinclair/typebox": { + "version": "0.24.51", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", + "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==", "dev": true }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "node_modules/@sinonjs/commons": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", + "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "dependencies": { + "type-detect": "4.0.8" } }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "node_modules/@sinonjs/fake-timers": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", + "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", "dev": true, - "engines": { - "node": ">=6.9.0" + "dependencies": { + "@sinonjs/commons": "^1.7.0" } }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", "dev": true, "engines": { - "node": "6.* || 8.* || >= 10.*" + "node": ">= 6" } }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "node_modules/@types/babel__core": { + "version": "7.1.20", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.20.tgz", + "integrity": "sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ==", "dev": true, - "engines": { - "node": ">=8.0.0" + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" } }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "node_modules/@types/babel__generator": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "@babel/types": "^7.0.0" } }, - "node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "node_modules/@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" } }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "node_modules/@types/babel__traverse": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.17.0.tgz", + "integrity": "sha512-r8aveDbd+rzGP+ykSdF3oPuTVRWRfbBiHl0rVDM2yNEmSMXfkObQLV46b4RnCv3Lra51OlfnZhkkFaDl2MIRaA==", "dev": true, - "engines": { - "node": ">=4" + "dependencies": { + "@babel/types": "^7.3.0" } }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "node_modules/@types/graceful-fs": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", + "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", "dev": true, "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" + "@types/node": "*" } }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", "dev": true, - "engines": { - "node": ">=8" + "dependencies": { + "@types/istanbul-lib-coverage": "*" } }, - "node_modules/html-encoding-sniffer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", - "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", "dev": true, "dependencies": { - "whatwg-encoding": "^1.0.5" - }, - "engines": { - "node": ">=10" + "@types/istanbul-lib-report": "*" } }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "node_modules/@types/node": { + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.24.tgz", + "integrity": "sha512-aveCYRQbgTH9Pssp1voEP7HiuWlD2jW2BO56w+bVrJn04i61yh6mRfoKO6hEYQD9vF+W8Chkwc6j1M36uPkx4g==", "dev": true }, - "node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } + "node_modules/@types/prettier": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.0.tgz", + "integrity": "sha512-G/AdOadiZhnJp0jXCaBQU449W2h716OW/EoXeYkCytxKL06X1WCXB4DZpp8TpZ8eyIJVS1cw4lrlkkSYU21cDw==", + "dev": true }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "node_modules/@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "dev": true + }, + "node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", "dev": true, "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" + "@types/yargs-parser": "*" } }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "node_modules/@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "dev": true + }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "dev": true + }, + "node_modules/acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", "dev": true, + "bin": { + "acorn": "bin/acorn" + }, "engines": { - "node": ">=10.17.0" + "node": ">=0.4.0" } }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "node_modules/acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", "dev": true, "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" } }, - "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "node_modules/acorn-globals/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", "dev": true, - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, "bin": { - "import-local-fixture": "fixtures/cli.js" + "acorn": "bin/acorn" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.4.0" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "node_modules/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", "dev": true, "engines": { - "node": ">=0.8.19" + "node": ">=0.4.0" } }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" } }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "node_modules/is-core-module": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", - "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, "dependencies": { - "has": "^1.0.3" + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "engines": { "node": ">=8" } }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, "engines": { - "node": ">=0.12.0" + "node": ">= 8" } }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "sprintf-js": "~1.0.2" } }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "node_modules/babel-jest": { + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.3.1.tgz", + "integrity": "sha512-aard+xnMoxgjwV70t0L6wkW/3HQQtV+O0PEimxKgzNqCJnbYmroPojdP2tqKSOAt8QAKV/uSZU8851M7B5+fcA==", "dev": true, + "dependencies": { + "@jest/transform": "^29.3.1", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.2.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" } }, - "node_modules/istanbul-lib-instrument": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz", - "integrity": "sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==", + "node_modules/babel-jest/node_modules/@jest/transform": { + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.3.1.tgz", + "integrity": "sha512-8wmCFBTVGYqFNLWfcOWoVuMuKYPUBTnTMDkdvFtAYELwDOl9RGwOsvQWGPFxDJ8AWY9xM/8xCXdqmPK3+Q5Lug==", "dev": true, "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" + "@babel/core": "^7.11.6", + "@jest/types": "^29.3.1", + "@jridgewell/trace-mapping": "^0.3.15", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.3.1", + "jest-regex-util": "^29.2.0", + "jest-util": "^29.3.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.1" }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "node_modules/babel-jest/node_modules/@jest/types": { + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.3.1.tgz", + "integrity": "sha512-d0S0jmmTpjnhCmNpApgX3jrUZgZ22ivKJRvL2lli5hpCRoNnp1f85r2/wpKfXuYu8E7Jjh1hGfhPyup1NM5AmA==", "dev": true, "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" + "@jest/schemas": "^29.0.0", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "node_modules/babel-jest/node_modules/@types/yargs": { + "version": "17.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.13.tgz", + "integrity": "sha512-9sWaruZk2JGxIQU+IhI1fhPYRcQ0UuTNuKuCW9bR5fp7qi2Llf7WDzNa17Cy7TKnh3cdxDOiyTu6gaLS0eDatg==", "dev": true, "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10" + "@types/yargs-parser": "*" } }, - "node_modules/istanbul-reports": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz", - "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==", + "node_modules/babel-jest/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/babel-jest/node_modules/jest-haste-map": { + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.3.1.tgz", + "integrity": "sha512-/FFtvoG1xjbbPXQLFef+WSU4yrc0fc0Dds6aRPBojUid7qlPqZvxdUBA03HW0fnVHXVCnCdkuoghYItKNzc/0A==", "dev": true, "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" + "@jest/types": "^29.3.1", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.2.0", + "jest-util": "^29.3.1", + "jest-worker": "^29.3.1", + "micromatch": "^4.0.4", + "walker": "^1.0.8" }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" } }, - "node_modules/jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", - "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", + "node_modules/babel-jest/node_modules/jest-regex-util": { + "version": "29.2.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.2.0.tgz", + "integrity": "sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA==", "dev": true, - "dependencies": { - "@jest/core": "^27.5.1", - "import-local": "^3.0.2", - "jest-cli": "^27.5.1" - }, - "bin": { - "jest": "bin/jest.js" - }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-changed-files": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", - "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", + "node_modules/babel-jest/node_modules/jest-util": { + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.3.1.tgz", + "integrity": "sha512-7YOVZaiX7RJLv76ZfHt4nbNEzzTRiMW/IiOG7ZOKmTXmoGBxUDefgMAxQubu6WPVqP5zSzAdZG0FfLcC7HOIFQ==", "dev": true, "dependencies": { - "@jest/types": "^27.5.1", - "execa": "^5.0.0", - "throat": "^6.0.1" + "@jest/types": "^29.3.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-circus": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", - "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", + "node_modules/babel-jest/node_modules/jest-worker": { + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.3.1.tgz", + "integrity": "sha512-lY4AnnmsEWeiXirAIA0c9SDPbuCBq8IYuDVL8PMm0MZ2PEs2yPvRA/J64QBXuZp7CYKrDM/rmNrc9/i3KJQncw==", "dev": true, "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "expect": "^27.5.1", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3", - "throat": "^6.0.1" + "jest-util": "^29.3.1", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-cli": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", - "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", + "node_modules/babel-jest/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "dependencies": { - "@jest/core": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "import-local": "^3.0.2", - "jest-config": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "prompts": "^2.0.1", - "yargs": "^16.2.0" - }, - "bin": { - "jest": "bin/jest.js" + "has-flag": "^4.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + "node": ">=10" }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/jest-config": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", - "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", + "node_modules/babel-jest/node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", "dev": true, "dependencies": { - "@babel/core": "^7.8.0", - "@jest/test-sequencer": "^27.5.1", - "@jest/types": "^27.5.1", - "babel-jest": "^27.5.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.1", - "graceful-fs": "^4.2.9", - "jest-circus": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-jasmine2": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "ts-node": { - "optional": true - } + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", "dev": true, "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=8" } }, - "node_modules/jest-docblock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", - "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", + "node_modules/babel-plugin-jest-hoist": { + "version": "29.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.2.0.tgz", + "integrity": "sha512-TnspP2WNiR3GLfCsUNHqeXw0RoQ2f9U5hQ5L3XFpwuO8htQmSrhh8qsB6vi5Yi8+kuynN1yjDjQsPfkebmB6ZA==", "dev": true, "dependencies": { - "detect-newline": "^3.0.0" + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-each": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", - "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", + "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", "dev": true, "dependencies": { - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1" + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.3", + "semver": "^6.1.1" }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/jest-environment-jsdom": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", - "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz", + "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==", "dev": true, "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1", - "jsdom": "^16.6.0" + "@babel/helper-define-polyfill-provider": "^0.3.3", + "core-js-compat": "^3.25.1" }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/jest-environment-node": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", - "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", + "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", "dev": true, "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" + "@babel/helper-define-polyfill-provider": "^0.3.3" }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/jest-haste-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", - "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "node_modules/babel-preset-jest": { + "version": "29.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.2.0.tgz", + "integrity": "sha512-z9JmMJppMxNv8N7fNRHvhMg9cvIkMxQBXgFkane3yKVEvEOP+kB50lk8DFRvF9PGqbyXxlmebKWhuDORO8RgdA==", "dev": true, "dependencies": { - "@jest/types": "^27.5.1", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^27.5.1", - "jest-serializer": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" + "babel-plugin-jest-hoist": "^29.2.0", + "babel-preset-current-node-syntax": "^1.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, - "optionalDependencies": { - "fsevents": "^2.3.2" + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/jest-jasmine2": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "node_modules/browserslist": { + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.9" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001431", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001431.tgz", + "integrity": "sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/ci-info": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", + "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", + "dev": true + }, + "node_modules/cjs-module-lexer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", + "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", + "dev": true + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true, + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/core-js-compat": { + "version": "3.26.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.1.tgz", + "integrity": "sha512-622/KzTudvXCDLRw70iHW4KKs1aGpcRcowGWyYJr2DEBfRrd6hNJybxSWJFuZYD4ma86xhrwDDHxmDaIq4EA8A==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "node_modules/data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dev": true, + "dependencies": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decimal.js": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", + "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", + "dev": true + }, + "node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", + "dev": true + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/diff-sequences": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "dev": true, + "dependencies": { + "webidl-conversions": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/domexception/node_modules/webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.284", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", + "dev": true + }, + "node_modules/emittery": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", + "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "dev": true, + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "node_modules/fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "dev": true, + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "dev": true, + "dependencies": { + "whatwg-encoding": "^1.0.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "node_modules/is-core-module": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", + "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz", + "integrity": "sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz", + "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", + "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", + "dev": true, + "dependencies": { + "@jest/core": "^27.5.1", + "import-local": "^3.0.2", + "jest-cli": "^27.5.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", + "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "execa": "^5.0.0", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-circus": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", + "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", + "dev": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-cli": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", + "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", + "dev": true, + "dependencies": { + "@jest/core": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "prompts": "^2.0.1", + "yargs": "^16.2.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-config": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", + "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.8.0", + "@jest/test-sequencer": "^27.5.1", + "@jest/types": "^27.5.1", + "babel-jest": "^27.5.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.9", + "jest-circus": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-jasmine2": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-config/node_modules/babel-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", + "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", + "dev": true, + "dependencies": { + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/jest-config/node_modules/babel-plugin-jest-hoist": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", + "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", + "dev": true, + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-config/node_modules/babel-preset-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", + "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", + "dev": true, + "dependencies": { + "babel-plugin-jest-hoist": "^27.5.1", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/jest-diff": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-docblock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", + "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", + "dev": true, + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-each": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", + "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-environment-jsdom": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", + "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", + "dev": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1", + "jsdom": "^16.6.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-environment-node": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", + "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", + "dev": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-jasmine2": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", "dev": true, "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/source-map": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "expect": "^27.5.1", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1", - "throat": "^6.0.1" + "@jest/environment": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-leak-detector": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", + "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", + "dev": true, + "dependencies": { + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-mock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", + "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", + "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "dev": true, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", + "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", + "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-snapshot": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runner": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", + "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", + "dev": true, + "dependencies": { + "@jest/console": "^27.5.1", + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-leak-detector": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "source-map-support": "^0.5.6", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runtime": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", + "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", + "dev": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/globals": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "execa": "^5.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-serializer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", + "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", + "dev": true, + "dependencies": { + "@types/node": "*", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", + "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.7.2", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.0.0", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^27.5.1", + "semver": "^7.3.2" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-validate": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", + "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "leven": "^3.1.0", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watcher": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", + "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", + "dev": true, + "dependencies": { + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^27.5.1", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsdom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "dev": true, + "dependencies": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=8.6" } }, - "node_modules/jest-leak-detector": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", - "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "dependencies": { - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "dev": true + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-matcher-utils": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=8" } }, - "node_modules/jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/jest-mock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", - "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", + "node_modules/pirates": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*" - }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">= 6" } }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", - "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" + "dependencies": { + "find-up": "^4.0.0" }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } + "engines": { + "node": ">=8" } }, - "node_modules/jest-regex-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", - "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", "dev": true, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">= 0.8.0" } }, - "node_modules/jest-resolve": { + "node_modules/pretty-format": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", - "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", "dev": true, "dependencies": { - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", - "slash": "^3.0.0" + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-resolve-dependencies": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", - "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-snapshot": "^27.5.1" - }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-runner": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", - "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", "dev": true, "dependencies": { - "@jest/console": "^27.5.1", - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.8.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-leak-detector": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "source-map-support": "^0.5.6", - "throat": "^6.0.1" + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">= 6" } }, - "node_modules/jest-runtime": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", - "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", + "node_modules/psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/globals": "^27.5.1", - "@jest/source-map": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "execa": "^5.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=6" } }, - "node_modules/jest-serializer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", - "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", + "node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", "dev": true, "dependencies": { - "@types/node": "*", - "graceful-fs": "^4.2.9" + "regenerate": "^1.4.2" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=4" } }, - "node_modules/jest-snapshot": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", - "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "dev": true + }, + "node_modules/regenerator-transform": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", + "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", "dev": true, "dependencies": { - "@babel/core": "^7.7.2", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.0.0", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/babel__traverse": "^7.0.4", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^27.5.1", - "graceful-fs": "^4.2.9", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", - "natural-compare": "^1.4.0", - "pretty-format": "^27.5.1", - "semver": "^7.3.2" + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexpu-core": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz", + "integrity": "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsgen": "^0.7.1", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=4" } }, - "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "node_modules/regjsgen": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", + "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", + "dev": true + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" + "jsesc": "~0.5.0" }, "bin": { - "semver": "bin/semver.js" - }, + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "node_modules/resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", "dev": true, "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-validate": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", - "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, "dependencies": { - "@jest/types": "^27.5.1", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", - "leven": "^3.1.0", - "pretty-format": "^27.5.1" + "resolve-from": "^5.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=8" } }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve.exports": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", + "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", "dev": true, "engines": { "node": ">=10" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/jest-watcher": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", - "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", "dev": true, "dependencies": { - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "jest-util": "^27.5.1", - "string-length": "^4.0.1" + "xmlchars": "^2.2.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=10" } }, - "node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" + "shebang-regex": "^3.0.0" }, "engines": { - "node": ">= 10.13.0" + "node": ">=8" } }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "node": ">=8" } }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">=8" } }, - "node_modules/jsdom": { - "version": "16.7.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", - "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, "dependencies": { - "abab": "^2.0.5", - "acorn": "^8.2.4", - "acorn-globals": "^6.0.0", - "cssom": "^0.4.4", - "cssstyle": "^2.3.0", - "data-urls": "^2.0.0", - "decimal.js": "^10.2.1", - "domexception": "^2.0.1", - "escodegen": "^2.0.0", - "form-data": "^3.0.0", - "html-encoding-sniffer": "^2.0.1", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^2.0.0", - "webidl-conversions": "^6.1.0", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.5.0", - "ws": "^7.4.6", - "xml-name-validator": "^3.0.0" + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "node_modules/stack-utils": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", + "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^2.0.0" }, "engines": { "node": ">=10" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } } }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", "dev": true, - "bin": { - "jsesc": "bin/jsesc" + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=4" + "node": ">=10" } }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } }, - "node_modules/json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, - "bin": { - "json5": "lib/cli.js" + "dependencies": { + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, "engines": { "node": ">=6" } }, - "node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, "engines": { - "node": ">= 0.8.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "p-locate": "^4.1.0" + "has-flag": "^4.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/supports-hyperlinks": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", + "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", "dev": true, "dependencies": { - "yallist": "^4.0.0" + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "node_modules/terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", "dev": true, "dependencies": { - "semver": "^6.0.0" + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" }, "engines": { "node": ">=8" @@ -2959,1437 +5162,1599 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, "dependencies": { - "tmpl": "1.0.5" + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" } }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "node_modules/throat": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", + "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", "dev": true }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" + "is-number": "^7.0.0" }, "engines": { - "node": ">=8.6" + "node": ">=8.0" } }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "node_modules/tough-cookie": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", + "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", "dev": true, + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.1.2" + }, "engines": { - "node": ">= 0.6" + "node": ">=6" } }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "node_modules/tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", "dev": true, "dependencies": { - "mime-db": "1.52.0" + "punycode": "^2.1.1" }, "engines": { - "node": ">= 0.6" + "node": ">=8" + } + }, + "node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" } }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" + "is-typedarray": "^1.0.0" } }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", - "dev": true - }, - "node_modules/node-releases": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.3.tgz", - "integrity": "sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw==", - "dev": true - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, "dependencies": { - "path-key": "^3.0.0" + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/nwsapi": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", - "dev": true - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", "dev": true, - "dependencies": { - "wrappy": "1" + "engines": { + "node": ">=4" } }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, - "node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true, - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, "engines": { - "node": ">= 0.8.0" + "node": ">= 4.0.0" } }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], "dependencies": { - "p-try": "^2.0.0" + "escalade": "^3.1.1", + "picocolors": "^1.0.0" }, - "engines": { - "node": ">=6" + "bin": { + "browserslist-lint": "cli.js" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "browserslist": ">= 4.21.0" } }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/v8-to-istanbul": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", + "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", "dev": true, "dependencies": { - "p-limit": "^2.2.0" + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" }, "engines": { - "node": ">=8" + "node": ">=10.12.0" } }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "node_modules/v8-to-istanbul/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", "dev": true, "engines": { - "node": ">=6" + "node": ">= 8" } }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "node_modules/w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "browser-process-hrtime": "^1.0.0" } }, - "node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "node_modules/w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", "dev": true, + "dependencies": { + "xml-name-validator": "^3.0.0" + }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", "dev": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "makeerror": "1.0.12" } }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "node_modules/webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", "dev": true, "engines": { - "node": ">=8" + "node": ">=10.4" } }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "dependencies": { + "iconv-lite": "0.4.24" } }, - "node_modules/pirates": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", - "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "node_modules/whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "node_modules/whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", "dev": true, + "dependencies": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + }, "engines": { - "node": ">= 6" + "node": ">=10" } }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "dependencies": { - "find-up": "^4.0.0" + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" }, "engines": { - "node": ">=8" + "node": ">= 8" } }, - "node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "dev": true, "engines": { - "node": ">= 0.8.0" + "node": ">=0.10.0" } }, - "node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "dev": true, "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" } }, - "node_modules/psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "node_modules/ws": { + "version": "7.5.7", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", + "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", "dev": true, "engines": { - "node": ">=6" + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, - "node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "node_modules/xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", "dev": true }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "dependencies": { - "is-core-module": "^2.8.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=10" } }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, - "dependencies": { - "resolve-from": "^5.0.0" - }, "engines": { - "node": ">=8" + "node": ">=10" + } + } + }, + "dependencies": { + "@ampproject/remapping": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz", + "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.0" } }, - "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", "dev": true, - "engines": { - "node": ">=8" + "requires": { + "@babel/highlight": "^7.18.6" } }, - "node_modules/resolve.exports": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", - "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", + "@babel/compat-data": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.1.tgz", + "integrity": "sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ==", + "dev": true + }, + "@babel/core": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.2.tgz", + "integrity": "sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g==", "dev": true, - "engines": { - "node": ">=10" + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.2", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-module-transforms": "^7.20.2", + "@babel/helpers": "^7.20.1", + "@babel/parser": "^7.20.2", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.2", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" } }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "@babel/generator": { + "version": "7.20.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.4.tgz", + "integrity": "sha512-luCf7yk/cm7yab6CAW1aiFnmEfBJplb/JojV56MYEK7ziWfGmFlTfmL9Ehwfy4gFhbjBfWO1wj7/TuSbVNEEtA==", "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "requires": { + "@babel/types": "^7.20.2", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" } }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", + "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.18.6", + "@babel/types": "^7.18.9" + } }, - "node_modules/saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "@babel/helper-compilation-targets": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", + "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", "dev": true, - "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=10" + "requires": { + "@babel/compat-data": "^7.20.0", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "semver": "^6.3.0" } }, - "node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "@babel/helper-create-class-features-plugin": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.2.tgz", + "integrity": "sha512-k22GoYRAHPYr9I+Gvy2ZQlAe5mGy8BqWst2wRt8cwIufWTxrsVshhIBvYNqC80N0GSFWTsqRVexOtfzlgOEDvA==", "dev": true, - "bin": { - "semver": "bin/semver.js" + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.19.1", + "@babel/helper-split-export-declaration": "^7.18.6" } }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "@babel/helper-create-regexp-features-plugin": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz", + "integrity": "sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==", "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "regexpu-core": "^5.1.0" } }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "@babel/helper-define-polyfill-provider": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", + "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", "dev": true, - "engines": { - "node": ">=8" + "requires": { + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" } }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", "dev": true }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "@babel/helper-explode-assignable-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", + "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", "dev": true, - "engines": { - "node": ">=8" + "requires": { + "@babel/types": "^7.18.6" } }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "@babel/helper-function-name": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", "dev": true, - "engines": { - "node": ">=0.10.0" + "requires": { + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" } }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" + "requires": { + "@babel/types": "^7.18.6" } }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "node_modules/stack-utils": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", - "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", + "@babel/helper-member-expression-to-functions": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", + "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", "dev": true, - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" + "requires": { + "@babel/types": "^7.18.9" } }, - "node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", "dev": true, - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" + "requires": { + "@babel/types": "^7.18.6" } }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "@babel/helper-module-transforms": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz", + "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==", "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.2" } }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "@babel/helper-optimise-call-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", + "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" + "requires": { + "@babel/types": "^7.18.6" } }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "@babel/helper-plugin-utils": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", + "dev": true + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", + "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", "dev": true, - "engines": { - "node": ">=8" + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-wrap-function": "^7.18.9", + "@babel/types": "^7.18.9" } }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "@babel/helper-replace-supers": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", + "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", "dev": true, - "engines": { - "node": ">=6" + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/traverse": "^7.19.1", + "@babel/types": "^7.19.0" } }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "@babel/helper-simple-access": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "requires": { + "@babel/types": "^7.20.2" } }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", + "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "requires": { + "@babel/types": "^7.20.0" } }, - "node_modules/supports-hyperlinks": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", - "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", + "@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", "dev": true, - "dependencies": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">=8" + "requires": { + "@babel/types": "^7.18.6" } }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz", + "integrity": "sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==", "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "requires": { + "@babel/helper-function-name": "^7.19.0", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.0", + "@babel/types": "^7.19.0" } }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true + "@babel/helpers": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.1.tgz", + "integrity": "sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg==", + "dev": true, + "requires": { + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.0" + } }, - "node_modules/terminal-link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", "dev": true, - "dependencies": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" - }, - "engines": { - "node": ">=8" + "requires": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "@babel/parser": { + "version": "7.20.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.3.tgz", + "integrity": "sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg==", + "dev": true + }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", + "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", "dev": true, - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" } }, - "node_modules/throat": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", - "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", - "dev": true + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", + "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-proposal-optional-chaining": "^7.18.9" + } }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.1.tgz", + "integrity": "sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-remap-async-to-generator": "^7.18.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", "dev": true, - "engines": { - "node": ">=4" + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "@babel/plugin-proposal-class-static-block": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", + "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-class-static-block": "^7.14.5" } }, - "node_modules/tough-cookie": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", - "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "@babel/plugin-proposal-dynamic-import": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", + "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", "dev": true, - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.1.2" - }, - "engines": { - "node": ">=6" + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" } }, - "node_modules/tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", + "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", "dev": true, - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=8" + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" } }, - "node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "@babel/plugin-proposal-json-strings": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", + "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-json-strings": "^7.8.3" } }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", + "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", "dev": true, - "engines": { - "node": ">=4" + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" } }, - "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" } }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "@babel/plugin-proposal-numeric-separator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", "dev": true, - "dependencies": { - "is-typedarray": "^1.0.0" + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz", + "integrity": "sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==", "dev": true, - "engines": { - "node": ">= 4.0.0" + "requires": { + "@babel/compat-data": "^7.20.1", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.20.1" } }, - "node_modules/v8-to-istanbul": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", - "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0", - "source-map": "^0.7.3" - }, - "engines": { - "node": ">=10.12.0" + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" } }, - "node_modules/v8-to-istanbul/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "@babel/plugin-proposal-optional-chaining": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", + "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", "dev": true, - "engines": { - "node": ">= 8" + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, - "node_modules/w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "@babel/plugin-proposal-private-methods": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", "dev": true, - "dependencies": { - "browser-process-hrtime": "^1.0.0" + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, - "node_modules/w3c-xmlserializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", - "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", + "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", "dev": true, - "dependencies": { - "xml-name-validator": "^3.0.0" - }, - "engines": { - "node": ">=10" + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" } }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", "dev": true, - "dependencies": { - "makeerror": "1.0.12" + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, - "node_modules/webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, - "engines": { - "node": ">=10.4" + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" } }, - "node_modules/whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", "dev": true, - "dependencies": { - "iconv-lite": "0.4.24" + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" } }, - "node_modules/whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } }, - "node_modules/whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "dev": true, - "dependencies": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" - }, - "engines": { - "node": ">=10" + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" } }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" } }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", "dev": true, - "engines": { - "node": ">=0.10.0" + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" } }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "@babel/plugin-syntax-import-assertions": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", + "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "requires": { + "@babel/helper-plugin-utils": "^7.19.0" } }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } }, - "node_modules/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" } }, - "node_modules/ws": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", - "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" } }, - "node_modules/xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, - "engines": { - "node": ">=10" + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" } }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } }, - "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" } }, - "node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", "dev": true, - "engines": { - "node": ">=10" + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" } - } - }, - "dependencies": { - "@ampproject/remapping": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz", - "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==", + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, "requires": { - "@jridgewell/trace-mapping": "^0.3.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, - "@babel/code-frame": { + "@babel/plugin-syntax-typescript": { "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz", + "integrity": "sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==", "dev": true, "requires": { - "@babel/highlight": "^7.16.7" + "@babel/helper-plugin-utils": "^7.16.7" } }, - "@babel/compat-data": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz", - "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==", - "dev": true + "@babel/plugin-transform-arrow-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", + "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } }, - "@babel/core": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.9.tgz", - "integrity": "sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==", + "@babel/plugin-transform-async-to-generator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", + "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", "dev": true, "requires": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.9", - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helpers": "^7.17.9", - "@babel/parser": "^7.17.9", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.9", - "@babel/types": "^7.17.0", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-remap-async-to-generator": "^7.18.6" } }, - "@babel/generator": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.9.tgz", - "integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==", + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", + "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", "dev": true, "requires": { - "@babel/types": "^7.17.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } + "@babel/helper-plugin-utils": "^7.18.6" } }, - "@babel/helper-compilation-targets": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz", - "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==", + "@babel/plugin-transform-block-scoping": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.2.tgz", + "integrity": "sha512-y5V15+04ry69OV2wULmwhEA6jwSWXO1TwAtIwiPXcvHcoOQUqpyMVd2bDsQJMW8AurjulIyUV8kDqtjSwHy1uQ==", "dev": true, "requires": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-validator-option": "^7.16.7", - "browserslist": "^4.17.5", - "semver": "^6.3.0" + "@babel/helper-plugin-utils": "^7.20.2" } }, - "@babel/helper-environment-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", - "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", + "@babel/plugin-transform-classes": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz", + "integrity": "sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-replace-supers": "^7.19.1", + "@babel/helper-split-export-declaration": "^7.18.6", + "globals": "^11.1.0" } }, - "@babel/helper-function-name": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", - "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", + "@babel/plugin-transform-computed-properties": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", + "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", "dev": true, "requires": { - "@babel/template": "^7.16.7", - "@babel/types": "^7.17.0" + "@babel/helper-plugin-utils": "^7.18.9" } }, - "@babel/helper-hoist-variables": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", - "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "@babel/plugin-transform-destructuring": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz", + "integrity": "sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/helper-plugin-utils": "^7.20.2" } }, - "@babel/helper-module-imports": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", - "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "@babel/plugin-transform-dotall-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", + "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, - "@babel/helper-module-transforms": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", - "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", + "@babel/plugin-transform-duplicate-keys": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", + "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.17.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", - "@babel/types": "^7.17.0" + "@babel/helper-plugin-utils": "^7.18.9" } }, - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", + "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } }, - "@babel/helper-simple-access": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", - "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", + "@babel/plugin-transform-for-of": { + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", + "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", "dev": true, "requires": { - "@babel/types": "^7.17.0" + "@babel/helper-plugin-utils": "^7.18.6" } }, - "@babel/helper-split-export-declaration": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "@babel/plugin-transform-function-name": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", + "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9" } }, - "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true + "@babel/plugin-transform-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", + "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } }, - "@babel/helper-validator-option": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", - "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", - "dev": true + "@babel/plugin-transform-member-expression-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", + "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } }, - "@babel/helpers": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", - "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", + "@babel/plugin-transform-modules-amd": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz", + "integrity": "sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==", "dev": true, "requires": { - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.9", - "@babel/types": "^7.17.0" + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0" } }, - "@babel/highlight": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", - "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", + "@babel/plugin-transform-modules-commonjs": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz", + "integrity": "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-simple-access": "^7.19.4" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz", + "integrity": "sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-validator-identifier": "^7.19.1" } }, - "@babel/parser": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.9.tgz", - "integrity": "sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==", - "dev": true + "@babel/plugin-transform-modules-umd": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", + "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz", + "integrity": "sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-create-regexp-features-plugin": "^7.19.0", + "@babel/helper-plugin-utils": "^7.19.0" } }, - "@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "@babel/plugin-transform-new-target": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", + "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-plugin-utils": "^7.18.6" } }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "@babel/plugin-transform-object-super": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", + "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6" } }, - "@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "@babel/plugin-transform-parameters": { + "version": "7.20.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.3.tgz", + "integrity": "sha512-oZg/Fpx0YDrj13KsLyO8I/CX3Zdw7z0O9qOd95SqcoIzuqy/WTGWvePeHAnZCN54SfdyjHcb1S30gc8zlzlHcA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.20.2" } }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "@babel/plugin-transform-property-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", + "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-plugin-utils": "^7.18.6" } }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "@babel/plugin-transform-regenerator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", + "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.18.6", + "regenerator-transform": "^0.15.0" } }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "@babel/plugin-transform-reserved-words": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", + "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-plugin-utils": "^7.18.6" } }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "@babel/plugin-transform-shorthand-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", + "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.18.6" } }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "@babel/plugin-transform-spread": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", + "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" } }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "@babel/plugin-transform-sticky-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", + "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-plugin-utils": "^7.18.6" } }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "@babel/plugin-transform-template-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", + "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-plugin-utils": "^7.18.9" } }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "@babel/plugin-transform-typeof-symbol": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", + "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.18.9" } }, - "@babel/plugin-syntax-typescript": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz", - "integrity": "sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==", + "@babel/plugin-transform-unicode-escapes": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", + "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", + "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/preset-env": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz", + "integrity": "sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.20.1", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-async-generator-functions": "^7.20.1", + "@babel/plugin-proposal-class-properties": "^7.18.6", + "@babel/plugin-proposal-class-static-block": "^7.18.6", + "@babel/plugin-proposal-dynamic-import": "^7.18.6", + "@babel/plugin-proposal-export-namespace-from": "^7.18.9", + "@babel/plugin-proposal-json-strings": "^7.18.6", + "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", + "@babel/plugin-proposal-numeric-separator": "^7.18.6", + "@babel/plugin-proposal-object-rest-spread": "^7.20.2", + "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", + "@babel/plugin-proposal-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-private-methods": "^7.18.6", + "@babel/plugin-proposal-private-property-in-object": "^7.18.6", + "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.20.0", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.18.6", + "@babel/plugin-transform-async-to-generator": "^7.18.6", + "@babel/plugin-transform-block-scoped-functions": "^7.18.6", + "@babel/plugin-transform-block-scoping": "^7.20.2", + "@babel/plugin-transform-classes": "^7.20.2", + "@babel/plugin-transform-computed-properties": "^7.18.9", + "@babel/plugin-transform-destructuring": "^7.20.2", + "@babel/plugin-transform-dotall-regex": "^7.18.6", + "@babel/plugin-transform-duplicate-keys": "^7.18.9", + "@babel/plugin-transform-exponentiation-operator": "^7.18.6", + "@babel/plugin-transform-for-of": "^7.18.8", + "@babel/plugin-transform-function-name": "^7.18.9", + "@babel/plugin-transform-literals": "^7.18.9", + "@babel/plugin-transform-member-expression-literals": "^7.18.6", + "@babel/plugin-transform-modules-amd": "^7.19.6", + "@babel/plugin-transform-modules-commonjs": "^7.19.6", + "@babel/plugin-transform-modules-systemjs": "^7.19.6", + "@babel/plugin-transform-modules-umd": "^7.18.6", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1", + "@babel/plugin-transform-new-target": "^7.18.6", + "@babel/plugin-transform-object-super": "^7.18.6", + "@babel/plugin-transform-parameters": "^7.20.1", + "@babel/plugin-transform-property-literals": "^7.18.6", + "@babel/plugin-transform-regenerator": "^7.18.6", + "@babel/plugin-transform-reserved-words": "^7.18.6", + "@babel/plugin-transform-shorthand-properties": "^7.18.6", + "@babel/plugin-transform-spread": "^7.19.0", + "@babel/plugin-transform-sticky-regex": "^7.18.6", + "@babel/plugin-transform-template-literals": "^7.18.9", + "@babel/plugin-transform-typeof-symbol": "^7.18.9", + "@babel/plugin-transform-unicode-escapes": "^7.18.10", + "@babel/plugin-transform-unicode-regex": "^7.18.6", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.20.2", + "babel-plugin-polyfill-corejs2": "^0.3.3", + "babel-plugin-polyfill-corejs3": "^0.6.0", + "babel-plugin-polyfill-regenerator": "^0.4.1", + "core-js-compat": "^3.25.1", + "semver": "^6.3.0" + } + }, + "@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/runtime": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.1.tgz", + "integrity": "sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.10" } }, "@babel/template": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", "dev": true, "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" } }, "@babel/traverse": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.9.tgz", - "integrity": "sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.9", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.9", - "@babel/types": "^7.17.0", + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.1.tgz", + "integrity": "sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.1", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.20.1", + "@babel/types": "^7.20.0", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.2.tgz", + "integrity": "sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", "to-fast-properties": "^2.0.0" } }, @@ -4538,6 +6903,15 @@ "v8-to-istanbul": "^8.1.0" } }, + "@jest/schemas": { + "version": "29.0.0", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.0.0.tgz", + "integrity": "sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==", + "dev": true, + "requires": { + "@sinclair/typebox": "^0.24.1" + } + }, "@jest/source-map": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", @@ -4609,28 +6983,51 @@ "chalk": "^4.0.0" } }, + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, "@jridgewell/resolve-uri": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", - "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", "dev": true }, "@jridgewell/sourcemap-codec": { - "version": "1.4.11", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", - "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==", + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", "dev": true }, "@jridgewell/trace-mapping": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz", - "integrity": "sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==", + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", "dev": true, "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" } }, + "@sinclair/typebox": { + "version": "0.24.51", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", + "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==", + "dev": true + }, "@sinonjs/commons": { "version": "1.8.3", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", @@ -4656,9 +7053,9 @@ "dev": true }, "@types/babel__core": { - "version": "7.1.19", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", - "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", + "version": "7.1.20", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.20.tgz", + "integrity": "sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ==", "dev": true, "requires": { "@babel/parser": "^7.1.0", @@ -4857,19 +7254,143 @@ "dev": true }, "babel-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", - "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.3.1.tgz", + "integrity": "sha512-aard+xnMoxgjwV70t0L6wkW/3HQQtV+O0PEimxKgzNqCJnbYmroPojdP2tqKSOAt8QAKV/uSZU8851M7B5+fcA==", "dev": true, "requires": { - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/transform": "^29.3.1", "@types/babel__core": "^7.1.14", "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^27.5.1", + "babel-preset-jest": "^29.2.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "slash": "^3.0.0" + }, + "dependencies": { + "@jest/transform": { + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.3.1.tgz", + "integrity": "sha512-8wmCFBTVGYqFNLWfcOWoVuMuKYPUBTnTMDkdvFtAYELwDOl9RGwOsvQWGPFxDJ8AWY9xM/8xCXdqmPK3+Q5Lug==", + "dev": true, + "requires": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.3.1", + "@jridgewell/trace-mapping": "^0.3.15", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.3.1", + "jest-regex-util": "^29.2.0", + "jest-util": "^29.3.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.1" + } + }, + "@jest/types": { + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.3.1.tgz", + "integrity": "sha512-d0S0jmmTpjnhCmNpApgX3jrUZgZ22ivKJRvL2lli5hpCRoNnp1f85r2/wpKfXuYu8E7Jjh1hGfhPyup1NM5AmA==", + "dev": true, + "requires": { + "@jest/schemas": "^29.0.0", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "17.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.13.tgz", + "integrity": "sha512-9sWaruZk2JGxIQU+IhI1fhPYRcQ0UuTNuKuCW9bR5fp7qi2Llf7WDzNa17Cy7TKnh3cdxDOiyTu6gaLS0eDatg==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "jest-haste-map": { + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.3.1.tgz", + "integrity": "sha512-/FFtvoG1xjbbPXQLFef+WSU4yrc0fc0Dds6aRPBojUid7qlPqZvxdUBA03HW0fnVHXVCnCdkuoghYItKNzc/0A==", + "dev": true, + "requires": { + "@jest/types": "^29.3.1", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.2.0", + "jest-util": "^29.3.1", + "jest-worker": "^29.3.1", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + } + }, + "jest-regex-util": { + "version": "29.2.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.2.0.tgz", + "integrity": "sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA==", + "dev": true + }, + "jest-util": { + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.3.1.tgz", + "integrity": "sha512-7YOVZaiX7RJLv76ZfHt4nbNEzzTRiMW/IiOG7ZOKmTXmoGBxUDefgMAxQubu6WPVqP5zSzAdZG0FfLcC7HOIFQ==", + "dev": true, + "requires": { + "@jest/types": "^29.3.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, + "jest-worker": { + "version": "29.3.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.3.1.tgz", + "integrity": "sha512-lY4AnnmsEWeiXirAIA0c9SDPbuCBq8IYuDVL8PMm0MZ2PEs2yPvRA/J64QBXuZp7CYKrDM/rmNrc9/i3KJQncw==", + "dev": true, + "requires": { + "@types/node": "*", + "jest-util": "^29.3.1", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + } + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + } + } } }, "babel-plugin-istanbul": { @@ -4886,17 +7407,47 @@ } }, "babel-plugin-jest-hoist": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", - "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", + "version": "29.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.2.0.tgz", + "integrity": "sha512-TnspP2WNiR3GLfCsUNHqeXw0RoQ2f9U5hQ5L3XFpwuO8htQmSrhh8qsB6vi5Yi8+kuynN1yjDjQsPfkebmB6ZA==", "dev": true, "requires": { "@babel/template": "^7.3.3", "@babel/types": "^7.3.3", - "@types/babel__core": "^7.0.0", + "@types/babel__core": "^7.1.14", "@types/babel__traverse": "^7.0.6" } }, + "babel-plugin-polyfill-corejs2": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", + "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.3", + "semver": "^6.1.1" + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz", + "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.3", + "core-js-compat": "^3.25.1" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", + "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.3" + } + }, "babel-preset-current-node-syntax": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", @@ -4918,12 +7469,12 @@ } }, "babel-preset-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", - "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", + "version": "29.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.2.0.tgz", + "integrity": "sha512-z9JmMJppMxNv8N7fNRHvhMg9cvIkMxQBXgFkane3yKVEvEOP+kB50lk8DFRvF9PGqbyXxlmebKWhuDORO8RgdA==", "dev": true, "requires": { - "babel-plugin-jest-hoist": "^27.5.1", + "babel-plugin-jest-hoist": "^29.2.0", "babel-preset-current-node-syntax": "^1.0.0" } }, @@ -4959,16 +7510,15 @@ "dev": true }, "browserslist": { - "version": "4.20.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.2.tgz", - "integrity": "sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==", + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001317", - "electron-to-chromium": "^1.4.84", - "escalade": "^3.1.1", - "node-releases": "^2.0.2", - "picocolors": "^1.0.0" + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.9" } }, "bser": { @@ -4999,9 +7549,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001332", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001332.tgz", - "integrity": "sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw==", + "version": "1.0.30001431", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001431.tgz", + "integrity": "sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ==", "dev": true }, "chalk": { @@ -5094,6 +7644,15 @@ "safe-buffer": "~5.1.1" } }, + "core-js-compat": { + "version": "3.26.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.1.tgz", + "integrity": "sha512-622/KzTudvXCDLRw70iHW4KKs1aGpcRcowGWyYJr2DEBfRrd6hNJybxSWJFuZYD4ma86xhrwDDHxmDaIq4EA8A==", + "dev": true, + "requires": { + "browserslist": "^4.21.4" + } + }, "cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -5208,9 +7767,9 @@ } }, "electron-to-chromium": { - "version": "1.4.111", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.111.tgz", - "integrity": "sha512-/s3+fwhKf1YK4k7btOImOzCQLpUjS6MaPf0ODTNuT4eTM1Bg4itBpLkydhOzJmpmH6Z9eXFyuuK5czsmzRzwtw==", + "version": "1.4.284", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", "dev": true }, "emittery": { @@ -5737,6 +8296,46 @@ "pretty-format": "^27.5.1", "slash": "^3.0.0", "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "babel-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", + "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", + "dev": true, + "requires": { + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + } + }, + "babel-plugin-jest-hoist": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", + "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", + "dev": true, + "requires": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-preset-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", + "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", + "dev": true, + "requires": { + "babel-plugin-jest-hoist": "^27.5.1", + "babel-preset-current-node-syntax": "^1.0.0" + } + } } }, "jest-diff": { @@ -6240,6 +8839,12 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, "lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -6332,9 +8937,9 @@ "dev": true }, "node-releases": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.3.tgz", - "integrity": "sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", "dev": true }, "normalize-path": { @@ -6536,6 +9141,73 @@ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", "dev": true }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "dev": true, + "requires": { + "regenerate": "^1.4.2" + } + }, + "regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "dev": true + }, + "regenerator-transform": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", + "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regexpu-core": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz", + "integrity": "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==", + "dev": true, + "requires": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsgen": "^0.7.1", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + } + }, + "regjsgen": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", + "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", + "dev": true + }, + "regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true + } + } + }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -6851,12 +9523,50 @@ "is-typedarray": "^1.0.0" } }, + "unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true + }, "universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true }, + "update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "dev": true, + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, "v8-to-istanbul": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", diff --git a/package.json b/package.json index 3decd939..37a93b1e 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,9 @@ }, "homepage": "https://github.com/pkiop/JS-Array-Challenge#readme", "devDependencies": { + "@babel/core": "^7.20.2", + "@babel/preset-env": "^7.20.2", + "babel-jest": "^29.3.1", "jest": "^27.5.1" } }