diff --git "a/\354\243\274\354\244\2218B/Yebin/Week4/P13. \355\224\274\353\263\264\353\202\230\354\271\230 \354\210\230.js" "b/\354\243\274\354\244\2218B/Yebin/Week4/P13. \355\224\274\353\263\264\353\202\230\354\271\230 \354\210\230.js" new file mode 100644 index 00000000..14ba740b --- /dev/null +++ "b/\354\243\274\354\244\2218B/Yebin/Week4/P13. \355\224\274\353\263\264\353\202\230\354\271\230 \354\210\230.js" @@ -0,0 +1,45 @@ +/** +채점을 시작합니다. +정확성 테스트 +테스트 1 〉 통과 (0.04ms, 33.4MB) +테스트 2 〉 통과 (0.04ms, 33.4MB) +테스트 3 〉 통과 (0.12ms, 33.4MB) +테스트 4 〉 통과 (0.05ms, 33.4MB) +테스트 5 〉 통과 (0.14ms, 33.4MB) +테스트 6 〉 통과 (0.12ms, 33.4MB) +테스트 7 〉 통과 (0.27ms, 33.5MB) +테스트 8 〉 통과 (0.22ms, 33.4MB) +테스트 9 〉 통과 (0.22ms, 33.4MB) +테스트 10 〉 통과 (0.26ms, 33.6MB) +테스트 11 〉 통과 (0.16ms, 33.5MB) +테스트 12 〉 통과 (0.20ms, 33.5MB) +테스트 13 〉 통과 (4.77ms, 39MB) +테스트 14 〉 통과 (4.71ms, 38.9MB) +채점 결과 +정확성: 100.0 +합계: 100.0 / 100.0 + */ + +//첫 번째 시도 - 런타임에러(13, 14) +// -> 재귀함수는 호출이 가능한 깊이가 정해져있는데 +// 13, 14번은 테스트 케이스는 그 깊이를 초과했기 때문에 +// 런타임 에러가 뜨는 것이다. +function solution(n) { + let fibArr = [0, 1]; + const fib = (num) => { + if (fibArr[num] !== undefined) return fibArr[num]; + fibArr[num] = (fib(num - 1) + fib(num - 2)) % 1234567; + return fibArr[num]; + }; + return fib(n); +} + +//두 번째 시도 - 통과 +function solution(n) { + let fibArr = [0, 1]; + if (n <= 1) return fibArr[n]; + for (let i = 2; i < n + 1; i++) { + fibArr.push((fibArr[i - 2] + fibArr[i - 1]) % 1234567); + } + return fibArr[n]; +} diff --git "a/\354\243\274\354\244\2218B/Yebin/Week4/P14. \353\213\244\354\235\214 \355\201\260 \354\210\253\354\236\220.js" "b/\354\243\274\354\244\2218B/Yebin/Week4/P14. \353\213\244\354\235\214 \355\201\260 \354\210\253\354\236\220.js" new file mode 100644 index 00000000..81b164af --- /dev/null +++ "b/\354\243\274\354\244\2218B/Yebin/Week4/P14. \353\213\244\354\235\214 \355\201\260 \354\210\253\354\236\220.js" @@ -0,0 +1,47 @@ +/** +채점을 시작합니다. +정확성 테스트 +테스트 1 〉 통과 (0.05ms, 33.4MB) +테스트 2 〉 통과 (0.04ms, 33.4MB) +테스트 3 〉 통과 (0.05ms, 33.5MB) +테스트 4 〉 통과 (0.04ms, 33.4MB) +테스트 5 〉 통과 (0.05ms, 33.5MB) +테스트 6 〉 통과 (0.05ms, 33.6MB) +테스트 7 〉 통과 (0.05ms, 33.4MB) +테스트 8 〉 통과 (0.04ms, 33.6MB) +테스트 9 〉 통과 (0.06ms, 33.6MB) +테스트 10 〉 통과 (0.06ms, 33.5MB) +테스트 11 〉 통과 (0.05ms, 33.6MB) +테스트 12 〉 통과 (0.05ms, 33.5MB) +테스트 13 〉 통과 (0.04ms, 33.4MB) +테스트 14 〉 통과 (0.06ms, 33.5MB) +효율성 테스트 +테스트 1 〉 통과 (0.08ms, 32.9MB) +테스트 2 〉 통과 (0.05ms, 33.4MB) +테스트 3 〉 통과 (0.04ms, 33.3MB) +테스트 4 〉 통과 (0.05ms, 33.5MB) +테스트 5 〉 통과 (0.06ms, 33.4MB) +테스트 6 〉 통과 (0.07ms, 33MB) +채점 결과 +정확성: 70.0 +효율성: 30.0 +합계: 100.0 / 100.0 + */ + +function solution(n) { + const binaryN = n.toString(2); + let result = (n + 1).toString(2); + let i = n + 2; + while (result.split("1").length - 1 !== binaryN.split("1").length - 1) { + result = i.toString(2); + i++; + } + return parseInt(result, 2); +} + +//다른 사람의 풀이 +function solution(n, a = n + 1) { + return n.toString(2).match(/1/g).length == a.toString(2).match(/1/g).length + ? a + : solution(n, a + 1); +} diff --git "a/\354\243\274\354\244\2218B/Yebin/Week4/P15. \354\275\234\353\235\274 \353\254\270\354\240\234.js" "b/\354\243\274\354\244\2218B/Yebin/Week4/P15. \354\275\234\353\235\274 \353\254\270\354\240\234.js" new file mode 100644 index 00000000..74b71b9d --- /dev/null +++ "b/\354\243\274\354\244\2218B/Yebin/Week4/P15. \354\275\234\353\235\274 \353\254\270\354\240\234.js" @@ -0,0 +1,33 @@ +/** +채점을 시작합니다. +정확성 테스트 +테스트 1 〉 통과 (0.04ms, 33.4MB) +테스트 2 〉 통과 (0.05ms, 33.5MB) +테스트 3 〉 통과 (0.04ms, 33.4MB) +테스트 4 〉 통과 (0.04ms, 33.4MB) +테스트 5 〉 통과 (0.04ms, 33.4MB) +테스트 6 〉 통과 (0.04ms, 33.5MB) +테스트 7 〉 통과 (0.03ms, 33.4MB) +테스트 8 〉 통과 (0.03ms, 33.5MB) +테스트 9 〉 통과 (0.04ms, 33.4MB) +테스트 10 〉 통과 (0.03ms, 33.4MB) +테스트 11 〉 통과 (0.03ms, 33.4MB) +테스트 12 〉 통과 (0.23ms, 33.6MB) +테스트 13 〉 통과 (0.04ms, 33.5MB) +테스트 14 〉 통과 (0.04ms, 33.5MB) +채점 결과 +정확성: 100.0 +합계: 100.0 / 100.0 + */ + +function solution(a, b, n) { + let now = n; // 내가 가진 병 개수 + let count = 0; // 지금까지 받은 전체 병 개수 + while (a <= now) { + const avail = now - (now % a); // 마트에 줄 수 있는 최대 병 개수 + const canGet = (avail * b) / a; // 이번에 마트에서 받을 수 있는 병 개수 + count += canGet; + now = now - avail + canGet; + } + return count; +} diff --git "a/\354\243\274\354\244\2218B/Yebin/Week4/P16. \354\262\264\354\234\241\353\263\265.js" "b/\354\243\274\354\244\2218B/Yebin/Week4/P16. \354\262\264\354\234\241\353\263\265.js" new file mode 100644 index 00000000..09e9eb7c --- /dev/null +++ "b/\354\243\274\354\244\2218B/Yebin/Week4/P16. \354\262\264\354\234\241\353\263\265.js" @@ -0,0 +1,54 @@ +/** +채점을 시작합니다. +정확성 테스트 +테스트 1 〉 통과 (0.08ms, 33.5MB) +테스트 2 〉 통과 (0.17ms, 32.9MB) +테스트 3 〉 통과 (0.17ms, 33MB) +테스트 4 〉 통과 (0.08ms, 33.5MB) +테스트 5 〉 통과 (0.18ms, 33.4MB) +테스트 6 〉 통과 (0.07ms, 33.5MB) +테스트 7 〉 통과 (0.18ms, 33.4MB) +테스트 8 〉 통과 (0.08ms, 33.4MB) +테스트 9 〉 통과 (0.08ms, 33.5MB) +테스트 10 〉 통과 (0.17ms, 33.5MB) +테스트 11 〉 통과 (0.09ms, 33.5MB) +테스트 12 〉 통과 (0.08ms, 33.5MB) +테스트 13 〉 통과 (0.07ms, 33.4MB) +테스트 14 〉 통과 (0.08ms, 33.4MB) +테스트 15 〉 통과 (0.11ms, 33.6MB) +테스트 16 〉 통과 (0.12ms, 33.4MB) +테스트 17 〉 통과 (0.08ms, 33.4MB) +테스트 18 〉 통과 (0.08ms, 33.6MB) +테스트 19 〉 통과 (0.07ms, 33.4MB) +테스트 20 〉 통과 (0.08ms, 33.5MB) +채점 결과 +정확성: 100.0 +합계: 100.0 / 100.0 + */ + +function solution(n, lost, reserve) { + // 본인 것만 있는 사람 'normal' + let arr = Array(n).fill("normal"); + // 도난 당한 사람 'lost' + for (let i = 0; i < lost.length; i++) { + arr[lost[i] - 1] = "lost"; + } + // 도난 당했지만 여벌 가져온 사람 'normal' + // 본인 것도 있고 여벌도 있는 사람 'reserve' + for (let i = 0; i < reserve.length; i++) { + arr[reserve[i] - 1] = arr[reserve[i] - 1] === "lost" ? "normal" : "reserve"; + } + + // 본인이 'lost'이고 앞 사람이 'reserve'면 둘다 'normal'로 변경 + // 본인이 'lost'이고 뒷 사람이 'reserve'면 둘다 'normal'로 변경 + for (let i = 0; i < arr.length; i++) { + if (arr[i] === "lost" && arr[i - 1] === "reserve") { + arr[i] = "normal"; + arr[i - 1] = "normal"; + } else if (arr[i] === "lost" && arr[i + 1] === "reserve") { + arr[i] = "normal"; + arr[i + 1] = "normal"; + } + } + return arr.filter((el) => el !== "lost").length; +}