From 67c3ae8dd616d51ba086325ef5d9d3f46ab1608b Mon Sep 17 00:00:00 2001 From: Yeonseo-Jo Date: Mon, 6 Nov 2023 17:31:41 +0900 Subject: [PATCH 01/10] =?UTF-8?q?level=201=20-=20=EB=AA=85=EC=98=88?= =?UTF-8?q?=EC=9D=98=20=EC=A0=84=EB=8B=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\230\210\354\235\230\354\240\204\353\213\271.js" | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 "\354\227\260\354\204\234/week5/level 1/\353\252\205\354\230\210\354\235\230\354\240\204\353\213\271.js" diff --git "a/\354\227\260\354\204\234/week5/level 1/\353\252\205\354\230\210\354\235\230\354\240\204\353\213\271.js" "b/\354\227\260\354\204\234/week5/level 1/\353\252\205\354\230\210\354\235\230\354\240\204\353\213\271.js" new file mode 100644 index 0000000..322fbe5 --- /dev/null +++ "b/\354\227\260\354\204\234/week5/level 1/\353\252\205\354\230\210\354\235\230\354\240\204\353\213\271.js" @@ -0,0 +1,13 @@ +function solution(k, score) { + const scoreStack = []; + return score.map((s, idx) => { + // 값을 넣고 내림차순 정렬 + scoreStack.push(s); + scoreStack.sort((a, b) => b - a); + // k보다 넘쳤을 때 순위가 낮은 점수 제외 + if (scoreStack.length > k) { + scoreStack.pop(); + } + return scoreStack[scoreStack.length - 1]; + }); +} From 040b640c6e5b6003de1186bd770c75e7bbc849dd Mon Sep 17 00:00:00 2001 From: Yeonseo-Jo Date: Mon, 6 Nov 2023 18:01:12 +0900 Subject: [PATCH 02/10] =?UTF-8?q?level=202=20-=20=EC=A1=B0=EC=9D=B4?= =?UTF-8?q?=EC=8A=A4=ED=8B=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...60\354\235\264\354\212\244\355\213\261.js" | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 "\354\227\260\354\204\234/week5/level 2/\354\241\260\354\235\264\354\212\244\355\213\261.js" diff --git "a/\354\227\260\354\204\234/week5/level 2/\354\241\260\354\235\264\354\212\244\355\213\261.js" "b/\354\227\260\354\204\234/week5/level 2/\354\241\260\354\235\264\354\212\244\355\213\261.js" new file mode 100644 index 0000000..6cddd7d --- /dev/null +++ "b/\354\227\260\354\204\234/week5/level 2/\354\241\260\354\235\264\354\212\244\355\213\261.js" @@ -0,0 +1,22 @@ +function solution(name) { + let answer = 0; + let min_move = name.length - 1; + + [...name].map((n, i) => { + answer += Math.min(n.charCodeAt() - 65, 91 - n.charCodeAt()); + let idx = i + 1; + + // 연속되는 A의 개수 count + while (idx < name.length && name[idx] === "A") { + idx++; + } + + min_move = Math.min( + min_move, + i * 2 + name.length - idx, + i + 2 * (name.length - idx) + ); + }); + + return answer + min_move; +} From a5bf6ade88459a52de795cc56c12203fc12c2077 Mon Sep 17 00:00:00 2001 From: Yeonseo-Jo Date: Tue, 7 Nov 2023 14:28:59 +0900 Subject: [PATCH 03/10] =?UTF-8?q?level=202=20-=20=ED=95=A0=EC=9D=B8?= =?UTF-8?q?=ED=96=89=EC=82=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...40\354\235\270\355\226\211\354\202\254.js" | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 "\354\227\260\354\204\234/week5/level 2/\355\225\240\354\235\270\355\226\211\354\202\254.js" diff --git "a/\354\227\260\354\204\234/week5/level 2/\355\225\240\354\235\270\355\226\211\354\202\254.js" "b/\354\227\260\354\204\234/week5/level 2/\355\225\240\354\235\270\355\226\211\354\202\254.js" new file mode 100644 index 0000000..19713e1 --- /dev/null +++ "b/\354\227\260\354\204\234/week5/level 2/\355\225\240\354\235\270\355\226\211\354\202\254.js" @@ -0,0 +1,22 @@ +function solution(want, number, discount) { + var answer = 0; + + // Map 자료구조로 할인 품목과 원하는 품목 일치 확인 로직 + const isMatch = (arr) => { + // 할인 품목과 원하는 제품이 일치하는지 확인하는 함수 + var map = new Map(); // 매번 map을 초기화 해준다. + arr.forEach((v) => map.set(v, (map.get(v) || 0) + 1)); // 할인 품목들을 map에 셋팅한다. + for (let i = 0; i < want.length; i++) { + if (map.get(want[i]) !== number[i]) return false; + } // 원하는 품목의 수량과 할인 품목이 일치하지 않으면 false + return true; // 일치하면 true를 리턴한다 + }; + + for (let j = 0; j <= discount.length - 10; j++) { + var arr = discount.slice(j, j + 10); // 10일동안 할인이 되므로(회원 자격 부여) 10개씩 배열을 잘라준다. + if (isMatch(arr)) { + answer++; + } + } + return answer; +} From 9a9ff0767962d02b93b3b094782e1fc28bd7da5c Mon Sep 17 00:00:00 2001 From: Yeonseo-Jo Date: Tue, 7 Nov 2023 14:54:29 +0900 Subject: [PATCH 04/10] =?UTF-8?q?level=201=20-=20=EC=BD=9C=EB=9D=BC=20?= =?UTF-8?q?=EB=AC=B8=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...54\275\234\353\235\274\353\254\270\354\240\234.js" | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 "\354\227\260\354\204\234/week5/level 1/\354\275\234\353\235\274\353\254\270\354\240\234.js" diff --git "a/\354\227\260\354\204\234/week5/level 1/\354\275\234\353\235\274\353\254\270\354\240\234.js" "b/\354\227\260\354\204\234/week5/level 1/\354\275\234\353\235\274\353\254\270\354\240\234.js" new file mode 100644 index 0000000..f51f461 --- /dev/null +++ "b/\354\227\260\354\204\234/week5/level 1/\354\275\234\353\235\274\353\254\270\354\240\234.js" @@ -0,0 +1,11 @@ +function solution(a, b, n) { + let total = 0; + let now = 0; + + while (n >= a) { + now = Math.floor(n / a) * b; + total += now; + n = now + (n % a); + } + return total; +} From 8041d3a42b462860e48c16b5ce6c2491e47da33d Mon Sep 17 00:00:00 2001 From: Yeonseo-Jo Date: Sat, 11 Nov 2023 03:20:29 +0900 Subject: [PATCH 05/10] =?UTF-8?q?level=201=20-=20=EB=B6=80=EC=A1=B1?= =?UTF-8?q?=ED=95=9C=20=EA=B8=88=EC=95=A1=20=EA=B3=84=EC=82=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\234\352\270\210\354\225\241\352\263\204\354\202\260.js" | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 "\354\227\260\354\204\234/week5/level 1/\353\266\200\354\241\261\355\225\234\352\270\210\354\225\241\352\263\204\354\202\260.js" diff --git "a/\354\227\260\354\204\234/week5/level 1/\353\266\200\354\241\261\355\225\234\352\270\210\354\225\241\352\263\204\354\202\260.js" "b/\354\227\260\354\204\234/week5/level 1/\353\266\200\354\241\261\355\225\234\352\270\210\354\225\241\352\263\204\354\202\260.js" new file mode 100644 index 0000000..569ce12 --- /dev/null +++ "b/\354\227\260\354\204\234/week5/level 1/\353\266\200\354\241\261\355\225\234\352\270\210\354\225\241\352\263\204\354\202\260.js" @@ -0,0 +1,6 @@ +//가우스 공식 (등차수열의 합 = (첫항 + 마지막항) * (항의 개수) / 2) +function solution(price, money, count) { + //가우스 공식 활용 부분 + const tmp = (price * (count + 1) * count) / 2 - money; + return tmp > 0 ? tmp : 0; +} From f93671f597aeb5315da307013c2e5fdf555993bd Mon Sep 17 00:00:00 2001 From: Yeonseo-Jo Date: Sat, 11 Nov 2023 03:20:54 +0900 Subject: [PATCH 06/10] =?UTF-8?q?level=202=20-=20n=EA=B0=9C=EC=9D=98=20?= =?UTF-8?q?=EC=B5=9C=EC=86=8C=20=EA=B3=B5=EB=B0=B0=EC=88=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...4\354\206\214\352\263\265\353\260\260\354\210\230.js" | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 "\354\227\260\354\204\234/week5/level 2/N\352\260\234\354\235\230\354\265\234\354\206\214\352\263\265\353\260\260\354\210\230.js" diff --git "a/\354\227\260\354\204\234/week5/level 2/N\352\260\234\354\235\230\354\265\234\354\206\214\352\263\265\353\260\260\354\210\230.js" "b/\354\227\260\354\204\234/week5/level 2/N\352\260\234\354\235\230\354\265\234\354\206\214\352\263\265\353\260\260\354\210\230.js" new file mode 100644 index 0000000..f47f57d --- /dev/null +++ "b/\354\227\260\354\204\234/week5/level 2/N\352\260\234\354\235\230\354\265\234\354\206\214\352\263\265\353\260\260\354\210\230.js" @@ -0,0 +1,9 @@ +function solution(arr) { + // 유클리드호제법으로 최대공약수 구하기 + const gcd = (a, b) => { + return a % b ? gcd(b, a % b) : b; + }; + + // 최대공배수는 두 수의 곱 / 최대공약수 + return arr.reduce((a, b) => (a * b) / gcd(a, b)); +} From bb20d987a314aabdd7b83e941b90227824dbdb04 Mon Sep 17 00:00:00 2001 From: Yeonseo-Jo Date: Sun, 12 Nov 2023 02:31:08 +0900 Subject: [PATCH 07/10] =?UTF-8?q?level=202-=20=EA=B4=84=ED=98=B8=ED=9A=8C?= =?UTF-8?q?=EC=A0=84=ED=95=98=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...14\354\240\204\355\225\230\352\270\260.js" | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 "\354\227\260\354\204\234/week5/level 2/\352\264\204\355\230\270\355\232\214\354\240\204\355\225\230\352\270\260.js" diff --git "a/\354\227\260\354\204\234/week5/level 2/\352\264\204\355\230\270\355\232\214\354\240\204\355\225\230\352\270\260.js" "b/\354\227\260\354\204\234/week5/level 2/\352\264\204\355\230\270\355\232\214\354\240\204\355\225\230\352\270\260.js" new file mode 100644 index 0000000..0b5a6fa --- /dev/null +++ "b/\354\227\260\354\204\234/week5/level 2/\352\264\204\355\230\270\355\232\214\354\240\204\355\225\230\352\270\260.js" @@ -0,0 +1,29 @@ +function solution(s) { + if (s.length % 2 === 1) return 0; + + let answer = 0; + const correctSet = { + "}": "{", + "]": "[", + ")": "(", + }; + + for (let i = 0; i < s.length; i++) { + const stack = []; + const rotate = s.slice(i) + s.slice(0, i); + let flag = true; + rotate.split("").forEach((target) => { + if (target === "{" || target === "[" || target === "(") { + stack.push(target); + } else { + if (stack.pop() !== correctSet[target]) { + flag = false; + return; + } + } + }); + + if (flag) answer++; + } + return answer; +} From 621abdaba04d8eb0425cb8a8911f4e19a49b4b08 Mon Sep 17 00:00:00 2001 From: Yeonseo-Jo Date: Sun, 12 Nov 2023 02:33:09 +0900 Subject: [PATCH 08/10] =?UTF-8?q?level=201=20-=20=EA=B0=99=EC=9D=80=20?= =?UTF-8?q?=EC=88=AB=EC=9E=90=EB=8A=94=20=EC=8B=AB=EC=96=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...354\236\220\353\212\224\354\213\253\354\226\264.js" | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 "\354\227\260\354\204\234/week5/level 1/\352\260\231\354\235\200\354\210\253\354\236\220\353\212\224\354\213\253\354\226\264.js" diff --git "a/\354\227\260\354\204\234/week5/level 1/\352\260\231\354\235\200\354\210\253\354\236\220\353\212\224\354\213\253\354\226\264.js" "b/\354\227\260\354\204\234/week5/level 1/\352\260\231\354\235\200\354\210\253\354\236\220\353\212\224\354\213\253\354\226\264.js" new file mode 100644 index 0000000..c941ee2 --- /dev/null +++ "b/\354\227\260\354\204\234/week5/level 1/\352\260\231\354\235\200\354\210\253\354\236\220\353\212\224\354\213\253\354\226\264.js" @@ -0,0 +1,10 @@ +function solution(arr) { + var answer = []; + for (let i = 0; i < arr.length; i++) { + if (arr[i] !== arr[i + 1]) { + answer.push(arr[i]); + } + } + + return answer; +} From dee3501155d5ffa649af226e3a42f03e90288d7e Mon Sep 17 00:00:00 2001 From: Yeonseo-Jo Date: Sun, 12 Nov 2023 16:51:28 +0900 Subject: [PATCH 09/10] =?UTF-8?q?level=201=20-=20=EC=98=88=EC=82=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../week5/level 1/\354\230\210\354\202\260.js" | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 "\354\227\260\354\204\234/week5/level 1/\354\230\210\354\202\260.js" diff --git "a/\354\227\260\354\204\234/week5/level 1/\354\230\210\354\202\260.js" "b/\354\227\260\354\204\234/week5/level 1/\354\230\210\354\202\260.js" new file mode 100644 index 0000000..8bf2634 --- /dev/null +++ "b/\354\227\260\354\204\234/week5/level 1/\354\230\210\354\202\260.js" @@ -0,0 +1,7 @@ +function solution(d, budget) { + return d + .sort((a, b) => a - b) + .reduce((count, price) => { + return count + Number((budget -= price) >= 0); + }, 0); +} From 3e916e2c71dc0f66809f47387a87af23da45c1ee Mon Sep 17 00:00:00 2001 From: Yeonseo-Jo Date: Sun, 12 Nov 2023 16:55:46 +0900 Subject: [PATCH 10/10] =?UTF-8?q?level=202=20-=20=EC=9D=98=EC=83=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../level 2/\354\235\230\354\203\201.js" | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 "\354\227\260\354\204\234/week5/level 2/\354\235\230\354\203\201.js" diff --git "a/\354\227\260\354\204\234/week5/level 2/\354\235\230\354\203\201.js" "b/\354\227\260\354\204\234/week5/level 2/\354\235\230\354\203\201.js" new file mode 100644 index 0000000..2750cb6 --- /dev/null +++ "b/\354\227\260\354\204\234/week5/level 2/\354\235\230\354\203\201.js" @@ -0,0 +1,19 @@ +function solution(clothes) { + const map = new Map(); //해시 자료구조 구현을 위한 Map 객체 생성 + + let cnt = 1; + + for (let [cloth, type] of clothes) { + if (map.has(type)) { + map.set(type, map.get(type) + 1); + } else { + map.set(type, 1); + } + } + + for (let i of map.values()) { + cnt *= i + 1; + } + + return cnt - 1; +}