From 08946b54bbda8f1ef6705296739d0e39fa423803 Mon Sep 17 00:00:00 2001 From: wipddsu Date: Mon, 15 Jan 2024 21:48:50 +0900 Subject: [PATCH 01/23] Solve: filterOdd --- Challenge/wipddsu/filterOdd/README.md | 3 +++ Challenge/wipddsu/filterOdd/solve.js | 8 +++++++ Challenge/wipddsu/filterOdd/solve.test.js | 28 +++++++++++++++++++++++ 3 files changed, 39 insertions(+) create mode 100644 Challenge/wipddsu/filterOdd/README.md create mode 100644 Challenge/wipddsu/filterOdd/solve.js create mode 100644 Challenge/wipddsu/filterOdd/solve.test.js diff --git a/Challenge/wipddsu/filterOdd/README.md b/Challenge/wipddsu/filterOdd/README.md new file mode 100644 index 00000000..cf9eda79 --- /dev/null +++ b/Challenge/wipddsu/filterOdd/README.md @@ -0,0 +1,3 @@ +## 설명 + +홀수만 뽑아 배열로 만드세요 diff --git a/Challenge/wipddsu/filterOdd/solve.js b/Challenge/wipddsu/filterOdd/solve.js new file mode 100644 index 00000000..a887517a --- /dev/null +++ b/Challenge/wipddsu/filterOdd/solve.js @@ -0,0 +1,8 @@ +// write your codes +function solution(inputArray) { + return inputArray.filter((el) => el % 2 === 1); +} + +exports.solution = solution; + +console.log(solution()); diff --git a/Challenge/wipddsu/filterOdd/solve.test.js b/Challenge/wipddsu/filterOdd/solve.test.js new file mode 100644 index 00000000..8cfd7f5a --- /dev/null +++ b/Challenge/wipddsu/filterOdd/solve.test.js @@ -0,0 +1,28 @@ +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); + }); +}); From cf57ecf9c2c989a7f404ff35f7bdbac7a7e48bb8 Mon Sep 17 00:00:00 2001 From: wipddsu Date: Mon, 15 Jan 2024 21:57:22 +0900 Subject: [PATCH 02/23] Solve: filterOdd --- Challenge/wipddsu/filterOdd/solve.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/Challenge/wipddsu/filterOdd/solve.js b/Challenge/wipddsu/filterOdd/solve.js index a887517a..0773b8db 100644 --- a/Challenge/wipddsu/filterOdd/solve.js +++ b/Challenge/wipddsu/filterOdd/solve.js @@ -4,5 +4,3 @@ function solution(inputArray) { } exports.solution = solution; - -console.log(solution()); From 3e924c19363896d92607de953f6471a1dcf5065b Mon Sep 17 00:00:00 2001 From: wipddsu Date: Mon, 15 Jan 2024 22:40:47 +0900 Subject: [PATCH 03/23] Solve: findWord --- Challenge/wipddsu/findWord/README.md | 9 ++++++++ Challenge/wipddsu/findWord/solve.js | 6 ++++++ Challenge/wipddsu/findWord/solve.test.js | 26 ++++++++++++++++++++++++ 3 files changed, 41 insertions(+) create mode 100644 Challenge/wipddsu/findWord/README.md create mode 100644 Challenge/wipddsu/findWord/solve.js create mode 100644 Challenge/wipddsu/findWord/solve.test.js diff --git a/Challenge/wipddsu/findWord/README.md b/Challenge/wipddsu/findWord/README.md new file mode 100644 index 00000000..2ab8fcb2 --- /dev/null +++ b/Challenge/wipddsu/findWord/README.md @@ -0,0 +1,9 @@ +# 문제제목 + +## 설명 + +용가리라는 단어가 있으면 true 없으면 false를 출력 + +## Expected Output + +true diff --git a/Challenge/wipddsu/findWord/solve.js b/Challenge/wipddsu/findWord/solve.js new file mode 100644 index 00000000..14ae6725 --- /dev/null +++ b/Challenge/wipddsu/findWord/solve.js @@ -0,0 +1,6 @@ +// write your codes +function solution(inputArray) { + return inputArray.some((el) => el === '용가리'); +} + +exports.solution = solution; diff --git a/Challenge/wipddsu/findWord/solve.test.js b/Challenge/wipddsu/findWord/solve.test.js new file mode 100644 index 00000000..3e88a818 --- /dev/null +++ b/Challenge/wipddsu/findWord/solve.test.js @@ -0,0 +1,26 @@ +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); + }); +}); From 4025922039366eca6dc200470e6f0cba43ebfdeb Mon Sep 17 00:00:00 2001 From: wipddsu Date: Tue, 16 Jan 2024 12:36:50 +0900 Subject: [PATCH 04/23] Solve: everyArray --- Challenge/wipddsu/everyArray/README.md | 9 +++++++++ Challenge/wipddsu/everyArray/solve.js | 5 +++++ Challenge/wipddsu/everyArray/solve.test.js | 21 +++++++++++++++++++++ 3 files changed, 35 insertions(+) create mode 100644 Challenge/wipddsu/everyArray/README.md create mode 100644 Challenge/wipddsu/everyArray/solve.js create mode 100644 Challenge/wipddsu/everyArray/solve.test.js diff --git a/Challenge/wipddsu/everyArray/README.md b/Challenge/wipddsu/everyArray/README.md new file mode 100644 index 00000000..442558f6 --- /dev/null +++ b/Challenge/wipddsu/everyArray/README.md @@ -0,0 +1,9 @@ +# 문제제목 + +## 설명 + +every를 이용해서 모든 원소가 짝수인지 아닌지를 판별하세요 + +## Expected Output + +true \ No newline at end of file diff --git a/Challenge/wipddsu/everyArray/solve.js b/Challenge/wipddsu/everyArray/solve.js new file mode 100644 index 00000000..66c5d9de --- /dev/null +++ b/Challenge/wipddsu/everyArray/solve.js @@ -0,0 +1,5 @@ +function solution(inputArray) { + return inputArray.every((el) => el % 2 === 0); +} + +exports.solution = solution; diff --git a/Challenge/wipddsu/everyArray/solve.test.js b/Challenge/wipddsu/everyArray/solve.test.js new file mode 100644 index 00000000..7dac26a4 --- /dev/null +++ b/Challenge/wipddsu/everyArray/solve.test.js @@ -0,0 +1,21 @@ +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); + }); +}); From cd90735730ab9800b4eeafe83e718a044fa99d42 Mon Sep 17 00:00:00 2001 From: wipddsu Date: Tue, 16 Jan 2024 12:48:52 +0900 Subject: [PATCH 05/23] Solve: expDivOdd --- Challenge/wipddsu/expDivOdd/README.md | 3 +++ Challenge/wipddsu/expDivOdd/solve.js | 6 ++++++ Challenge/wipddsu/expDivOdd/solve.test.js | 21 +++++++++++++++++++++ 3 files changed, 30 insertions(+) create mode 100644 Challenge/wipddsu/expDivOdd/README.md create mode 100644 Challenge/wipddsu/expDivOdd/solve.js create mode 100644 Challenge/wipddsu/expDivOdd/solve.test.js diff --git a/Challenge/wipddsu/expDivOdd/README.md b/Challenge/wipddsu/expDivOdd/README.md new file mode 100644 index 00000000..c07ab10b --- /dev/null +++ b/Challenge/wipddsu/expDivOdd/README.md @@ -0,0 +1,3 @@ +## 설명 + +제곱한 후 3으로 나눈 나머지가 홀수인 것 을 뽑은 배열의 총 합을 구하세요. diff --git a/Challenge/wipddsu/expDivOdd/solve.js b/Challenge/wipddsu/expDivOdd/solve.js new file mode 100644 index 00000000..d126aec8 --- /dev/null +++ b/Challenge/wipddsu/expDivOdd/solve.js @@ -0,0 +1,6 @@ +function solution(inputArray) { + inputArray = inputArray.map((el) => el ** 2).filter((item) => (item % 3) % 2 !== 0); + return inputArray.reduce((acc, cur) => acc + cur, 0); +} + +exports.solution = solution; diff --git a/Challenge/wipddsu/expDivOdd/solve.test.js b/Challenge/wipddsu/expDivOdd/solve.test.js new file mode 100644 index 00000000..ca37fcc3 --- /dev/null +++ b/Challenge/wipddsu/expDivOdd/solve.test.js @@ -0,0 +1,21 @@ +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); + }); +}); From c3de36298b6f7bd00adf86dc576631aa8d53cb0d Mon Sep 17 00:00:00 2001 From: wipddsu Date: Wed, 17 Jan 2024 12:01:15 +0900 Subject: [PATCH 06/23] Solve: figureSkating --- Challenge/wipddsu/figureSkating/README.md | 35 +++++++++++++ Challenge/wipddsu/figureSkating/solve.js | 49 +++++++++++++++++++ Challenge/wipddsu/figureSkating/solve.test.js | 46 +++++++++++++++++ 3 files changed, 130 insertions(+) create mode 100644 Challenge/wipddsu/figureSkating/README.md create mode 100644 Challenge/wipddsu/figureSkating/solve.js create mode 100644 Challenge/wipddsu/figureSkating/solve.test.js diff --git a/Challenge/wipddsu/figureSkating/README.md b/Challenge/wipddsu/figureSkating/README.md new file mode 100644 index 00000000..54b85fbd --- /dev/null +++ b/Challenge/wipddsu/figureSkating/README.md @@ -0,0 +1,35 @@ +## 설명 + +점수를 계산해서 점수가 높은 순으로 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/wipddsu/figureSkating/solve.js b/Challenge/wipddsu/figureSkating/solve.js new file mode 100644 index 00000000..ab2afe5f --- /dev/null +++ b/Challenge/wipddsu/figureSkating/solve.js @@ -0,0 +1,49 @@ +// 기본 점수 +const baseScore = { + jump: 10, + spin: 20, + step: 15, +}; + +const baseAssignment = { + jump: 3, + spin: 3, + step: 1, +}; + +// write your codes + +function solution(inputArray) { + const newInput = inputArray.filter((item) => item['goe']['jump'].length > 2 && item['goe']['spin'].length > 2); + const answer = []; + + for (const el of newInput) { + const newObj = {}; + const name = el['name']; + const goes = el['goe']; + const scoreArr = []; + + for (const key in goes) { + const sorting = goes[key].sort((a, b) => b - a); + // 배열을 내림차순 정렬 후 앞에서 3개의 값의 합만 구하기 + const scoreSum = sorting.reduce((acc, cur, i) => (i < 3 ? acc + cur : acc), 0); + scoreArr.push(scoreSum); + } + + const [jumpScore, spinScore, stepScore] = [...scoreArr]; + + newObj['name'] = name; + newObj['score'] = + jumpScore * baseScore['jump'] + + spinScore * baseScore['spin'] + + stepScore * baseScore['step'] + + el['pcs'] - + el['penalty']; + + answer.push(newObj); + } + + return answer; +} + +exports.solution = solution; diff --git a/Challenge/wipddsu/figureSkating/solve.test.js b/Challenge/wipddsu/figureSkating/solve.test.js new file mode 100644 index 00000000..7bceadf1 --- /dev/null +++ b/Challenge/wipddsu/figureSkating/solve.test.js @@ -0,0 +1,46 @@ +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); + }); +}); From 744dfa21bdad4c2038448e13c1bf359831f5bfc2 Mon Sep 17 00:00:00 2001 From: wipddsu Date: Thu, 18 Jan 2024 11:32:32 +0900 Subject: [PATCH 07/23] Solve: filterAge --- Challenge/wipddsu/filterAge/README.md | 3 +++ Challenge/wipddsu/filterAge/solve.js | 8 ++++++ Challenge/wipddsu/filterAge/solve.test.js | 32 +++++++++++++++++++++++ 3 files changed, 43 insertions(+) create mode 100644 Challenge/wipddsu/filterAge/README.md create mode 100644 Challenge/wipddsu/filterAge/solve.js create mode 100644 Challenge/wipddsu/filterAge/solve.test.js diff --git a/Challenge/wipddsu/filterAge/README.md b/Challenge/wipddsu/filterAge/README.md new file mode 100644 index 00000000..873a15c1 --- /dev/null +++ b/Challenge/wipddsu/filterAge/README.md @@ -0,0 +1,3 @@ +## 설명 + +배열 원소의 age가 30이상 50미만인 사람만 있는 객체의 배열을 만드세요 diff --git a/Challenge/wipddsu/filterAge/solve.js b/Challenge/wipddsu/filterAge/solve.js new file mode 100644 index 00000000..909299fe --- /dev/null +++ b/Challenge/wipddsu/filterAge/solve.js @@ -0,0 +1,8 @@ +// write your codes +function solution(inputArray) { + const result = inputArray.filter((item) => item['age'] >= 30 && item['age'] < 50); + + return result; +} + +exports.solution = solution; diff --git a/Challenge/wipddsu/filterAge/solve.test.js b/Challenge/wipddsu/filterAge/solve.test.js new file mode 100644 index 00000000..b9081601 --- /dev/null +++ b/Challenge/wipddsu/filterAge/solve.test.js @@ -0,0 +1,32 @@ +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); + }); +}); From a2308d98728236600b25a47711e6dedc65b05472 Mon Sep 17 00:00:00 2001 From: wipddsu Date: Thu, 18 Jan 2024 11:40:49 +0900 Subject: [PATCH 08/23] Solve: filterIntersection --- Challenge/wipddsu/filterIntersection/README.md | 5 +++++ Challenge/wipddsu/filterIntersection/solve.js | 5 +++++ .../wipddsu/filterIntersection/solve.test.js | 15 +++++++++++++++ 3 files changed, 25 insertions(+) create mode 100644 Challenge/wipddsu/filterIntersection/README.md create mode 100644 Challenge/wipddsu/filterIntersection/solve.js create mode 100644 Challenge/wipddsu/filterIntersection/solve.test.js diff --git a/Challenge/wipddsu/filterIntersection/README.md b/Challenge/wipddsu/filterIntersection/README.md new file mode 100644 index 00000000..d7c9ad39 --- /dev/null +++ b/Challenge/wipddsu/filterIntersection/README.md @@ -0,0 +1,5 @@ +# 문제제목 + +## 설명 + +두 배열의 교집합을 출력하세요! diff --git a/Challenge/wipddsu/filterIntersection/solve.js b/Challenge/wipddsu/filterIntersection/solve.js new file mode 100644 index 00000000..64d4301d --- /dev/null +++ b/Challenge/wipddsu/filterIntersection/solve.js @@ -0,0 +1,5 @@ +function solution(inputArray1, inputArray2) { + return inputArray1.filter((item) => inputArray2.includes(item)); +} + +exports.solution = solution; diff --git a/Challenge/wipddsu/filterIntersection/solve.test.js b/Challenge/wipddsu/filterIntersection/solve.test.js new file mode 100644 index 00000000..576cbc86 --- /dev/null +++ b/Challenge/wipddsu/filterIntersection/solve.test.js @@ -0,0 +1,15 @@ +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); + }); +}); From 585b512a7c834fe714a70cd89eed5e866dfe21c3 Mon Sep 17 00:00:00 2001 From: wipddsu Date: Fri, 19 Jan 2024 09:32:00 +0900 Subject: [PATCH 09/23] Solve: forEachFilter --- Challenge/wipddsu/forEachFilter/README.md | 3 +++ Challenge/wipddsu/forEachFilter/solve.js | 6 ++++++ Challenge/wipddsu/forEachFilter/solve.test.js | 12 ++++++++++++ 3 files changed, 21 insertions(+) create mode 100644 Challenge/wipddsu/forEachFilter/README.md create mode 100644 Challenge/wipddsu/forEachFilter/solve.js create mode 100644 Challenge/wipddsu/forEachFilter/solve.test.js diff --git a/Challenge/wipddsu/forEachFilter/README.md b/Challenge/wipddsu/forEachFilter/README.md new file mode 100644 index 00000000..6dcbc7c2 --- /dev/null +++ b/Challenge/wipddsu/forEachFilter/README.md @@ -0,0 +1,3 @@ +## 설명 + +배열 원소중 40 이상인 수만 뽑아 배열을 만드세요. diff --git a/Challenge/wipddsu/forEachFilter/solve.js b/Challenge/wipddsu/forEachFilter/solve.js new file mode 100644 index 00000000..11707955 --- /dev/null +++ b/Challenge/wipddsu/forEachFilter/solve.js @@ -0,0 +1,6 @@ +// write your codes +function solution(inputArray) { + return inputArray.filter((item) => item >= 40); +} + +exports.solution = solution; diff --git a/Challenge/wipddsu/forEachFilter/solve.test.js b/Challenge/wipddsu/forEachFilter/solve.test.js new file mode 100644 index 00000000..3d73b25c --- /dev/null +++ b/Challenge/wipddsu/forEachFilter/solve.test.js @@ -0,0 +1,12 @@ +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); + }); +}); From b8a24048019ade521f62d6e9977e905302cd5b25 Mon Sep 17 00:00:00 2001 From: wipddsu Date: Fri, 19 Jan 2024 10:13:27 +0900 Subject: [PATCH 10/23] Solve: forEachFilterIsNaN --- .../wipddsu/forEachFilterIsNaN/README.md | 3 ++ Challenge/wipddsu/forEachFilterIsNaN/solve.js | 6 ++++ .../wipddsu/forEachFilterIsNaN/solve.test.js | 28 +++++++++++++++++++ 3 files changed, 37 insertions(+) create mode 100644 Challenge/wipddsu/forEachFilterIsNaN/README.md create mode 100644 Challenge/wipddsu/forEachFilterIsNaN/solve.js create mode 100644 Challenge/wipddsu/forEachFilterIsNaN/solve.test.js diff --git a/Challenge/wipddsu/forEachFilterIsNaN/README.md b/Challenge/wipddsu/forEachFilterIsNaN/README.md new file mode 100644 index 00000000..570c030e --- /dev/null +++ b/Challenge/wipddsu/forEachFilterIsNaN/README.md @@ -0,0 +1,3 @@ +## 설명 + +배열 원소중 숫자인 원소만 뽑아 배열을 만드세요. diff --git a/Challenge/wipddsu/forEachFilterIsNaN/solve.js b/Challenge/wipddsu/forEachFilterIsNaN/solve.js new file mode 100644 index 00000000..699f5cb0 --- /dev/null +++ b/Challenge/wipddsu/forEachFilterIsNaN/solve.js @@ -0,0 +1,6 @@ +// write your codes +function solution(inputArray) { + return inputArray.filter((item) => typeof item === 'number'); +} + +exports.solution = solution; diff --git a/Challenge/wipddsu/forEachFilterIsNaN/solve.test.js b/Challenge/wipddsu/forEachFilterIsNaN/solve.test.js new file mode 100644 index 00000000..d6e118bb --- /dev/null +++ b/Challenge/wipddsu/forEachFilterIsNaN/solve.test.js @@ -0,0 +1,28 @@ +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 From 6bb1fa9e4437b4b616b2882aea7711fe05e4d181 Mon Sep 17 00:00:00 2001 From: wipddsu Date: Fri, 19 Jan 2024 10:18:09 +0900 Subject: [PATCH 11/23] Solve: forEachMap --- Challenge/wipddsu/forEachMap/README.md | 3 +++ Challenge/wipddsu/forEachMap/solve.js | 9 +++++++++ Challenge/wipddsu/forEachMap/solve.test.js | 12 ++++++++++++ 3 files changed, 24 insertions(+) create mode 100644 Challenge/wipddsu/forEachMap/README.md create mode 100644 Challenge/wipddsu/forEachMap/solve.js create mode 100644 Challenge/wipddsu/forEachMap/solve.test.js diff --git a/Challenge/wipddsu/forEachMap/README.md b/Challenge/wipddsu/forEachMap/README.md new file mode 100644 index 00000000..1e8e03c8 --- /dev/null +++ b/Challenge/wipddsu/forEachMap/README.md @@ -0,0 +1,3 @@ +## 설명 + +forEach 메소드를 사용해서 배열의 각 원소 끝에 '%'를 붙인 문자열 배열을 출력하세요 diff --git a/Challenge/wipddsu/forEachMap/solve.js b/Challenge/wipddsu/forEachMap/solve.js new file mode 100644 index 00000000..41e1a58f --- /dev/null +++ b/Challenge/wipddsu/forEachMap/solve.js @@ -0,0 +1,9 @@ +// write your codes +function solution(inputArray) { + const answer = []; + inputArray.forEach((item) => answer.push(item + '%')); + + return answer; +} + +exports.solution = solution; diff --git a/Challenge/wipddsu/forEachMap/solve.test.js b/Challenge/wipddsu/forEachMap/solve.test.js new file mode 100644 index 00000000..de4868c6 --- /dev/null +++ b/Challenge/wipddsu/forEachMap/solve.test.js @@ -0,0 +1,12 @@ +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); + }); +}); From 39fdee241a8bb2f68e9f573eeb7180e771c977b8 Mon Sep 17 00:00:00 2001 From: wipddsu Date: Fri, 19 Jan 2024 10:20:27 +0900 Subject: [PATCH 12/23] Solve: forEachReduce --- Challenge/wipddsu/forEachReduce/README.md | 3 ++ Challenge/wipddsu/forEachReduce/solve.js | 9 ++++++ Challenge/wipddsu/forEachReduce/solve.test.js | 28 +++++++++++++++++++ 3 files changed, 40 insertions(+) create mode 100644 Challenge/wipddsu/forEachReduce/README.md create mode 100644 Challenge/wipddsu/forEachReduce/solve.js create mode 100644 Challenge/wipddsu/forEachReduce/solve.test.js diff --git a/Challenge/wipddsu/forEachReduce/README.md b/Challenge/wipddsu/forEachReduce/README.md new file mode 100644 index 00000000..a984df2d --- /dev/null +++ b/Challenge/wipddsu/forEachReduce/README.md @@ -0,0 +1,3 @@ +## 설명 + +forEach 메소드를 사용해서 배열의 총 합을 출력하는 코드를 작성하세요 diff --git a/Challenge/wipddsu/forEachReduce/solve.js b/Challenge/wipddsu/forEachReduce/solve.js new file mode 100644 index 00000000..19d9e4b4 --- /dev/null +++ b/Challenge/wipddsu/forEachReduce/solve.js @@ -0,0 +1,9 @@ +// write your codes +function solution(inputArray) { + let answer = 0; + inputArray.forEach((item) => (answer += item)); + + return answer; +} + +exports.solution = solution; diff --git a/Challenge/wipddsu/forEachReduce/solve.test.js b/Challenge/wipddsu/forEachReduce/solve.test.js new file mode 100644 index 00000000..397e4b50 --- /dev/null +++ b/Challenge/wipddsu/forEachReduce/solve.test.js @@ -0,0 +1,28 @@ +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); + }); +}); From cf95756e95fb6b4301ab93b0d6653f392f621b9d Mon Sep 17 00:00:00 2001 From: wipddsu Date: Mon, 22 Jan 2024 11:01:41 +0900 Subject: [PATCH 13/23] Solve: mapAddPercent --- Challenge/wipddsu/mapAddPercent/README.md | 3 +++ Challenge/wipddsu/mapAddPercent/solve.js | 6 ++++++ Challenge/wipddsu/mapAddPercent/solve.test.js | 12 ++++++++++++ 3 files changed, 21 insertions(+) create mode 100644 Challenge/wipddsu/mapAddPercent/README.md create mode 100644 Challenge/wipddsu/mapAddPercent/solve.js create mode 100644 Challenge/wipddsu/mapAddPercent/solve.test.js diff --git a/Challenge/wipddsu/mapAddPercent/README.md b/Challenge/wipddsu/mapAddPercent/README.md new file mode 100644 index 00000000..75e73042 --- /dev/null +++ b/Challenge/wipddsu/mapAddPercent/README.md @@ -0,0 +1,3 @@ +## 설명 + +map 메소드를 사용해 배열 각각 숫자 뒤에 %를 붙인 문자열을 만드세요 diff --git a/Challenge/wipddsu/mapAddPercent/solve.js b/Challenge/wipddsu/mapAddPercent/solve.js new file mode 100644 index 00000000..79e1c12c --- /dev/null +++ b/Challenge/wipddsu/mapAddPercent/solve.js @@ -0,0 +1,6 @@ +// write your codes +function solution(inputArray) { + return inputArray.map((item) => `${item}%`); +} + +exports.solution = solution; diff --git a/Challenge/wipddsu/mapAddPercent/solve.test.js b/Challenge/wipddsu/mapAddPercent/solve.test.js new file mode 100644 index 00000000..dac1b3cc --- /dev/null +++ b/Challenge/wipddsu/mapAddPercent/solve.test.js @@ -0,0 +1,12 @@ +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); + }); +}); From bb1d440c5ad5b7bab5b315e0dfcf4107dfe143f0 Mon Sep 17 00:00:00 2001 From: wipddsu Date: Mon, 22 Jan 2024 11:12:55 +0900 Subject: [PATCH 14/23] Solve: mapAppendOrder --- Challenge/wipddsu/mapAppendOrder/README.md | 3 +++ Challenge/wipddsu/mapAppendOrder/solve.js | 15 +++++++++++++++ Challenge/wipddsu/mapAppendOrder/solve.test.js | 16 ++++++++++++++++ 3 files changed, 34 insertions(+) create mode 100644 Challenge/wipddsu/mapAppendOrder/README.md create mode 100644 Challenge/wipddsu/mapAppendOrder/solve.js create mode 100644 Challenge/wipddsu/mapAppendOrder/solve.test.js diff --git a/Challenge/wipddsu/mapAppendOrder/README.md b/Challenge/wipddsu/mapAppendOrder/README.md new file mode 100644 index 00000000..1435623a --- /dev/null +++ b/Challenge/wipddsu/mapAppendOrder/README.md @@ -0,0 +1,3 @@ +## 설명 + +배열의 값을 name 프로퍼티에 넣고 몇번째 원소인지를 order에 넣은 객체의 배열을 출력하세요 diff --git a/Challenge/wipddsu/mapAppendOrder/solve.js b/Challenge/wipddsu/mapAppendOrder/solve.js new file mode 100644 index 00000000..4ec82832 --- /dev/null +++ b/Challenge/wipddsu/mapAppendOrder/solve.js @@ -0,0 +1,15 @@ +// write your codes +function solution(inputArray) { + const result = []; + inputArray.map((item, i) => { + const obj = { + name: item, + order: i + 1, + }; + result.push(obj); + }); + + return result; +} + +exports.solution = solution; diff --git a/Challenge/wipddsu/mapAppendOrder/solve.test.js b/Challenge/wipddsu/mapAppendOrder/solve.test.js new file mode 100644 index 00000000..e08db10c --- /dev/null +++ b/Challenge/wipddsu/mapAppendOrder/solve.test.js @@ -0,0 +1,16 @@ +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); + }); +}); From b4a50d4e7e2bb90c1423e669bb6f5989873c4e33 Mon Sep 17 00:00:00 2001 From: wipddsu <117911142+wipddsu@users.noreply.github.com> Date: Mon, 22 Jan 2024 11:17:03 +0900 Subject: [PATCH 15/23] Update solve.js --- Challenge/wipddsu/mapAppendOrder/solve.js | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/Challenge/wipddsu/mapAppendOrder/solve.js b/Challenge/wipddsu/mapAppendOrder/solve.js index 4ec82832..8b9fe428 100644 --- a/Challenge/wipddsu/mapAppendOrder/solve.js +++ b/Challenge/wipddsu/mapAppendOrder/solve.js @@ -1,12 +1,7 @@ // write your codes function solution(inputArray) { - const result = []; - inputArray.map((item, i) => { - const obj = { - name: item, - order: i + 1, - }; - result.push(obj); + const result = inputArray.map((item, i) => { + return { name: item, order: i + 1 }; }); return result; From 142f4ae05468a689b718f995a3be1b54cc366543 Mon Sep 17 00:00:00 2001 From: wipddsu <117911142+wipddsu@users.noreply.github.com> Date: Tue, 23 Jan 2024 11:57:54 +0900 Subject: [PATCH 16/23] Solve: recommendAd --- Challenge/wipddsu/recommendAd/README.md | 15 +++++++++++ Challenge/wipddsu/recommendAd/solve.js | 29 +++++++++++++++++++++ Challenge/wipddsu/recommendAd/solve.test.js | 23 ++++++++++++++++ 3 files changed, 67 insertions(+) create mode 100644 Challenge/wipddsu/recommendAd/README.md create mode 100644 Challenge/wipddsu/recommendAd/solve.js create mode 100644 Challenge/wipddsu/recommendAd/solve.test.js diff --git a/Challenge/wipddsu/recommendAd/README.md b/Challenge/wipddsu/recommendAd/README.md new file mode 100644 index 00000000..132e8800 --- /dev/null +++ b/Challenge/wipddsu/recommendAd/README.md @@ -0,0 +1,15 @@ +# 문제제목 + +사용자가 안 본 광고는? + +## 설명 + +유튜브는 사용자가 프리미엄 회원이 아닌 경우 영상 시작이나 중간에 광고가 나오도록 설정되어 있습니다. + +[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/wipddsu/recommendAd/solve.js b/Challenge/wipddsu/recommendAd/solve.js new file mode 100644 index 00000000..39aed47d --- /dev/null +++ b/Challenge/wipddsu/recommendAd/solve.js @@ -0,0 +1,29 @@ +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 watched = []; + const result = []; + for (const item of userHistory) { + const itemArr = item['watched']; + for (const el of itemArr) { + watched.push(el); + } + } + + for (const item of inputArray) { + if (!watched.includes(item)) result.push(item); + } + + return result; +} + +exports.solution = solution; diff --git a/Challenge/wipddsu/recommendAd/solve.test.js b/Challenge/wipddsu/recommendAd/solve.test.js new file mode 100644 index 00000000..8a0f6464 --- /dev/null +++ b/Challenge/wipddsu/recommendAd/solve.test.js @@ -0,0 +1,23 @@ +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); + }); +}); From 28532a2334b25acf6d0bd100291486d878417211 Mon Sep 17 00:00:00 2001 From: wipddsu Date: Tue, 23 Jan 2024 11:44:13 +0900 Subject: [PATCH 17/23] Solve: recommendAd --- Challenge/wipddsu/mapAppendOrder/README.md | 3 -- Challenge/wipddsu/mapAppendOrder/solve.js | 10 ------- .../wipddsu/mapAppendOrder/solve.test.js | 16 ----------- .../wipddsu/reduceMaxValueNIndex/README.md | 3 ++ .../wipddsu/reduceMaxValueNIndex/solve.js | 13 +++++++++ .../reduceMaxValueNIndex/solve.test.js | 28 +++++++++++++++++++ 6 files changed, 44 insertions(+), 29 deletions(-) delete mode 100644 Challenge/wipddsu/mapAppendOrder/README.md delete mode 100644 Challenge/wipddsu/mapAppendOrder/solve.js delete mode 100644 Challenge/wipddsu/mapAppendOrder/solve.test.js create mode 100644 Challenge/wipddsu/reduceMaxValueNIndex/README.md create mode 100644 Challenge/wipddsu/reduceMaxValueNIndex/solve.js create mode 100644 Challenge/wipddsu/reduceMaxValueNIndex/solve.test.js diff --git a/Challenge/wipddsu/mapAppendOrder/README.md b/Challenge/wipddsu/mapAppendOrder/README.md deleted file mode 100644 index 1435623a..00000000 --- a/Challenge/wipddsu/mapAppendOrder/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## 설명 - -배열의 값을 name 프로퍼티에 넣고 몇번째 원소인지를 order에 넣은 객체의 배열을 출력하세요 diff --git a/Challenge/wipddsu/mapAppendOrder/solve.js b/Challenge/wipddsu/mapAppendOrder/solve.js deleted file mode 100644 index 8b9fe428..00000000 --- a/Challenge/wipddsu/mapAppendOrder/solve.js +++ /dev/null @@ -1,10 +0,0 @@ -// write your codes -function solution(inputArray) { - const result = inputArray.map((item, i) => { - return { name: item, order: i + 1 }; - }); - - return result; -} - -exports.solution = solution; diff --git a/Challenge/wipddsu/mapAppendOrder/solve.test.js b/Challenge/wipddsu/mapAppendOrder/solve.test.js deleted file mode 100644 index e08db10c..00000000 --- a/Challenge/wipddsu/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/wipddsu/reduceMaxValueNIndex/README.md b/Challenge/wipddsu/reduceMaxValueNIndex/README.md new file mode 100644 index 00000000..965bdec6 --- /dev/null +++ b/Challenge/wipddsu/reduceMaxValueNIndex/README.md @@ -0,0 +1,3 @@ +## 설명 + +reduce 메소드를 사용해 최댓값의 값을 maxValue에, 해당 값의 index를 idx에 넣은 객체를 출력하세요 diff --git a/Challenge/wipddsu/reduceMaxValueNIndex/solve.js b/Challenge/wipddsu/reduceMaxValueNIndex/solve.js new file mode 100644 index 00000000..43063d1c --- /dev/null +++ b/Challenge/wipddsu/reduceMaxValueNIndex/solve.js @@ -0,0 +1,13 @@ +// write your codes +function solution(inputArray) { + const maxValue = inputArray.reduce((acc, cur) => (acc < cur ? cur : acc), inputArray[0]); + const index = inputArray.indexOf(maxValue); + const result = { + maxValue: maxValue, + idx: index, + }; + + return result; +} + +exports.solution = solution; diff --git a/Challenge/wipddsu/reduceMaxValueNIndex/solve.test.js b/Challenge/wipddsu/reduceMaxValueNIndex/solve.test.js new file mode 100644 index 00000000..0daef5b8 --- /dev/null +++ b/Challenge/wipddsu/reduceMaxValueNIndex/solve.test.js @@ -0,0 +1,28 @@ +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); + }); +}); From 5cd34eb4db09522b1491db8ef7daadda3eb4a637 Mon Sep 17 00:00:00 2001 From: wipddsu Date: Tue, 23 Jan 2024 12:44:24 +0900 Subject: [PATCH 18/23] Solve: reduceNameNickname --- .../wipddsu/reduceNameNickname/README.md | 3 +++ Challenge/wipddsu/reduceNameNickname/solve.js | 15 +++++++++++ .../wipddsu/reduceNameNickname/solve.test.js | 25 +++++++++++++++++++ 3 files changed, 43 insertions(+) create mode 100644 Challenge/wipddsu/reduceNameNickname/README.md create mode 100644 Challenge/wipddsu/reduceNameNickname/solve.js create mode 100644 Challenge/wipddsu/reduceNameNickname/solve.test.js diff --git a/Challenge/wipddsu/reduceNameNickname/README.md b/Challenge/wipddsu/reduceNameNickname/README.md new file mode 100644 index 00000000..b6920e05 --- /dev/null +++ b/Challenge/wipddsu/reduceNameNickname/README.md @@ -0,0 +1,3 @@ +## 설명 + +입력받은 객채배열의 nickname을 key, name을 value로 하는 객체를 출력하세요 diff --git a/Challenge/wipddsu/reduceNameNickname/solve.js b/Challenge/wipddsu/reduceNameNickname/solve.js new file mode 100644 index 00000000..111c972d --- /dev/null +++ b/Challenge/wipddsu/reduceNameNickname/solve.js @@ -0,0 +1,15 @@ +// write your codes +function solution(inputArray) { + const result = {}; + + for (const item of inputArray) { + const name = item['name']; + const nickname = item['nickname']; + + result[nickname] = name; + } + + return result; +} + +exports.solution = solution; diff --git a/Challenge/wipddsu/reduceNameNickname/solve.test.js b/Challenge/wipddsu/reduceNameNickname/solve.test.js new file mode 100644 index 00000000..67b74529 --- /dev/null +++ b/Challenge/wipddsu/reduceNameNickname/solve.test.js @@ -0,0 +1,25 @@ +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); + }); +}); From b8feba83d1601ec985be258ed1be818621c1e27d Mon Sep 17 00:00:00 2001 From: wipddsu Date: Wed, 24 Jan 2024 11:53:37 +0900 Subject: [PATCH 19/23] Solve: reduceSum --- Challenge/wipddsu/reduceSum/README.md | 9 +++++++++ Challenge/wipddsu/reduceSum/solve.js | 6 ++++++ Challenge/wipddsu/reduceSum/solve.test.js | 12 ++++++++++++ 3 files changed, 27 insertions(+) create mode 100644 Challenge/wipddsu/reduceSum/README.md create mode 100644 Challenge/wipddsu/reduceSum/solve.js create mode 100644 Challenge/wipddsu/reduceSum/solve.test.js diff --git a/Challenge/wipddsu/reduceSum/README.md b/Challenge/wipddsu/reduceSum/README.md new file mode 100644 index 00000000..8c607eb2 --- /dev/null +++ b/Challenge/wipddsu/reduceSum/README.md @@ -0,0 +1,9 @@ +# 문제제목 + +## 설명 + +reduce 메소드를 사용해서 배열의 모든 수의 합을 구하세요. + +## Expected Output + +106 diff --git a/Challenge/wipddsu/reduceSum/solve.js b/Challenge/wipddsu/reduceSum/solve.js new file mode 100644 index 00000000..76ddc166 --- /dev/null +++ b/Challenge/wipddsu/reduceSum/solve.js @@ -0,0 +1,6 @@ +// write your codes +function solution(inputArray) { + return inputArray.reduce((acc, cur) => acc + cur, 0); +} + +exports.solution = solution; diff --git a/Challenge/wipddsu/reduceSum/solve.test.js b/Challenge/wipddsu/reduceSum/solve.test.js new file mode 100644 index 00000000..046c40cb --- /dev/null +++ b/Challenge/wipddsu/reduceSum/solve.test.js @@ -0,0 +1,12 @@ +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); + }); +}); From 8d468c03e8dd94928a9f7922d42332daf140f75b Mon Sep 17 00:00:00 2001 From: wipddsu Date: Wed, 24 Jan 2024 11:58:08 +0900 Subject: [PATCH 20/23] Solve: sortByPrice --- Challenge/wipddsu/sortByPrice/README.md | 14 +++++++++ Challenge/wipddsu/sortByPrice/solve.js | 6 ++++ Challenge/wipddsu/sortByPrice/solve.test.js | 34 +++++++++++++++++++++ 3 files changed, 54 insertions(+) create mode 100644 Challenge/wipddsu/sortByPrice/README.md create mode 100644 Challenge/wipddsu/sortByPrice/solve.js create mode 100644 Challenge/wipddsu/sortByPrice/solve.test.js diff --git a/Challenge/wipddsu/sortByPrice/README.md b/Challenge/wipddsu/sortByPrice/README.md new file mode 100644 index 00000000..b1ccf70e --- /dev/null +++ b/Challenge/wipddsu/sortByPrice/README.md @@ -0,0 +1,14 @@ +# 문제제목 + +## 설명 + +배열안의 객체를 price를 기준으로 오름차순 정렬한 배열을 출력하세요 + +## Expected Output + +[ + { name: '사과', price: 1000 }, + { name: '당근', price: 2000 }, + { name: '수박', price: 5000 }, + { name: '참외', price: 10000 } +] diff --git a/Challenge/wipddsu/sortByPrice/solve.js b/Challenge/wipddsu/sortByPrice/solve.js new file mode 100644 index 00000000..c5ab6eb2 --- /dev/null +++ b/Challenge/wipddsu/sortByPrice/solve.js @@ -0,0 +1,6 @@ +// write your codes +function solution(inputArray) { + return inputArray.sort((a, b) => (a.price > b.price ? 1 : -1)); +} + +exports.solution = solution; diff --git a/Challenge/wipddsu/sortByPrice/solve.test.js b/Challenge/wipddsu/sortByPrice/solve.test.js new file mode 100644 index 00000000..3d6a3431 --- /dev/null +++ b/Challenge/wipddsu/sortByPrice/solve.test.js @@ -0,0 +1,34 @@ +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); + }); +}); From 8a415176a3a33fa2e411ba42f817041145fd21d9 Mon Sep 17 00:00:00 2001 From: wipddsu Date: Wed, 24 Jan 2024 12:09:49 +0900 Subject: [PATCH 21/23] Solve: sortByPriceAndQuantity --- .../wipddsu/sortByPriceAndQuantity/README.md | 16 +++++++ .../wipddsu/sortByPriceAndQuantity/solve.js | 14 ++++++ .../sortByPriceAndQuantity/solve.test.js | 44 +++++++++++++++++++ 3 files changed, 74 insertions(+) create mode 100644 Challenge/wipddsu/sortByPriceAndQuantity/README.md create mode 100644 Challenge/wipddsu/sortByPriceAndQuantity/solve.js create mode 100644 Challenge/wipddsu/sortByPriceAndQuantity/solve.test.js diff --git a/Challenge/wipddsu/sortByPriceAndQuantity/README.md b/Challenge/wipddsu/sortByPriceAndQuantity/README.md new file mode 100644 index 00000000..41cd5c95 --- /dev/null +++ b/Challenge/wipddsu/sortByPriceAndQuantity/README.md @@ -0,0 +1,16 @@ +# 문제제목 + +## 설명 + +배열안의 객체를 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/wipddsu/sortByPriceAndQuantity/solve.js b/Challenge/wipddsu/sortByPriceAndQuantity/solve.js new file mode 100644 index 00000000..bc8e4f4a --- /dev/null +++ b/Challenge/wipddsu/sortByPriceAndQuantity/solve.js @@ -0,0 +1,14 @@ +// write your codes +function solution(inputArray) { + return inputArray.sort((a, b) => { + if (a.price > b.price) { + return 1; + } else if (a.price === b.price && a.quantity > b.quantity) { + return 1; + } else { + return -1; + } + }); +} + +exports.solution = solution; diff --git a/Challenge/wipddsu/sortByPriceAndQuantity/solve.test.js b/Challenge/wipddsu/sortByPriceAndQuantity/solve.test.js new file mode 100644 index 00000000..424f42b7 --- /dev/null +++ b/Challenge/wipddsu/sortByPriceAndQuantity/solve.test.js @@ -0,0 +1,44 @@ +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); + }); +}); From ecfbfdaa551f3ed8b0bae6a1477e84761ec13fab Mon Sep 17 00:00:00 2001 From: wipddsu Date: Wed, 24 Jan 2024 12:13:05 +0900 Subject: [PATCH 22/23] Update solve.js --- .../wipddsu/sortByPriceAndQuantity/solve.js | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/Challenge/wipddsu/sortByPriceAndQuantity/solve.js b/Challenge/wipddsu/sortByPriceAndQuantity/solve.js index bc8e4f4a..9c4b77a6 100644 --- a/Challenge/wipddsu/sortByPriceAndQuantity/solve.js +++ b/Challenge/wipddsu/sortByPriceAndQuantity/solve.js @@ -1,14 +1,15 @@ // write your codes function solution(inputArray) { - return inputArray.sort((a, b) => { - if (a.price > b.price) { - return 1; - } else if (a.price === b.price && a.quantity > b.quantity) { - return 1; - } else { - return -1; - } - }); + return inputArray.sort((a, b) => a.price - b.price || a.quantity - b.quantity); + // return inputArray.sort((a, b) => { + // if (a.price > b.price) { + // return 1; + // } else if (a.price === b.price && a.quantity > b.quantity) { + // return 1; + // } else { + // return -1; + // } + // }); } exports.solution = solution; From 076b7e9a120b164ce0e9c61d838581e27709b948 Mon Sep 17 00:00:00 2001 From: wipddsu Date: Wed, 24 Jan 2024 12:15:57 +0900 Subject: [PATCH 23/23] Solve: spreadOperatorMaxValue --- Challenge/wipddsu/spreadOperatorMaxValue/README.md | 3 +++ Challenge/wipddsu/spreadOperatorMaxValue/solve.js | 9 +++++++++ .../wipddsu/spreadOperatorMaxValue/solve.test.js | 12 ++++++++++++ 3 files changed, 24 insertions(+) create mode 100644 Challenge/wipddsu/spreadOperatorMaxValue/README.md create mode 100644 Challenge/wipddsu/spreadOperatorMaxValue/solve.js create mode 100644 Challenge/wipddsu/spreadOperatorMaxValue/solve.test.js diff --git a/Challenge/wipddsu/spreadOperatorMaxValue/README.md b/Challenge/wipddsu/spreadOperatorMaxValue/README.md new file mode 100644 index 00000000..164b68a1 --- /dev/null +++ b/Challenge/wipddsu/spreadOperatorMaxValue/README.md @@ -0,0 +1,3 @@ +## 설명 + +Spread Operator를 이용해서 값의 최대, 최소값을 구하세요 diff --git a/Challenge/wipddsu/spreadOperatorMaxValue/solve.js b/Challenge/wipddsu/spreadOperatorMaxValue/solve.js new file mode 100644 index 00000000..f90cbdd1 --- /dev/null +++ b/Challenge/wipddsu/spreadOperatorMaxValue/solve.js @@ -0,0 +1,9 @@ +// 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/wipddsu/spreadOperatorMaxValue/solve.test.js b/Challenge/wipddsu/spreadOperatorMaxValue/solve.test.js new file mode 100644 index 00000000..26f2abf9 --- /dev/null +++ b/Challenge/wipddsu/spreadOperatorMaxValue/solve.test.js @@ -0,0 +1,12 @@ +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); + }); +});