diff --git a/Challenge/jmjmjm/everyArray/README.md b/Challenge/jmjmjm/everyArray/README.md new file mode 100644 index 00000000..442558f6 --- /dev/null +++ b/Challenge/jmjmjm/everyArray/README.md @@ -0,0 +1,9 @@ +# 문제제목 + +## 설명 + +every를 이용해서 모든 원소가 짝수인지 아닌지를 판별하세요 + +## Expected Output + +true \ No newline at end of file diff --git a/Challenge/jmjmjm/everyArray/solve.js b/Challenge/jmjmjm/everyArray/solve.js new file mode 100644 index 00000000..9b97d897 --- /dev/null +++ b/Challenge/jmjmjm/everyArray/solve.js @@ -0,0 +1,8 @@ +const inputArray = [2, 3, 6, 8, 10]; + +let answer = inputArray.every(item => { + return item % 2 == 0; +}) + +console.log(answer); + diff --git a/Challenge/jmjmjm/expDivOdd/README.md b/Challenge/jmjmjm/expDivOdd/README.md new file mode 100644 index 00000000..c07ab10b --- /dev/null +++ b/Challenge/jmjmjm/expDivOdd/README.md @@ -0,0 +1,3 @@ +## 설명 + +제곱한 후 3으로 나눈 나머지가 홀수인 것 을 뽑은 배열의 총 합을 구하세요. diff --git a/Challenge/jmjmjm/expDivOdd/solve.js b/Challenge/jmjmjm/expDivOdd/solve.js new file mode 100644 index 00000000..2f90df3a --- /dev/null +++ b/Challenge/jmjmjm/expDivOdd/solve.js @@ -0,0 +1,12 @@ +// 제곱한 후 3으로 나눈 나머지가 홀수인 것 을 뽑은 배열의 총 합을 구하세요. + +const inputArray = [2, 3, 6, 8, 10]; + +let answer = inputArray + .map((e) => e ** 2) + .filter((e) => e % 3 == 1) + .reduce((acc, cur) => { + return acc + cur; + }, 0); + +console.log(answer); diff --git a/Challenge/jmjmjm/figureSkating/README.md b/Challenge/jmjmjm/figureSkating/README.md new file mode 100644 index 00000000..54b85fbd --- /dev/null +++ b/Challenge/jmjmjm/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/jmjmjm/figureSkating/solve.js b/Challenge/jmjmjm/figureSkating/solve.js new file mode 100644 index 00000000..3b16aa19 --- /dev/null +++ b/Challenge/jmjmjm/figureSkating/solve.js @@ -0,0 +1,87 @@ +// 기본 점수 +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 answer = inputArray + .filter((player) => { + return ( + player.goe.jump.length >= baseAssignment.jump && + player.goe.spin.length >= baseAssignment.spin && + player.goe.step.length >= baseAssignment.step + ); + }) + .map((v) => { + //TES + let result = 0; + 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 * baseAssignment.spin; + }, 0); + result += v.goe.step + .sort((a, b) => b - a) + .slice(0, baseAssignment.step) + .reduce((acc, cur) => { + return acc + cur * baseAssignment.step; + }, 0); + // PCS + result += v.pcs; + // PENALTY + result -= v.penalty; + + return { + name: v.name, + score: result, + }; + }); + +console.log(answer); diff --git a/Challenge/jmjmjm/filterAge/README.md b/Challenge/jmjmjm/filterAge/README.md new file mode 100644 index 00000000..873a15c1 --- /dev/null +++ b/Challenge/jmjmjm/filterAge/README.md @@ -0,0 +1,3 @@ +## 설명 + +배열 원소의 age가 30이상 50미만인 사람만 있는 객체의 배열을 만드세요 diff --git a/Challenge/jmjmjm/filterAge/solve.js b/Challenge/jmjmjm/filterAge/solve.js new file mode 100644 index 00000000..6305168c --- /dev/null +++ b/Challenge/jmjmjm/filterAge/solve.js @@ -0,0 +1,19 @@ +// 배열 원소의 age가 30이상 50미만인 사람만 있는 객체의 배열을 만드세요 +// write your codes + +const inputArray = [ + {name: '재만', age: 36}, + {name: '준호', age: 30}, + {name: '영희', age: 28}, + {name: '은혜', age: 45}, + {name: '영수', age: 55} +]; + +let answer = inputArray.filter(e => e.age >= 30 && e.age < 50) + .sort(function(a, b) { + if (a.age > b.age) return 1; + if (a.age == b.age) return 0; + if (a.age < b.age) return -1; + }) + +console.log(answer); diff --git a/Challenge/jmjmjm/filterIntersection/README.md b/Challenge/jmjmjm/filterIntersection/README.md new file mode 100644 index 00000000..d7c9ad39 --- /dev/null +++ b/Challenge/jmjmjm/filterIntersection/README.md @@ -0,0 +1,5 @@ +# 문제제목 + +## 설명 + +두 배열의 교집합을 출력하세요! diff --git a/Challenge/jmjmjm/filterIntersection/solve.js b/Challenge/jmjmjm/filterIntersection/solve.js new file mode 100644 index 00000000..6f07c8a3 --- /dev/null +++ b/Challenge/jmjmjm/filterIntersection/solve.js @@ -0,0 +1,8 @@ +const tempA = [1, 2, 3, 4, 5]; +const tempB = [3, 4, 5, 6, 7]; + +const answer = tempA.filter(e => tempB.includes(e)); + +console.log(answer); + + diff --git a/Challenge/JM Lim/filterOdd/README.md b/Challenge/jmjmjm/filterOdd/README.md similarity index 100% rename from Challenge/JM Lim/filterOdd/README.md rename to Challenge/jmjmjm/filterOdd/README.md diff --git a/Challenge/JM Lim/filterOdd/solve.js b/Challenge/jmjmjm/filterOdd/solve.js similarity index 96% rename from Challenge/JM Lim/filterOdd/solve.js rename to Challenge/jmjmjm/filterOdd/solve.js index a6895962..f8c9d11d 100644 --- a/Challenge/JM Lim/filterOdd/solve.js +++ b/Challenge/jmjmjm/filterOdd/solve.js @@ -2,6 +2,6 @@ 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/jmjmjm/findWord/README.md b/Challenge/jmjmjm/findWord/README.md new file mode 100644 index 00000000..8ef123f4 --- /dev/null +++ b/Challenge/jmjmjm/findWord/README.md @@ -0,0 +1,9 @@ +# 문제제목 + +## 설명 + +용가리라는 단어가 있으면 true 없으면 false를 출력 + +## Expected Output + +true diff --git a/Challenge/jmjmjm/findWord/solve.js b/Challenge/jmjmjm/findWord/solve.js new file mode 100644 index 00000000..e63b8ec5 --- /dev/null +++ b/Challenge/jmjmjm/findWord/solve.js @@ -0,0 +1,5 @@ +const inputArray = ["잠", "자", "고", "싶", "다", "용가리", "jmjmjm"]; + +const answer = inputArray.includes("용가리"); + +console.log(answer); diff --git a/Challenge/JM Lim/forEachFilter/README.md b/Challenge/jmjmjm/forEachFilter/README.md similarity index 100% rename from Challenge/JM Lim/forEachFilter/README.md rename to Challenge/jmjmjm/forEachFilter/README.md diff --git a/Challenge/JM Lim/forEachFilter/solve.js b/Challenge/jmjmjm/forEachFilter/solve.js similarity index 97% rename from Challenge/JM Lim/forEachFilter/solve.js rename to Challenge/jmjmjm/forEachFilter/solve.js index a8f983fc..43822b1d 100644 --- a/Challenge/JM Lim/forEachFilter/solve.js +++ b/Challenge/jmjmjm/forEachFilter/solve.js @@ -4,6 +4,6 @@ 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/jmjmjm/forEachFilterIsNaN/README.md similarity index 100% rename from Challenge/JM Lim/forEachFilterIsNaN/README.md rename to Challenge/jmjmjm/forEachFilterIsNaN/README.md diff --git a/Challenge/JM Lim/forEachFilterIsNaN/solve.js b/Challenge/jmjmjm/forEachFilterIsNaN/solve.js similarity index 97% rename from Challenge/JM Lim/forEachFilterIsNaN/solve.js rename to Challenge/jmjmjm/forEachFilterIsNaN/solve.js index 72205624..8ba2517d 100644 --- a/Challenge/JM Lim/forEachFilterIsNaN/solve.js +++ b/Challenge/jmjmjm/forEachFilterIsNaN/solve.js @@ -6,6 +6,7 @@ inputArray.forEach(e => { if (Number.isInteger(e)) { answer.push(e) } -}) +}); + console.log(answer); diff --git a/Challenge/JM Lim/forEachMap/README.md b/Challenge/jmjmjm/forEachMap/README.md similarity index 100% rename from Challenge/JM Lim/forEachMap/README.md rename to Challenge/jmjmjm/forEachMap/README.md diff --git a/Challenge/JM Lim/forEachMap/solve.js b/Challenge/jmjmjm/forEachMap/solve.js similarity index 97% rename from Challenge/JM Lim/forEachMap/solve.js rename to Challenge/jmjmjm/forEachMap/solve.js index 09fc7b9c..c47424d5 100644 --- a/Challenge/JM Lim/forEachMap/solve.js +++ b/Challenge/jmjmjm/forEachMap/solve.js @@ -5,6 +5,6 @@ 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/jmjmjm/forEachReduce/README.md similarity index 100% rename from Challenge/JM Lim/forEachReduce/README.md rename to Challenge/jmjmjm/forEachReduce/README.md diff --git a/Challenge/JM Lim/forEachReduce/solve.js b/Challenge/jmjmjm/forEachReduce/solve.js similarity index 95% rename from Challenge/JM Lim/forEachReduce/solve.js rename to Challenge/jmjmjm/forEachReduce/solve.js index 41d75ad5..2e49b6c0 100644 --- a/Challenge/JM Lim/forEachReduce/solve.js +++ b/Challenge/jmjmjm/forEachReduce/solve.js @@ -4,6 +4,6 @@ let answer = ''; answer = inputArray.reduce((a, c) => { return a+c -}, 0) +}, 0); console.log(answer); diff --git a/Challenge/jmjmjm/mapAddPercent/README.md b/Challenge/jmjmjm/mapAddPercent/README.md new file mode 100644 index 00000000..75e73042 --- /dev/null +++ b/Challenge/jmjmjm/mapAddPercent/README.md @@ -0,0 +1,3 @@ +## 설명 + +map 메소드를 사용해 배열 각각 숫자 뒤에 %를 붙인 문자열을 만드세요 diff --git a/Challenge/jmjmjm/mapAddPercent/solve.js b/Challenge/jmjmjm/mapAddPercent/solve.js new file mode 100644 index 00000000..ac162a0e --- /dev/null +++ b/Challenge/jmjmjm/mapAddPercent/solve.js @@ -0,0 +1,5 @@ +const inputArray = [100, 10, 20, 40]; + +const answer = inputArray.map((e) => e + "%"); + +console.log(answer); diff --git a/Challenge/jmjmjm/mapAppendOrder/README.md b/Challenge/jmjmjm/mapAppendOrder/README.md new file mode 100644 index 00000000..1435623a --- /dev/null +++ b/Challenge/jmjmjm/mapAppendOrder/README.md @@ -0,0 +1,3 @@ +## 설명 + +배열의 값을 name 프로퍼티에 넣고 몇번째 원소인지를 order에 넣은 객체의 배열을 출력하세요 diff --git a/Challenge/jmjmjm/mapAppendOrder/solve.js b/Challenge/jmjmjm/mapAppendOrder/solve.js new file mode 100644 index 00000000..11caf804 --- /dev/null +++ b/Challenge/jmjmjm/mapAppendOrder/solve.js @@ -0,0 +1,8 @@ +const inputArray = ["홍길동", "둘리", "루피"]; + +const answer = inputArray.map((el, idx) => { + return { + name: el, + order: idx + 1, + }; +}); diff --git a/Challenge/jmjmjm/recommendAd/README.md b/Challenge/jmjmjm/recommendAd/README.md new file mode 100644 index 00000000..132e8800 --- /dev/null +++ b/Challenge/jmjmjm/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/jmjmjm/recommendAd/solve.js b/Challenge/jmjmjm/recommendAd/solve.js new file mode 100644 index 00000000..c4eff6d6 --- /dev/null +++ b/Challenge/jmjmjm/recommendAd/solve.js @@ -0,0 +1,28 @@ +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", + "그랑사가", + "농심", + "딱좋은데이", + "빙그레", + "쌍용자동차", + "켈로그코리아", +]; +let allAdv = []; + +userHistory.forEach((el) => allAdv.push(...el.watched)); +const answer = advList.filter((e) => !allAdv.includes(e)); + +console.log(answer); diff --git a/Challenge/jmjmjm/reduceMaxValueNIndex/README.md b/Challenge/jmjmjm/reduceMaxValueNIndex/README.md new file mode 100644 index 00000000..965bdec6 --- /dev/null +++ b/Challenge/jmjmjm/reduceMaxValueNIndex/README.md @@ -0,0 +1,3 @@ +## 설명 + +reduce 메소드를 사용해 최댓값의 값을 maxValue에, 해당 값의 index를 idx에 넣은 객체를 출력하세요 diff --git a/Challenge/jmjmjm/reduceMaxValueNIndex/solve.js b/Challenge/jmjmjm/reduceMaxValueNIndex/solve.js new file mode 100644 index 00000000..36baa9f8 --- /dev/null +++ b/Challenge/jmjmjm/reduceMaxValueNIndex/solve.js @@ -0,0 +1,4 @@ +// write your codes +function solution(inputArray) {} + +exports.solution = solution; diff --git a/Challenge/jmjmjm/reduceNameNickname/README.md b/Challenge/jmjmjm/reduceNameNickname/README.md new file mode 100644 index 00000000..b6920e05 --- /dev/null +++ b/Challenge/jmjmjm/reduceNameNickname/README.md @@ -0,0 +1,3 @@ +## 설명 + +입력받은 객채배열의 nickname을 key, name을 value로 하는 객체를 출력하세요 diff --git a/Challenge/jmjmjm/reduceNameNickname/solve.js b/Challenge/jmjmjm/reduceNameNickname/solve.js new file mode 100644 index 00000000..36baa9f8 --- /dev/null +++ b/Challenge/jmjmjm/reduceNameNickname/solve.js @@ -0,0 +1,4 @@ +// write your codes +function solution(inputArray) {} + +exports.solution = solution; diff --git a/Challenge/jmjmjm/reduceSum/README.md b/Challenge/jmjmjm/reduceSum/README.md new file mode 100644 index 00000000..8c607eb2 --- /dev/null +++ b/Challenge/jmjmjm/reduceSum/README.md @@ -0,0 +1,9 @@ +# 문제제목 + +## 설명 + +reduce 메소드를 사용해서 배열의 모든 수의 합을 구하세요. + +## Expected Output + +106 diff --git a/Challenge/jmjmjm/reduceSum/solve.js b/Challenge/jmjmjm/reduceSum/solve.js new file mode 100644 index 00000000..36baa9f8 --- /dev/null +++ b/Challenge/jmjmjm/reduceSum/solve.js @@ -0,0 +1,4 @@ +// write your codes +function solution(inputArray) {} + +exports.solution = solution; diff --git a/Challenge/jmjmjm/sortByPrice/README.md b/Challenge/jmjmjm/sortByPrice/README.md new file mode 100644 index 00000000..b1ccf70e --- /dev/null +++ b/Challenge/jmjmjm/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/jmjmjm/sortByPrice/solve.js b/Challenge/jmjmjm/sortByPrice/solve.js new file mode 100644 index 00000000..36baa9f8 --- /dev/null +++ b/Challenge/jmjmjm/sortByPrice/solve.js @@ -0,0 +1,4 @@ +// write your codes +function solution(inputArray) {} + +exports.solution = solution; diff --git a/Challenge/jmjmjm/sortByPriceAndQuantity/README.md b/Challenge/jmjmjm/sortByPriceAndQuantity/README.md new file mode 100644 index 00000000..41cd5c95 --- /dev/null +++ b/Challenge/jmjmjm/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/jmjmjm/sortByPriceAndQuantity/solve.js b/Challenge/jmjmjm/sortByPriceAndQuantity/solve.js new file mode 100644 index 00000000..36baa9f8 --- /dev/null +++ b/Challenge/jmjmjm/sortByPriceAndQuantity/solve.js @@ -0,0 +1,4 @@ +// write your codes +function solution(inputArray) {} + +exports.solution = solution; diff --git a/Challenge/jmjmjm/spreadOperatorMaxValue/README.md b/Challenge/jmjmjm/spreadOperatorMaxValue/README.md new file mode 100644 index 00000000..164b68a1 --- /dev/null +++ b/Challenge/jmjmjm/spreadOperatorMaxValue/README.md @@ -0,0 +1,3 @@ +## 설명 + +Spread Operator를 이용해서 값의 최대, 최소값을 구하세요 diff --git a/Challenge/jmjmjm/spreadOperatorMaxValue/solve.js b/Challenge/jmjmjm/spreadOperatorMaxValue/solve.js new file mode 100644 index 00000000..36baa9f8 --- /dev/null +++ b/Challenge/jmjmjm/spreadOperatorMaxValue/solve.js @@ -0,0 +1,4 @@ +// write your codes +function solution(inputArray) {} + +exports.solution = solution;