From c3ead204349e0fb817975bc47385fe99db475b0b Mon Sep 17 00:00:00 2001 From: Yeonseo-Jo Date: Mon, 13 Nov 2023 23:36:38 +0900 Subject: [PATCH 01/10] =?UTF-8?q?level=201=20-=20=EC=B9=B4=EB=93=9C=20?= =?UTF-8?q?=EB=AD=89=EC=B9=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...71\264\353\223\234\353\255\211\354\271\230.js" | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 "\354\227\260\354\204\234/week6/level1/\354\271\264\353\223\234\353\255\211\354\271\230.js" diff --git "a/\354\227\260\354\204\234/week6/level1/\354\271\264\353\223\234\353\255\211\354\271\230.js" "b/\354\227\260\354\204\234/week6/level1/\354\271\264\353\223\234\353\255\211\354\271\230.js" new file mode 100644 index 0000000..71f12e5 --- /dev/null +++ "b/\354\227\260\354\204\234/week6/level1/\354\271\264\353\223\234\353\255\211\354\271\230.js" @@ -0,0 +1,15 @@ +function solution(cards1, cards2, goal) { + let answer = true; + + goal.map((targetWord) => { + if (cards1[0] === targetWord) { + cards1.shift(); + } else if (cards2[0] === targetWord) { + cards2.shift(); + } else { + answer = false; + } + }); + + return answer ? "Yes" : "No"; +} From ea48823db4d04fdb4250d8a3bf6d13b053705e84 Mon Sep 17 00:00:00 2001 From: Yeonseo-Jo Date: Mon, 13 Nov 2023 23:36:50 +0900 Subject: [PATCH 02/10] =?UTF-8?q?level=202=20-=20=ED=8A=9C=ED=94=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../week6/level2/\355\212\234\355\224\214.js" | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 "\354\227\260\354\204\234/week6/level2/\355\212\234\355\224\214.js" diff --git "a/\354\227\260\354\204\234/week6/level2/\355\212\234\355\224\214.js" "b/\354\227\260\354\204\234/week6/level2/\355\212\234\355\224\214.js" new file mode 100644 index 0000000..f06eb5d --- /dev/null +++ "b/\354\227\260\354\204\234/week6/level2/\355\212\234\355\224\214.js" @@ -0,0 +1,34 @@ +function solution(s) { + const answer = []; + // 집합을 배열로 바꾸기(정규표현식 사용) + const arr = JSON.parse(s.replace(/{/g, "[").replace(/}/g, "]")); + + // 요소 개수대로 오름차순 정렬 + arr.sort((a, b) => a.length - b.length); + + // 값이 있는지 확인 (중복 값인지 확인) + arr.forEach((col) => { + col.forEach((row) => { + if (!answer.includes(row)) answer.push(row); + }); + }); + return answer; +} + +// 다른 풀이 +const tupleFrom = (str) => + str + .slice(2, -2) + .split("},{") + .map((it) => toNumbers(it)) + .sort(accendingByLength) + .reduce( + (acc, cur) => [...acc, ...cur.filter((it) => !acc.includes(it))], + [] + ); + +const toNumbers = (str) => str.split(",").map((it) => Number(it)); + +const accendingByLength = (arr1, arr2) => arr1.length - arr2.length; + +const solution = (s) => tupleFrom(s); From b699cb1028c9548f33c756a2bc656c5a13ad4f9a Mon Sep 17 00:00:00 2001 From: Yeonseo-Jo Date: Fri, 17 Nov 2023 05:37:56 +0900 Subject: [PATCH 03/10] =?UTF-8?q?level1=20-=20=EC=B9=B4=EB=93=9C=EB=AD=89?= =?UTF-8?q?=EC=B9=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...34\354\240\200\354\225\224\355\230\270.js" | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 "\354\227\260\354\204\234/week6/level1/\354\213\234\354\240\200\354\225\224\355\230\270.js" diff --git "a/\354\227\260\354\204\234/week6/level1/\354\213\234\354\240\200\354\225\224\355\230\270.js" "b/\354\227\260\354\204\234/week6/level1/\354\213\234\354\240\200\354\225\224\355\230\270.js" new file mode 100644 index 0000000..58b57ee --- /dev/null +++ "b/\354\227\260\354\204\234/week6/level1/\354\213\234\354\240\200\354\225\224\355\230\270.js" @@ -0,0 +1,19 @@ +function solution(s, n) { + const answer = s + .split("") + .map((string) => { + const code = string.charCodeAt(); + if (97 <= code && code <= 122) { + return String.fromCharCode(((code + n - 97) % 26) + 97); + } + + if (65 <= code && code <= 90) { + return String.fromCharCode(((code + n - 65) % 26) + 65); + } + + return " "; + }) + .join(""); + + return answer; +} From 15419f2e017661604b1a590082038053773dfffa Mon Sep 17 00:00:00 2001 From: Yeonseo-Jo Date: Fri, 17 Nov 2023 05:38:18 +0900 Subject: [PATCH 04/10] =?UTF-8?q?level2=20-=20=EC=A0=90=ED=94=84=EC=99=80?= =?UTF-8?q?=20=EC=88=9C=EA=B0=84=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...210\234\352\260\204\354\235\264\353\217\231.js" | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 "\354\227\260\354\204\234/week6/level2/\354\240\220\355\224\204\354\231\200\354\210\234\352\260\204\354\235\264\353\217\231.js" diff --git "a/\354\227\260\354\204\234/week6/level2/\354\240\220\355\224\204\354\231\200\354\210\234\352\260\204\354\235\264\353\217\231.js" "b/\354\227\260\354\204\234/week6/level2/\354\240\220\355\224\204\354\231\200\354\210\234\352\260\204\354\235\264\353\217\231.js" new file mode 100644 index 0000000..13c4810 --- /dev/null +++ "b/\354\227\260\354\204\234/week6/level2/\354\240\220\355\224\204\354\231\200\354\210\234\352\260\204\354\235\264\353\217\231.js" @@ -0,0 +1,14 @@ +function solution(n) { + let answer = 0; + + while (n > 0) { + if (n % 2 === 0) { + n /= 2; + } else { + n--; + answer++; + } + } + + return answer; +} From 58fc086ebbd32180982e55ec0db982b4d88b46ff Mon Sep 17 00:00:00 2001 From: Yeonseo-Jo Date: Sat, 18 Nov 2023 04:09:03 +0900 Subject: [PATCH 05/10] =?UTF-8?q?level=201=20-=20=EA=B0=80=EC=9E=A5=20?= =?UTF-8?q?=EA=B0=80=EA=B9=8C=EC=9A=B4=20=EA=B0=99=EC=9D=80=20=EA=B8=80?= =?UTF-8?q?=EC=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...0\231\354\235\200\352\270\200\354\236\220.js" | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 "\354\227\260\354\204\234/week6/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/\354\227\260\354\204\234/week6/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/\354\227\260\354\204\234/week6/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..44406ad --- /dev/null +++ "b/\354\227\260\354\204\234/week6/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,16 @@ +function solution(s) { + let answer = []; + + let strings = new Map(); + + s.split("").map((el, idx) => { + if (strings.has(el)) { + answer.push(idx - strings.get(el)); + } else { + answer.push(-1); + } + strings.set(el, idx); + }); + + return answer; +} From 002ec261a217d4da6b5a2db1a56e4651064902b3 Mon Sep 17 00:00:00 2001 From: Yeonseo-Jo Date: Sat, 18 Nov 2023 04:10:22 +0900 Subject: [PATCH 06/10] =?UTF-8?q?level=202=20-=20=EA=B2=8C=EC=9E=84=20?= =?UTF-8?q?=EB=A7=B5=20=20=EC=B5=9C=EB=8B=A8=EA=B1=B0=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...34\353\213\250\352\261\260\353\246\254.js" | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 "\354\227\260\354\204\234/week6/level2/\352\262\214\354\236\204\353\247\265\354\265\234\353\213\250\352\261\260\353\246\254.js" diff --git "a/\354\227\260\354\204\234/week6/level2/\352\262\214\354\236\204\353\247\265\354\265\234\353\213\250\352\261\260\353\246\254.js" "b/\354\227\260\354\204\234/week6/level2/\352\262\214\354\236\204\353\247\265\354\265\234\353\213\250\352\261\260\353\246\254.js" new file mode 100644 index 0000000..967d1c6 --- /dev/null +++ "b/\354\227\260\354\204\234/week6/level2/\352\262\214\354\236\204\353\247\265\354\265\234\353\213\250\352\261\260\353\246\254.js" @@ -0,0 +1,70 @@ +function solution(maps) { + // 1. n 과 m 을 설정함 + const n = maps.length; + const m = maps[0].length; + + // 2. 정답 저장용 + let answer = -1; + + // 3. 방문을 체크할 배열 + let visited = Array.from(Array(n), () => Array(m).fill(false)); + + // 4. BFS 를 하기 위한 queue, 초기 값을 저장해둠 + let queue = [[0, 0, 1]]; + + // 5. queue 의 위치를 저장할 queueIndex + let queueIndex = 0; + + // 6. x, y 가 움직일 배열을 저장함 (상, 우, 하, 좌) + const moveX = [-1, 0, 1, 0]; + const moveY = [0, 1, 0, -1]; + + // 7. BFS 진행할 while 문 + while (queue.length > queueIndex) { + // 8. 일단 queue 에 있는 값을 꺼냄 + const now = queue[queueIndex]; + // 9. 값을 꺼냈으므로 index 를 +1 해줌 + queueIndex += 1; + + // 10. 만약 꺼낸 값이 정답 (도착지) 이면 + if (now[0] == n - 1 && now[1] == m - 1) { + // 11. answer 에 답을 저장함 (now[2] 는 이동 거리) + answer = now[2]; + break; + } + + // 12. 만약 꺼낸 값이 방문하지 않은 값이라면 + if (!visited[now[0]][now[1]]) { + // 13. 방문 + visit(now[0], now[1], now[2]); + } + } + + // 14. 방문 함수. x, y 좌표와 count (이동거리) 를 파라미터로 받음 + function visit(x, y, count) { + // 15. 먼저 방문했다고 체크함 + visited[x][y] = true; + + // 16. 현재 x, y 위치에서 상, 하, 좌, 우 로 이동할 반복문 + for (let i = 0; i < moveX.length; i++) { + // 17. movedX, Y 로 설정함. + const movedX = x + moveX[i]; + const movedY = y + moveY[i]; + + // 18. 만약, movedX, movedY 가 배열의 범위 안에 있고, 그 값 위치가 아직 방문하지 않았고, 그 위치를 방문할 수 있다면 (값이 1이라면) + if ( + movedX >= 0 && + movedX < n && + movedY >= 0 && + movedY < m && + !visited[movedX][movedY] && + maps[movedX][movedY] == 1 + ) { + // queue 에 그 값을 넣음 + queue.push([x + moveX[i], y + moveY[i], count + 1]); + } + } + } + + return answer; +} From 37c590146966c9143f768ffb34c2f68f69df11af Mon Sep 17 00:00:00 2001 From: Yeonseo-Jo Date: Sun, 19 Nov 2023 23:14:04 +0900 Subject: [PATCH 07/10] =?UTF-8?q?level=201=20-=20=EC=95=BD=EC=88=98?= =?UTF-8?q?=EC=9D=98=20=EA=B0=9C=EC=88=98=EC=99=80=20=EB=8D=A7=EC=85=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...54\210\230\354\231\200\353\215\247\354\205\210.js" | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 "\354\227\260\354\204\234/week6/level1/\354\225\275\354\210\230\354\235\230\352\260\234\354\210\230\354\231\200\353\215\247\354\205\210.js" diff --git "a/\354\227\260\354\204\234/week6/level1/\354\225\275\354\210\230\354\235\230\352\260\234\354\210\230\354\231\200\353\215\247\354\205\210.js" "b/\354\227\260\354\204\234/week6/level1/\354\225\275\354\210\230\354\235\230\352\260\234\354\210\230\354\231\200\353\215\247\354\205\210.js" new file mode 100644 index 0000000..59086d9 --- /dev/null +++ "b/\354\227\260\354\204\234/week6/level1/\354\225\275\354\210\230\354\235\230\352\260\234\354\210\230\354\231\200\353\215\247\354\205\210.js" @@ -0,0 +1,11 @@ +function solution(left, right) { + var answer = 0; + for (let i = left; i <= right; i++) { + if (Number.isInteger(Math.sqrt(i))) { + answer -= i; + } else { + answer += i; + } + } + return answer; +} From 68434ff1b99d34f12f8ccf691918d65c17f2cf64 Mon Sep 17 00:00:00 2001 From: Yeonseo-Jo Date: Sun, 19 Nov 2023 23:14:22 +0900 Subject: [PATCH 08/10] =?UTF-8?q?level=202=20-=20=EC=B5=9C=EB=8C=93?= =?UTF-8?q?=EA=B0=92=EA=B3=BC=20=EC=B5=9C=EC=86=9F=EA=B0=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...0\222\352\263\274\354\265\234\354\206\237\352\260\222.js" | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 "\354\227\260\354\204\234/week6/level2/\354\265\234\353\214\223\352\260\222\352\263\274\354\265\234\354\206\237\352\260\222.js" diff --git "a/\354\227\260\354\204\234/week6/level2/\354\265\234\353\214\223\352\260\222\352\263\274\354\265\234\354\206\237\352\260\222.js" "b/\354\227\260\354\204\234/week6/level2/\354\265\234\353\214\223\352\260\222\352\263\274\354\265\234\354\206\237\352\260\222.js" new file mode 100644 index 0000000..6c440e7 --- /dev/null +++ "b/\354\227\260\354\204\234/week6/level2/\354\265\234\353\214\223\352\260\222\352\263\274\354\265\234\354\206\237\352\260\222.js" @@ -0,0 +1,5 @@ +function solution(s) { + const arr = s.split(" "); + + return Math.min(...arr) + " " + Math.max(...arr); +} From e7351e09fe4e31dd8ae4edc117783b11ad6f27a4 Mon Sep 17 00:00:00 2001 From: Yeonseo-Jo Date: Sun, 19 Nov 2023 23:15:16 +0900 Subject: [PATCH 09/10] =?UTF-8?q?level=201=20-=20=EB=82=B4=EC=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../week6/level1/\353\202\264\354\240\201.js" | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 "\354\227\260\354\204\234/week6/level1/\353\202\264\354\240\201.js" diff --git "a/\354\227\260\354\204\234/week6/level1/\353\202\264\354\240\201.js" "b/\354\227\260\354\204\234/week6/level1/\353\202\264\354\240\201.js" new file mode 100644 index 0000000..dd16621 --- /dev/null +++ "b/\354\227\260\354\204\234/week6/level1/\353\202\264\354\240\201.js" @@ -0,0 +1,4 @@ +function solution(a, b) { + // current value 인자에 _을 넣어서 빈 인자 값으로, idx 사용해서 곱하기 + return a.reduce((acc, _, i) => (acc += a[i] * b[i]), 0); +} From 0a3a9eef4701eab21fd0f73dd455777790b6916d Mon Sep 17 00:00:00 2001 From: Yeonseo-Jo Date: Sun, 19 Nov 2023 23:16:29 +0900 Subject: [PATCH 10/10] =?UTF-8?q?level=202=20-=20=ED=94=BC=EB=A1=9C?= =?UTF-8?q?=EB=8F=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../\355\224\274\353\241\234\353\217\204.js" | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 "\354\227\260\354\204\234/week6/level2/\355\224\274\353\241\234\353\217\204.js" diff --git "a/\354\227\260\354\204\234/week6/level2/\355\224\274\353\241\234\353\217\204.js" "b/\354\227\260\354\204\234/week6/level2/\355\224\274\353\241\234\353\217\204.js" new file mode 100644 index 0000000..72a6532 --- /dev/null +++ "b/\354\227\260\354\204\234/week6/level2/\355\224\274\353\241\234\353\217\204.js" @@ -0,0 +1,28 @@ +function solution(k, dungeons) { + const length = dungeons.length; + const visited = Array(length).fill(false); + let answer = 0; + let temp = 0; + + const dfs = (currentK, cnt) => { + for (let i = 0; i < length; i++) { + // 해당 던전을 아직 방문하지 않았고 + // 던전의 최소 피로도가 현재 피로도보다 작거나 같으면 + if (!visited[i] && currentK >= dungeons[i][0]) { + // 해당 던전 방문표시 + visited[i] = true; + // 재귀 + dfs(currentK - dungeons[i][1], cnt + 1); + // 추후 다시 방문해야 하므로 방문 표시 해제 + visited[i] = false; + } + } + // 최대 던전 수 갱신 + answer = Math.max(answer, cnt); + return; + }; + + dfs(k, 0); + + return answer; +}