From 9efb14221a7f31595486879de0da678ce348c0fa Mon Sep 17 00:00:00 2001 From: Yenowme <76904042+Yenowme@users.noreply.github.com> Date: Sun, 13 Feb 2022 17:50:32 +0900 Subject: [PATCH 01/15] =?UTF-8?q?week7=20=ED=83=80=EA=B2=9F=EB=84=98?= =?UTF-8?q?=EB=B2=84,=20124=20=EB=82=98=EB=9D=BC=EC=9D=98=20=EC=88=AB?= =?UTF-8?q?=EC=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...274\354\235\230 \354\210\253\354\236\220.js" | 6 ++++++ ...200\352\262\237 \353\204\230\353\262\204.js" | 17 +++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 "yena/7week/124 \353\202\230\353\235\274\354\235\230 \354\210\253\354\236\220.js" create mode 100644 "yena/7week/\355\203\200\352\262\237 \353\204\230\353\262\204.js" diff --git "a/yena/7week/124 \353\202\230\353\235\274\354\235\230 \354\210\253\354\236\220.js" "b/yena/7week/124 \353\202\230\353\235\274\354\235\230 \354\210\253\354\236\220.js" new file mode 100644 index 0000000..4daf582 --- /dev/null +++ "b/yena/7week/124 \353\202\230\353\235\274\354\235\230 \354\210\253\354\236\220.js" @@ -0,0 +1,6 @@ +function solution(n) { + if (n < 4) return n === 3 ? "4" : n + ""; + else if (n % 3 === 0) { + return solution(parseInt(n - 1 / 3)) * 1 + 2; + } else return solution(parseInt(n / 3)) + solution(n % 3); +} diff --git "a/yena/7week/\355\203\200\352\262\237 \353\204\230\353\262\204.js" "b/yena/7week/\355\203\200\352\262\237 \353\204\230\353\262\204.js" new file mode 100644 index 0000000..60bb7d1 --- /dev/null +++ "b/yena/7week/\355\203\200\352\262\237 \353\204\230\353\262\204.js" @@ -0,0 +1,17 @@ +function solution(numbers, target) { + let answer = 0; + const numlen = numbers.length; + + function _soultion(number, i) { + if (i === numlen) { + if (number === target) { + answer++; + } + return; + } + _soultion(number + numbers[i], i + 1); + _soultion(number - numbers[i], i + 1); + } + _soultion(0, 0); + return answer; +} From dfe6895e4f0019b1900f790bd5f94c81bc0c9077 Mon Sep 17 00:00:00 2001 From: Yenowme <76904042+Yenowme@users.noreply.github.com> Date: Sat, 19 Feb 2022 16:16:17 +0900 Subject: [PATCH 02/15] week8 --- ...1\355\225\234 \354\202\254\352\260\201\355\230\225.js" | 8 ++++++++ "yena/8week/\354\230\210\354\202\260.js" | 7 +++++++ ...14\354\226\221\353\215\224\355\225\230\352\270\260.js" | 7 +++++++ 3 files changed, 22 insertions(+) create mode 100644 "yena/8week/\353\251\200\354\251\241\355\225\234 \354\202\254\352\260\201\355\230\225.js" create mode 100644 "yena/8week/\354\230\210\354\202\260.js" create mode 100644 "yena/8week/\354\235\214\354\226\221\353\215\224\355\225\230\352\270\260.js" diff --git "a/yena/8week/\353\251\200\354\251\241\355\225\234 \354\202\254\352\260\201\355\230\225.js" "b/yena/8week/\353\251\200\354\251\241\355\225\234 \354\202\254\352\260\201\355\230\225.js" new file mode 100644 index 0000000..b0b0471 --- /dev/null +++ "b/yena/8week/\353\251\200\354\251\241\355\225\234 \354\202\254\352\260\201\355\230\225.js" @@ -0,0 +1,8 @@ +function divisor(max, min) { + if (max % min === 0) return min; + return divisor(min, max % min); +} +function solution(w, h) { + const minDivisor = w > h ? divisor(w, h) : divisor(h, w); + return w * h - (w + h - minDivisor); +} diff --git "a/yena/8week/\354\230\210\354\202\260.js" "b/yena/8week/\354\230\210\354\202\260.js" new file mode 100644 index 0000000..84cd6ca --- /dev/null +++ "b/yena/8week/\354\230\210\354\202\260.js" @@ -0,0 +1,7 @@ +function solution(d, budget) { + let answer = 0; + d.sort((a, b) => a - b).forEach((i) => { + if (budget - i >= 0) (budget = budget - i), answer++; + }); + return answer; +} diff --git "a/yena/8week/\354\235\214\354\226\221\353\215\224\355\225\230\352\270\260.js" "b/yena/8week/\354\235\214\354\226\221\353\215\224\355\225\230\352\270\260.js" new file mode 100644 index 0000000..add0197 --- /dev/null +++ "b/yena/8week/\354\235\214\354\226\221\353\215\224\355\225\230\352\270\260.js" @@ -0,0 +1,7 @@ +function solution(absolutes, signs) { + const answer = absolutes.reduce((acc, cur, idx) => { + if (signs[idx]) return acc + cur; + else return acc - cur; + }, 0); + return answer; +} From 6d6374fef60ffbe8a6d419f2a2a8bd0d028a60e9 Mon Sep 17 00:00:00 2001 From: Yenowme <76904042+Yenowme@users.noreply.github.com> Date: Sun, 13 Mar 2022 19:45:18 +0900 Subject: [PATCH 03/15] =?UTF-8?q?solution:=20=EC=9E=90=EB=A6=BF=EC=88=98?= =?UTF-8?q?=EC=9D=98=20=ED=95=A9,=20=EB=92=A4=EC=A7=91=EC=9D=80=20?= =?UTF-8?q?=EC=86=8C=EC=88=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\221\354\235\200 \354\206\214\354\210\230.js" | 16 ++++++++++++++++ ...\277\354\210\230\354\235\230 \355\225\251.js" | 13 +++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 "yena/\354\231\204\354\240\204\355\203\220\354\203\211/\353\222\244\354\247\221\354\235\200 \354\206\214\354\210\230.js" create mode 100644 "yena/\354\231\204\354\240\204\355\203\220\354\203\211/\354\236\220\353\246\277\354\210\230\354\235\230 \355\225\251.js" diff --git "a/yena/\354\231\204\354\240\204\355\203\220\354\203\211/\353\222\244\354\247\221\354\235\200 \354\206\214\354\210\230.js" "b/yena/\354\231\204\354\240\204\355\203\220\354\203\211/\353\222\244\354\247\221\354\235\200 \354\206\214\354\210\230.js" new file mode 100644 index 0000000..b9e298e --- /dev/null +++ "b/yena/\354\231\204\354\240\204\355\203\220\354\203\211/\353\222\244\354\247\221\354\235\200 \354\206\214\354\210\230.js" @@ -0,0 +1,16 @@ +function isPrime(num) { + if (num < 2) return false; + for (let i = 2; i * i <= num; i++) { + if (num % i === 0) return false; + } + return true; +} +function solution(arr) { + const reverseArr = arr.map((i) => { + return i.toString().split("").reverse().join("") * 1; + }); + return reverseArr.filter((i) => isPrime(i)); +} + +let arr = [32, 55, 62, 20, 250, 370, 200, 30, 100]; +console.log(solution(arr)); diff --git "a/yena/\354\231\204\354\240\204\355\203\220\354\203\211/\354\236\220\353\246\277\354\210\230\354\235\230 \355\225\251.js" "b/yena/\354\231\204\354\240\204\355\203\220\354\203\211/\354\236\220\353\246\277\354\210\230\354\235\230 \355\225\251.js" new file mode 100644 index 0000000..e8b5fc9 --- /dev/null +++ "b/yena/\354\231\204\354\240\204\355\203\220\354\203\211/\354\236\220\353\246\277\354\210\230\354\235\230 \355\225\251.js" @@ -0,0 +1,13 @@ +function solution(n, arr) { + const sumArr = arr.map((item) => { + const numArr = item.toString().split(""); + const sum = numArr.reduce((acc, cur) => +acc + +cur); + return sum; + }); + const max = Math.max(...sumArr); + const maxArr = arr.filter((i, idx) => sumArr[idx] === max); + return Math.max(...maxArr); +} + +let arr = [128, 460, 603, 40, 521, 137, 123]; +console.log(solution(7, arr)); From 97aecdf1a80edca105b9c054bef65a6d53ba885d Mon Sep 17 00:00:00 2001 From: Yenowme <76904042+Yenowme@users.noreply.github.com> Date: Mon, 14 Mar 2022 15:46:31 +0900 Subject: [PATCH 04/15] =?UTF-8?q?solution:=20=EB=A9=98=ED=86=A0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../\353\251\230\355\206\240\353\247\201.js" | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 "yena/\354\231\204\354\240\204\355\203\220\354\203\211/\353\251\230\355\206\240\353\247\201.js" diff --git "a/yena/\354\231\204\354\240\204\355\203\220\354\203\211/\353\251\230\355\206\240\353\247\201.js" "b/yena/\354\231\204\354\240\204\355\203\220\354\203\211/\353\251\230\355\206\240\353\247\201.js" new file mode 100644 index 0000000..f77e205 --- /dev/null +++ "b/yena/\354\231\204\354\240\204\355\203\220\354\203\211/\353\251\230\355\206\240\353\247\201.js" @@ -0,0 +1,34 @@ +function solution(test) { + const studentNum = test[0].length; + const arr = []; + for (let i = 0; i < test.length; i++) { + for (let j = 0; j < studentNum; j++) { + for (let k = j + 1; k < studentNum; k++) { + if (i === 0) { + arr.push([test[i][j], test[i][k]]); + } else { + let index = -1; + arr.forEach((item, idx) => { + if ( + item.join("") === [test[i][k], test[i][j]].join("") + ) { + index = idx; + return; + } + }); + if (index > -1) arr.splice(index, 1); + } + } + } + } + return arr.length; +} + +let arr = [ + [3, 4, 1, 2], + [1, 4, 5, 2], + [4, 3, 2, 1], + [3, 1, 4, 2], +]; + +console.log(solution(arr)); From 6f3ba4ebcaec0af47e429ef3d5eec676bf82e09e Mon Sep 17 00:00:00 2001 From: Yenowme <76904042+Yenowme@users.noreply.github.com> Date: Thu, 17 Mar 2022 21:25:10 +0900 Subject: [PATCH 05/15] =?UTF-8?q?solve:=20=EC=A1=B8=EC=97=85=EC=84=A0?= =?UTF-8?q?=EB=AC=BC,=20K=EB=B2=88=EC=A7=B8=20=ED=81=B0=20=EC=88=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\354\247\270 \355\201\260 \354\210\230.js" | 19 +++++++++++++ ...0\354\227\205 \354\204\240\353\254\274.js" | 27 +++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 "yena/\354\231\204\354\240\204\355\203\220\354\203\211/K\353\262\210\354\247\270 \355\201\260 \354\210\230.js" create mode 100644 "yena/\354\231\204\354\240\204\355\203\220\354\203\211/\354\241\270\354\227\205 \354\204\240\353\254\274.js" diff --git "a/yena/\354\231\204\354\240\204\355\203\220\354\203\211/K\353\262\210\354\247\270 \355\201\260 \354\210\230.js" "b/yena/\354\231\204\354\240\204\355\203\220\354\203\211/K\353\262\210\354\247\270 \355\201\260 \354\210\230.js" new file mode 100644 index 0000000..d35198a --- /dev/null +++ "b/yena/\354\231\204\354\240\204\355\203\220\354\203\211/K\353\262\210\354\247\270 \355\201\260 \354\210\230.js" @@ -0,0 +1,19 @@ +function solution(n, k, card) { + let answer = new Set(); + for (let i = 0; i < card.length; i++) { + for (let j = i + 1; j < card.length; j++) { + for (let k = j + 1; k < card.length; k++) { + answer.add(card[i] + card[j] + card[k]); + } + } + } + answer = [...answer].sort((a, b) => b - a); + return answer[k - 1]; +} + +let arr = [13, 15, 34, 23, 45, 65, 33, 11, 26, 42]; +console.log(solution(10, 3, arr)); + +/** + * 합해서 같은 값이 나오는 경우 중복 제거 + */ diff --git "a/yena/\354\231\204\354\240\204\355\203\220\354\203\211/\354\241\270\354\227\205 \354\204\240\353\254\274.js" "b/yena/\354\231\204\354\240\204\355\203\220\354\203\211/\354\241\270\354\227\205 \354\204\240\353\254\274.js" new file mode 100644 index 0000000..7e0585b --- /dev/null +++ "b/yena/\354\231\204\354\240\204\355\203\220\354\203\211/\354\241\270\354\227\205 \354\204\240\353\254\274.js" @@ -0,0 +1,27 @@ +function solution(m, product) { + let answer = 0; + //const sortFunc = (a, b) => a[0] + a[1] - (b[0] + b[1]); + //product.sort(sortFunc); + //console.log(product); + for (let i = 0; i < product.length; i++) { + let tmp = 0; + let money = m; + for (let j = 0; j < product.length; j++) { + if (i == j) money -= product[i][0] / 2 + product[i][1]; + else money -= product[i][0] + product[i][1]; + if (money > 0) tmp++; + else break; + } + if (tmp > answer) answer = tmp; + } + return answer; +} + +let arr = [ + [8, 6], + [2, 2], + [4, 3], + [4, 5], + [12, 1], +]; +console.log(solution(28, arr)); From ef436dcf972056932cbe396a6e6e6fb689cb1522 Mon Sep 17 00:00:00 2001 From: Yenowme <76904042+Yenowme@users.noreply.github.com> Date: Fri, 18 Mar 2022 19:35:46 +0900 Subject: [PATCH 06/15] =?UTF-8?q?solve=20:=20=EA=B3=B5=ED=86=B5=EC=9B=90?= =?UTF-8?q?=EC=86=8C=20=EA=B5=AC=ED=95=98=EA=B8=B0,=20=EB=91=90=20?= =?UTF-8?q?=EB=B0=B0=EC=97=B4=20=ED=95=A9=EC=B9=98=EA=B8=B0,=20=EC=97=B0?= =?UTF-8?q?=EC=86=8D=20=EB=B6=80=EB=B6=84=EC=88=98=EC=97=B41?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...4 \352\265\254\355\225\230\352\270\260.js" | 26 +++++++++ ...4 \355\225\251\354\271\230\352\270\260.js" | 21 +++++++ ...0\353\266\204\354\210\230\354\227\2641.js" | 58 +++++++++++++++++++ 3 files changed, 105 insertions(+) create mode 100644 "yena/\355\232\250\354\234\250\354\204\261/\352\263\265\355\206\265\354\233\220\354\206\214 \352\265\254\355\225\230\352\270\260.js" create mode 100644 "yena/\355\232\250\354\234\250\354\204\261/\353\221\220 \353\260\260\354\227\264 \355\225\251\354\271\230\352\270\260.js" create mode 100644 "yena/\355\232\250\354\234\250\354\204\261/\354\227\260\354\206\215 \353\266\200\353\266\204\354\210\230\354\227\2641.js" diff --git "a/yena/\355\232\250\354\234\250\354\204\261/\352\263\265\355\206\265\354\233\220\354\206\214 \352\265\254\355\225\230\352\270\260.js" "b/yena/\355\232\250\354\234\250\354\204\261/\352\263\265\355\206\265\354\233\220\354\206\214 \352\265\254\355\225\230\352\270\260.js" new file mode 100644 index 0000000..5e56cea --- /dev/null +++ "b/yena/\355\232\250\354\234\250\354\204\261/\352\263\265\355\206\265\354\233\220\354\206\214 \352\265\254\355\225\230\352\270\260.js" @@ -0,0 +1,26 @@ +function solution1(arr1, arr2) { + const answer = arr1.filter((i) => arr2.includes(i)); + return answer.sort((a, b) => a - b); +} + +function solution(arr1, arr2) { + let p1 = 0; + let p2 = 0; + const answer = []; + + arr1.sort((a, b) => a - b); + arr2.sort((a, b) => a - b); + while (p1 < arr1.length && p2 < arr2.length) { + if (arr1[p1] === arr2[p2]) { + answer.push(arr1[p1]); + p1++; + p2++; + } else if (arr1[p1] > arr2[p2]) p2++; + else p1++; + } + return answer; +} + +let a = [1, 3, 9, 5, 2, 8]; +let b = [3, 2, 5, 7, 8]; +console.log(solution(a, b)); diff --git "a/yena/\355\232\250\354\234\250\354\204\261/\353\221\220 \353\260\260\354\227\264 \355\225\251\354\271\230\352\270\260.js" "b/yena/\355\232\250\354\234\250\354\204\261/\353\221\220 \353\260\260\354\227\264 \355\225\251\354\271\230\352\270\260.js" new file mode 100644 index 0000000..9ff6bb6 --- /dev/null +++ "b/yena/\355\232\250\354\234\250\354\204\261/\353\221\220 \353\260\260\354\227\264 \355\225\251\354\271\230\352\270\260.js" @@ -0,0 +1,21 @@ +function solution(arr1, arr2) { + answer = []; + while (arr1.length && arr2.length) { + const tmp = arr1[0] < arr2[0] ? arr1.shift() : arr2.shift(); + answer.push(tmp); + } + for (const num of arr1.length ? arr1 : arr2) { + answer.push(num); + } + return answer; +} + +let a = [1, 3, 5]; +let b = [2]; +console.log(solution(a, b)); + +/** + * 투포인터 (two pointers) 알고리즘 : + * - 포인터 두 개를 이동시키면서 O(n)을 구현하는거 + * - 병합정렬 내부 동작과 비슷함. + */ diff --git "a/yena/\355\232\250\354\234\250\354\204\261/\354\227\260\354\206\215 \353\266\200\353\266\204\354\210\230\354\227\2641.js" "b/yena/\355\232\250\354\234\250\354\204\261/\354\227\260\354\206\215 \353\266\200\353\266\204\354\210\230\354\227\2641.js" new file mode 100644 index 0000000..1cf172f --- /dev/null +++ "b/yena/\355\232\250\354\234\250\354\204\261/\354\227\260\354\206\215 \353\266\200\353\266\204\354\210\230\354\227\2641.js" @@ -0,0 +1,58 @@ +function solution_old1(num, arr) { + let answer = 0; + for (let i = 0; i < arr.length; i++) { + let tmp = arr[i]; + if (tmp === num) answer++; + for (let j = i + 1; j < arr.length || tmp > num; j++) { + tmp += arr[j]; + if (tmp === num) answer++; + } + } + return answer; +} + +function solution_old2(num, arr) { + let p1 = 0; + let p2 = 0; + let cnt = 0; + let answer = 0; + + while (p1 < arr.length && p2 < arr.length) { + cnt += arr[p2]; + if (cnt < num) { + p2++; + } else { + if (cnt === num) answer++; + cnt = 0; + p1++; + p2 = p1; + } + } + return answer; +} + +function solution(num, arr) { + let p1 = 0; + let p2 = 0; + let cnt = 0; + let answer = 0; + + while (p2 < arr.length) { + cnt += arr[p2++]; + if (cnt === num) { + answer++; + } + while (cnt >= num) { + cnt -= arr[p1]; + p1++; + if (cnt === num) { + console.log(""); + answer++; + } + } + } + return answer; +} + +let a = [1, 2, 1, 3, 1, 1, 1, 2]; +console.log(solution(6, a)); From f790ba146877fec428e5baefb8d1053290657df4 Mon Sep 17 00:00:00 2001 From: Yenowme <76904042+Yenowme@users.noreply.github.com> Date: Sat, 19 Mar 2022 13:40:31 +0900 Subject: [PATCH 07/15] =?UTF-8?q?solve:=20=EC=97=B0=EC=86=8D=20=EB=B6=80?= =?UTF-8?q?=EB=B6=84=EC=88=98=EC=97=B42.js?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...0\353\266\204\354\210\230\354\227\2642.js" | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 "yena/\355\232\250\354\234\250\354\204\261/\354\227\260\354\206\215 \353\266\200\353\266\204\354\210\230\354\227\2642.js" diff --git "a/yena/\355\232\250\354\234\250\354\204\261/\354\227\260\354\206\215 \353\266\200\353\266\204\354\210\230\354\227\2642.js" "b/yena/\355\232\250\354\234\250\354\204\261/\354\227\260\354\206\215 \353\266\200\353\266\204\354\210\230\354\227\2642.js" new file mode 100644 index 0000000..7a7188d --- /dev/null +++ "b/yena/\355\232\250\354\234\250\354\204\261/\354\227\260\354\206\215 \353\266\200\353\266\204\354\210\230\354\227\2642.js" @@ -0,0 +1,24 @@ +function solution(num, arr) { + let lt = 0; + let rt = 0; + let sum = 0; + let answer = 0; + + for (rt = 0; rt < arr.length; rt++) { + sum += arr[rt]; + if (sum <= num) answer += rt - lt + 1; + while (sum > num && lt < arr.length) { + sum -= arr[lt]; + lt++; + if (sum <= num) answer += rt - lt + 1; + } + } + return answer; +} + +let a = [1, 3, 1, 2, 3]; +console.log(solution(5, a)); + +/** + * 부분수열 더하기 rt - lt + 1 가 핵심.. + */ From c20919f7f4a9bb8313513ed3f35be55a4dfb15b4 Mon Sep 17 00:00:00 2001 From: Yenowme <76904042+Yenowme@users.noreply.github.com> Date: Sat, 19 Mar 2022 18:14:07 +0900 Subject: [PATCH 08/15] =?UTF-8?q?solve:=20=EB=AA=A8=EB=93=A0=20=EC=95=84?= =?UTF-8?q?=EB=82=98=EA=B7=B8=EB=9E=A8,=20=EC=95=84=EB=82=98=EA=B7=B8?= =?UTF-8?q?=EB=9E=A8,=20=EC=B5=9C=EB=8C=80=EB=A7=A4=EC=B6=9C,=20=ED=95=99?= =?UTF-8?q?=EA=B8=89=ED=9A=8C=EC=9E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...04\353\202\230\352\267\270\353\236\250.js" | 67 +++++++++++++++++++ ...04\353\202\230\352\267\270\353\236\250.js" | 21 ++++++ ...4\353\214\200 \353\247\244\354\266\234.js" | 37 ++++++++++ ...1\352\270\211 \355\232\214\354\236\245.js" | 19 ++++++ 4 files changed, 144 insertions(+) create mode 100644 "yena/\355\232\250\354\234\250\354\204\261/\353\252\250\353\223\240 \354\225\204\353\202\230\352\267\270\353\236\250.js" create mode 100644 "yena/\355\232\250\354\234\250\354\204\261/\354\225\204\353\202\230\352\267\270\353\236\250.js" create mode 100644 "yena/\355\232\250\354\234\250\354\204\261/\354\265\234\353\214\200 \353\247\244\354\266\234.js" create mode 100644 "yena/\355\232\250\354\234\250\354\204\261/\355\225\231\352\270\211 \355\232\214\354\236\245.js" diff --git "a/yena/\355\232\250\354\234\250\354\204\261/\353\252\250\353\223\240 \354\225\204\353\202\230\352\267\270\353\236\250.js" "b/yena/\355\232\250\354\234\250\354\204\261/\353\252\250\353\223\240 \354\225\204\353\202\230\352\267\270\353\236\250.js" new file mode 100644 index 0000000..a976de0 --- /dev/null +++ "b/yena/\355\232\250\354\234\250\354\204\261/\353\252\250\353\223\240 \354\225\204\353\202\230\352\267\270\353\236\250.js" @@ -0,0 +1,67 @@ +function solution_my(a, b) { + const map = new Map(); + const target = new Map(); + const len = b.length; + let answer = 0; + + const check_anagram = () => { + console.log(target); + let add = 1; + for (let key of target.keys()) { + if (map.get(key) !== target.get(key)) add = 0; + } + answer += add; + console.log(answer); + }; + + for (let i = 0; i < len; i++) { + if (map.has(b[i])) map.set(b[i], map.get(b[i]) + 1); + else map.set(b[i], 1); + if (target.has(a[i])) target.set(a[i], target.get(a[i]) + 1); + else target.set(a[i], 1); + } + console.log(map, target); + check_anagram(); + for (let i = len; i < a.length; i++) { + console.log("target:", a[i], a[i - len]); + if (target.has(a[i])) target.set(a[i], target.get(a[i]) + 1); + else target.set(a[i], 1); + if (target.get(a[i - len]) === 1) target.delete(a[i - len]); + else target.set(a[i - len], target.get(a[i - len]) - 1); + check_anagram(); + } + return answer; +} + +function solution(s, t) { + let answer = 0; + let sH = new Map(); + for (let x of t) { + sH.set(x, (sH.get(x) || 0) - 1); + } + console.log(sH); + + let len = t.length - 1; + + for (let i = 0; i < len; i++) { + sH.set(s[i], (sH.get(s[i]) || 0) + 1); + if (sH.get(s[i]) === 0) sH.delete(s[i]); + } + console.log(sH); + let lt = 0; + for (let rt = len; rt < s.length; rt++) { + sH.set(s[rt], (sH.get(s[rt]) || 0) + 1); + if (sH.get(s[rt]) === 0) sH.delete(s[rt]); + + if (sH.size === 0) answer++; + + sH.set(s[lt], (sH.get(s[lt]) || 0) - 1); + if (sH.get(s[lt]) === 0) sH.delete(s[lt]); + lt++; + } + return answer; +} + +let a = "bacaAacba"; +let b = "abc"; +console.log(solution(a, b)); diff --git "a/yena/\355\232\250\354\234\250\354\204\261/\354\225\204\353\202\230\352\267\270\353\236\250.js" "b/yena/\355\232\250\354\234\250\354\204\261/\354\225\204\353\202\230\352\267\270\353\236\250.js" new file mode 100644 index 0000000..933cf34 --- /dev/null +++ "b/yena/\355\232\250\354\234\250\354\204\261/\354\225\204\353\202\230\352\267\270\353\236\250.js" @@ -0,0 +1,21 @@ +function solution(a, b) { + const callback = (acc, cur) => { + if (acc.has(cur)) acc.set(cur, acc.get(cur) + 1); + else acc.set(cur, 1); + return acc; + }; + + const aMap = a.split("").reduce(callback, new Map()); + const bMap = b.split("").reduce(callback, new Map()); + console.log(aMap, bMap); + + if (aMap.size !== bMap.size) return "NO"; + for (let key of aMap.keys()) { + if (aMap.get(key) !== bMap.get(key)) return "NO"; + } + return "YES"; +} + +let a = "AbaAeC3"; +let b = "baeeACA"; +console.log(solution(a, b)); diff --git "a/yena/\355\232\250\354\234\250\354\204\261/\354\265\234\353\214\200 \353\247\244\354\266\234.js" "b/yena/\355\232\250\354\234\250\354\204\261/\354\265\234\353\214\200 \353\247\244\354\266\234.js" new file mode 100644 index 0000000..4af81ad --- /dev/null +++ "b/yena/\355\232\250\354\234\250\354\204\261/\354\265\234\353\214\200 \353\247\244\354\266\234.js" @@ -0,0 +1,37 @@ +function solution_old1(k, arr) { + let max = -1; + for (let i = 0; i < arr.length; i++) { + let sum = 0; + for (j = i; j < i + k && j < arr.length; j++) { + sum += arr[j]; + } + if (max < sum) { + max = sum; + } + } + return max; +} + +function solution(k, arr) { + let max = 0; + let sum = 0; + for (let i = 0; i < arr.length; i++) { + if (i < k) { + max += arr[i]; + sum = max; + } else { + sum -= arr[i - k]; + sum += arr[i]; + if (max < sum) max = sum; + } + console.log(sum); + } + return max; +} + +let a = [12, 15, 11, 20, 25, 10, 20, 19, 13, 15]; +console.log(solution(3, a)); + +/** + * solution_old1 : for문을 두번 돌려 시간복잡도가 O(n^2) + */ diff --git "a/yena/\355\232\250\354\234\250\354\204\261/\355\225\231\352\270\211 \355\232\214\354\236\245.js" "b/yena/\355\232\250\354\234\250\354\204\261/\355\225\231\352\270\211 \355\232\214\354\236\245.js" new file mode 100644 index 0000000..c612845 --- /dev/null +++ "b/yena/\355\232\250\354\234\250\354\204\261/\355\225\231\352\270\211 \355\232\214\354\236\245.js" @@ -0,0 +1,19 @@ +function solution(str) { + const arr = str.split(""); + let max = 0; + let maxChar; + + const answer = arr.reduce((acc, cur) => { + acc[cur] = acc[cur] === undefined ? 1 : acc[cur] + 1; + if (acc[cur] > max) { + max = acc[cur]; + maxChar = cur; + } + return acc; + }, {}); + console.log(answer); + return maxChar; +} + +let str = "BACBACCACCBDEDE"; +console.log(solution(str)); From 50f0f4a07a3a5b7e0eecaba41a9b7ba641dd00ac Mon Sep 17 00:00:00 2001 From: Yenowme <76904042+Yenowme@users.noreply.github.com> Date: Sun, 20 Mar 2022 16:27:21 +0900 Subject: [PATCH 09/15] =?UTF-8?q?doc:=20=EC=98=88=EB=82=98=20=ED=92=80?= =?UTF-8?q?=EC=9D=B4=20=ED=92=80=EB=A6=AC=ED=80=98=20=EB=A7=81=ED=81=AC=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 87149da..1fe4473 100644 --- a/README.md +++ b/README.md @@ -16,9 +16,10 @@ - 브랜치는 [주제명_이름]으로 제작합니다 - ex)BruteForce_yena -| 날짜 | 주제 | 문제 목록 | -| :---: | :------: | :---------------------------------------------------------: | -| 03.19 | 완전탐색 | 자리수의 합 , 뒤집은 소수 , 멘토링 , 졸업선물 , K번째 큰 수 | +| 날짜 | 주제 | 문제 목록 | 풀이/예나| +| :---: | :------: | :---------------------------------------------------------: |:--:| +| 03.19 | 완전탐색 | 자리수의 합 , 뒤집은 소수 , 멘토링 , 졸업선물 , K번째 큰 수 | [풀이](https://github.com/Beauty-Saurus/javascript-algorithm/pull/33) | +| 03.26 | 효율성 | 공통원소 구하기, 두 배열 합치기, 연속 부분수열1/2, 최대매출, 학급회장, 아나그램 | [풀이](https://github.com/Beauty-Saurus/javascript-algorithm/pull/34) |

From 33626821f8ec73faad1892b067674a3a1b55a43b Mon Sep 17 00:00:00 2001 From: hanjiwon1 Date: Mon, 4 Jul 2022 19:58:47 +0900 Subject: [PATCH 10/15] =?UTF-8?q?0704=20=EB=A1=9C=EB=98=90=20=EC=B5=9C?= =?UTF-8?q?=EA=B3=A0=EC=88=9C=EC=9C=84=EC=99=80=20=EC=B5=9C=EC=A0=80?= =?UTF-8?q?=EC=88=9C=EC=9C=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...4\265\234\354\240\200\354\210\234\354\234\204.js" | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 "jiwon/level1/\353\241\234\353\230\220\354\265\234\352\263\240\354\210\234\354\234\204\354\231\200\354\265\234\354\240\200\354\210\234\354\234\204.js" diff --git "a/jiwon/level1/\353\241\234\353\230\220\354\265\234\352\263\240\354\210\234\354\234\204\354\231\200\354\265\234\354\240\200\354\210\234\354\234\204.js" "b/jiwon/level1/\353\241\234\353\230\220\354\265\234\352\263\240\354\210\234\354\234\204\354\231\200\354\265\234\354\240\200\354\210\234\354\234\204.js" new file mode 100644 index 0000000..d73290c --- /dev/null +++ "b/jiwon/level1/\353\241\234\353\230\220\354\265\234\352\263\240\354\210\234\354\234\204\354\231\200\354\265\234\354\240\200\354\210\234\354\234\204.js" @@ -0,0 +1,12 @@ +function solution(lottos, win_nums) { + var answer = []; + let hit = 0 + let not = 0 + lottos.map ((elem) => { + if (win_nums.includes(elem)) hit++; + if (elem === 0) not++; + }) + answer.push(7 - (hit + not) < 6 ? 7 - (hit + not) : 6) + answer.push(7 - hit < 6 ? 7 - hit : 6) + return answer; +} \ No newline at end of file From 01c80e8ee98207efd39f40f7b91ec2ccf89db535 Mon Sep 17 00:00:00 2001 From: hanjiwon1 Date: Mon, 4 Jul 2022 19:59:00 +0900 Subject: [PATCH 11/15] =?UTF-8?q?0704=20=EC=8B=A0=EA=B7=9C=20=EC=95=84?= =?UTF-8?q?=EC=9D=B4=EB=94=94=20=EC=B6=94=EC=B2=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...4\353\224\224 \354\266\224\354\262\234.js" | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 "jiwon/level1/\354\213\240\352\267\234 \354\225\204\354\235\264\353\224\224 \354\266\224\354\262\234.js" diff --git "a/jiwon/level1/\354\213\240\352\267\234 \354\225\204\354\235\264\353\224\224 \354\266\224\354\262\234.js" "b/jiwon/level1/\354\213\240\352\267\234 \354\225\204\354\235\264\353\224\224 \354\266\224\354\262\234.js" new file mode 100644 index 0000000..35df636 --- /dev/null +++ "b/jiwon/level1/\354\213\240\352\267\234 \354\225\204\354\235\264\353\224\224 \354\266\224\354\262\234.js" @@ -0,0 +1,36 @@ +function clean_special_char(str) { + const special_char = '~!@#$%^&*()=+[{]}:?,<>/'; + special_char.split('').map((elem) => { + let newRegExp = new RegExp('\\' + elem, 'g') + str = str.replace(newRegExp, '') + }) + return str +} + +function merge_and_delete_dot(str) { + return str.split('.').filter((elem) => elem.length > 0 ).join('.') +} + +function insert_a(str) { + if (str.length === 0) return 'a' + return str +} + +function slice_length(str) { + return merge_and_delete_dot(str.substring(0, 15)) +} + +function increase_length(str) { + if (str.length >= 3) return str + return increase_length(str+str[str.length - 1]) +} + +function solution(new_id) { + var answer = new_id.toLowerCase(); + answer = clean_special_char(answer) + answer = merge_and_delete_dot(answer) + answer = insert_a(answer) + answer = slice_length(answer) + answer = increase_length(answer) + return answer +} \ No newline at end of file From 420e4b487831efcd012d96130b05e3c430d845a5 Mon Sep 17 00:00:00 2001 From: hanjiwon1 Date: Tue, 5 Jul 2022 18:56:14 +0900 Subject: [PATCH 12/15] =?UTF-8?q?0705=20=EA=B8=B0=EB=8A=A5=EA=B0=9C?= =?UTF-8?q?=EB=B0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...60\353\212\245\352\260\234\353\260\234.js" | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 "jiwon/level2/\352\270\260\353\212\245\352\260\234\353\260\234.js" diff --git "a/jiwon/level2/\352\270\260\353\212\245\352\260\234\353\260\234.js" "b/jiwon/level2/\352\270\260\353\212\245\352\260\234\353\260\234.js" new file mode 100644 index 0000000..ac430f2 --- /dev/null +++ "b/jiwon/level2/\352\270\260\353\212\245\352\260\234\353\260\234.js" @@ -0,0 +1,21 @@ +function solution(progresses, speeds) { + var answer = []; + const days = progresses.map((output, i) => { + const work = 100 - output + return Math.ceil(work / speeds[i]) + }) + let deploy_day = days[0] + let cnt_work = 0 + days.map((day, i) => { + if (deploy_day < day){ + answer.push(cnt_work) + cnt_work = 1 + deploy_day = days[i] + } + else { + cnt_work++ + } + }) + answer.push(cnt_work) + return answer; +} \ No newline at end of file From 6aa73d506ce6d6ea15b7e5f289f91fee4c88e42b Mon Sep 17 00:00:00 2001 From: hanjiwon1 Date: Tue, 5 Jul 2022 18:56:28 +0900 Subject: [PATCH 13/15] =?UTF-8?q?0705=20=EC=A7=9D=EC=A7=80=EC=96=B4=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0=ED=95=98=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...354\240\234\352\261\260\355\225\230\352\270\260.js" | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 "jiwon/level2/\354\247\235\354\247\200\354\226\264\354\240\234\352\261\260\355\225\230\352\270\260.js" diff --git "a/jiwon/level2/\354\247\235\354\247\200\354\226\264\354\240\234\352\261\260\355\225\230\352\270\260.js" "b/jiwon/level2/\354\247\235\354\247\200\354\226\264\354\240\234\352\261\260\355\225\230\352\270\260.js" new file mode 100644 index 0000000..fc8cd5a --- /dev/null +++ "b/jiwon/level2/\354\247\235\354\247\200\354\226\264\354\240\234\352\261\260\355\225\230\352\270\260.js" @@ -0,0 +1,10 @@ +function solution(s) +{ + const str_stack = [] + for (let i = 0; i < s.length; i++) { + if (str_stack[str_stack.length - 1] === s[i]) + str_stack.pop() + else str_stack.push(s[i]) + } + return str_stack.length > 0 ? 0 : 1; +} \ No newline at end of file From 93d6280fc5f19e1154df310a2747d5a5aca67f97 Mon Sep 17 00:00:00 2001 From: hanjiwon Date: Wed, 4 Jan 2023 01:13:16 +0900 Subject: [PATCH 14/15] =?UTF-8?q?0104=20=EA=B0=80=EC=9E=A5=20=EA=B0=80?= =?UTF-8?q?=EA=B9=8C=EC=9A=B4=20=EA=B0=99=EC=9D=80=20=EA=B8=80=EC=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...4\352\260\231\354\235\200\352\270\200\354\236\220.js" | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 "jiwon/level1/\352\260\200\354\236\245\352\260\200\352\271\214\354\232\264\352\260\231\354\235\200\352\270\200\354\236\220.js" diff --git "a/jiwon/level1/\352\260\200\354\236\245\352\260\200\352\271\214\354\232\264\352\260\231\354\235\200\352\270\200\354\236\220.js" "b/jiwon/level1/\352\260\200\354\236\245\352\260\200\352\271\214\354\232\264\352\260\231\354\235\200\352\270\200\354\236\220.js" new file mode 100644 index 0000000..45ada44 --- /dev/null +++ "b/jiwon/level1/\352\260\200\354\236\245\352\260\200\352\271\214\354\232\264\352\260\231\354\235\200\352\270\200\354\236\220.js" @@ -0,0 +1,9 @@ +function solution(s) { + var answer = []; + s.split("").map((elem, index) => { + const i = s.slice(0, index).lastIndexOf(elem); + if (i === -1) answer.push(i); + else answer.push(index - i); + }); + return answer; +} From 2ee0c56f821391ad2145631a66500188465042f9 Mon Sep 17 00:00:00 2001 From: hanjiwon Date: Wed, 11 Jan 2023 00:30:51 +0900 Subject: [PATCH 15/15] =?UTF-8?q?0111=20=EA=B0=9C=EC=9D=B8=EC=A0=95?= =?UTF-8?q?=EB=B3=B4=20=EC=88=98=EC=A7=91=20=EC=9C=A0=ED=9A=A8=EA=B8=B0?= =?UTF-8?q?=EA=B0=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...40\355\232\250\352\270\260\352\260\204.js" | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 "jiwon/level1/\352\260\234\354\235\270\354\240\225\353\263\264\354\210\230\354\247\221\354\234\240\355\232\250\352\270\260\352\260\204.js" diff --git "a/jiwon/level1/\352\260\234\354\235\270\354\240\225\353\263\264\354\210\230\354\247\221\354\234\240\355\232\250\352\270\260\352\260\204.js" "b/jiwon/level1/\352\260\234\354\235\270\354\240\225\353\263\264\354\210\230\354\247\221\354\234\240\355\232\250\352\270\260\352\260\204.js" new file mode 100644 index 0000000..c713150 --- /dev/null +++ "b/jiwon/level1/\352\260\234\354\235\270\354\240\225\353\263\264\354\210\230\354\247\221\354\234\240\355\232\250\352\270\260\352\260\204.js" @@ -0,0 +1,27 @@ +const getDateCount = (date) => { + let sum = 0; + const [year, month, day] = date.split(".").map((elem) => parseInt(elem)); + sum += year * 12 * 28; + sum += month * 28; + sum += day; + return sum; +}; + +function solution(today, terms, privacies) { + var answer = []; + const todayCount = getDateCount(today); + const newTerms = terms.map((elem) => { + const [term, month] = elem.split(" "); + return { term, month, day: month * 28 - 1 }; + }); + let index = 0; + privacies.map((privacy) => { + index += 1; + const [date, term] = privacy.split(" "); + let [year, month, day] = date.split(".").map((elem) => parseInt(elem)); + day = day + newTerms.find((elem) => elem.term === term).day; + const limitDateCount = getDateCount([year, month, day].join(".")); + if (todayCount > limitDateCount) answer.push(index); + }); + return answer; +}