From fbdf9842c4100c4d14801cb9aa72f51322490465 Mon Sep 17 00:00:00 2001 From: hyejj19 Date: Mon, 28 Nov 2022 09:37:15 +0900 Subject: [PATCH 1/4] =?UTF-8?q?[PSG]=20=ED=94=BC=EB=B3=B4=EB=82=98?= =?UTF-8?q?=EC=B9=98=20=EC=88=98/=20Lv.2=20/=2030=EB=B6=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...4\353\202\230\354\271\230 \354\210\230.js" | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 "\354\243\274\354\244\2218B/hyejung/Week04/1. \355\224\274\353\263\264\353\202\230\354\271\230 \354\210\230.js" diff --git "a/\354\243\274\354\244\2218B/hyejung/Week04/1. \355\224\274\353\263\264\353\202\230\354\271\230 \354\210\230.js" "b/\354\243\274\354\244\2218B/hyejung/Week04/1. \355\224\274\353\263\264\353\202\230\354\271\230 \354\210\230.js" new file mode 100644 index 00000000..08adaec4 --- /dev/null +++ "b/\354\243\274\354\244\2218B/hyejung/Week04/1. \355\224\274\353\263\264\353\202\230\354\271\230 \354\210\230.js" @@ -0,0 +1,58 @@ +/** + * 통과 여부 : O + * 시간 : 30분 + * 점수 : + 15 + */ + +// 시도 3 : 재귀 호출을 사용하면 어느 시점에서는 스택오버플로우가 발생하기 때문에 13, 14 테스트케이스는 통과를 못하는 것 같다. +// 따라서 재귀가 아니라 for문을 사용해야한다. for문으로 직접 수를 계산해서 넣고, 계산된 수를 리턴한다. +function reference(n) { + const arr = [0, 1, 1]; + + // 늘 그렇듯 n 이 0이나 1, 2가 들어오면 값을 알고 있기 때문에 그 값을 리턴해준다. + if (n <= 1) return arr[n]; + // 그 이외의 경우에는 n까지 반복을 돌아준다. arr 안에 이미 계산된 값을 가지고 직접 값을 계산해준다. + // 수가 커지기 때문에 각 수를 1234567로 나눈 나머지로 하여 저장!23 + for (let i = 3; i <= n; i++) { + arr.push((arr[i - 1] + arr[i - 2]) % 1234567); + } + + return arr[n]; +} + +console.log(reference(5)); + +// 시도 2 : 테스트케이스 13,14를 제외하고는 통과. +/* +function solution(n) { + const memo = [0, 1]; + + function aux(n) { + if (memo[n] !== undefined) return memo[n]; + + memo[n] = (aux(n - 1) + aux(n - 2)) % 1234567; + return memo[n]; + } + + return aux(n); +} +console.log(solution(5)); +*/ + +// 시도 1 : 테스트케이스 1 ~6 통과, 그 이후는 통과 X +/* +function solution(n) { + const memo = [0, 1]; + + function aux(n) { + if (memo[n] !== undefined) return memo[n]; + + memo[n] = aux(n - 1) + aux(n - 2); + return memo[n]; + } + + return aux(n) % 1234567; +} + +console.log(solution(5)); +*/ From c872c9d7c5daeeca75f5f60bcd9235663701183c Mon Sep 17 00:00:00 2001 From: hyejj19 Date: Mon, 28 Nov 2022 09:37:32 +0900 Subject: [PATCH 2/4] =?UTF-8?q?[PSG]=20=EB=8B=A4=EC=9D=8C=20=ED=81=B0=20?= =?UTF-8?q?=EC=88=AB=EC=9E=90/=20Lv.2=20/=2030=EB=B6=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ... \355\201\260 \354\210\253\354\236\220.js" | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 "\354\243\274\354\244\2218B/hyejung/Week04/2. \353\213\244\354\235\214 \355\201\260 \354\210\253\354\236\220.js" diff --git "a/\354\243\274\354\244\2218B/hyejung/Week04/2. \353\213\244\354\235\214 \355\201\260 \354\210\253\354\236\220.js" "b/\354\243\274\354\244\2218B/hyejung/Week04/2. \353\213\244\354\235\214 \355\201\260 \354\210\253\354\236\220.js" new file mode 100644 index 00000000..681ee351 --- /dev/null +++ "b/\354\243\274\354\244\2218B/hyejung/Week04/2. \353\213\244\354\235\214 \355\201\260 \354\210\253\354\236\220.js" @@ -0,0 +1,41 @@ +/** + * 통과 여부 : O + * 시간 : 30분 + * 점수 : + 10 + */ + +// 시도 2 : 시도 1의 코드를 좀 더 간단하게 바꿨음 +// 함수를 따로 빼지 않고, 변수를 따로 만들지 않고, while 문 안에서 바로 리턴하도록 고침. +function solution2(num) { + let target = num.toString(2).match(/1/g).length; + while (true) { + num++; + if (num.toString(2).match(/1/g).length === target) return num; + } +} + +const result2 = solution2(78); +console.log(result2); + +// 시도 1 : 실제로 1의 갯수를 비교해서 풀었더니 틀렸음 :) +// 테스트케이스 2,6,8,11,13,14 실패 +// 효율성 테스트 4 실패 +/* +function countOne(n) { + return n.toString(2).match(/1/g).length; +} + +function solution1(num) { + let target = countOne(num); + let answer = 0; + let n = num + 1; + while (target !== answer) { + n++; + answer = countOne(n); + } + return n; +} + +const result = solution1(15); +console.log(result); +*/ From adee2fba667ae98c7afe2dd576e081af9742abea Mon Sep 17 00:00:00 2001 From: hyejj19 Date: Mon, 28 Nov 2022 09:38:12 +0900 Subject: [PATCH 3/4] =?UTF-8?q?[PSG]=20=EC=BD=9C=EB=9D=BC=20=EB=AC=B8?= =?UTF-8?q?=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...4\353\235\274 \353\254\270\354\240\234.js" | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 "\354\243\274\354\244\2218B/hyejung/Week04/3. \354\275\234\353\235\274 \353\254\270\354\240\234.js" diff --git "a/\354\243\274\354\244\2218B/hyejung/Week04/3. \354\275\234\353\235\274 \353\254\270\354\240\234.js" "b/\354\243\274\354\244\2218B/hyejung/Week04/3. \354\275\234\353\235\274 \353\254\270\354\240\234.js" new file mode 100644 index 00000000..1dc72c69 --- /dev/null +++ "b/\354\243\274\354\244\2218B/hyejung/Week04/3. \354\275\234\353\235\274 \353\254\270\354\240\234.js" @@ -0,0 +1,37 @@ +function solution1(a, b, n) { + // 바꾼 콜라의 갯수가 누적될 sum + let sum = 0; + + // n을 계속 줄여가면서 한 번에 바꿀 수 없는 수가 될 때까지 반복! + while (n >= a) { + // 내가 가진 콜라를 최대한 바꾸려면... (최대한 바꿀 수 있는 빈 병 갯수 / 한 번에 줘야하는 갯수) * 바꿔주는 갯수 + // 한 번에 줄 수 있는 갯수가 이만큼인데, 이만큼을 주면 한 번에 콜라를 몇 개를 준다더라 ~ 를 구하는 식. + let coke = parseInt((n - (n % a)) / a) * b; + // 바꿔먹은 콜라 갯수는 누적 + sum += coke; + // 바꿔먹은 콜라 갯수란 다 먹고 다시 바꿀 수 있는 콜라 갯수이므로, + // 아까 바꾸지 못했던 남은 빈 병에 새롭게 얻은 콜라 갯수를 더해줌. + n = (n % a) + coke; + } + return sum; +} + +const result1 = solution1(3, 1, 20); +console.log(result1); + +/* +테스트 1 〉 통과 (0.16ms, 33.4MB) +테스트 2 〉 통과 (0.04ms, 33.4MB) +테스트 3 〉 통과 (0.11ms, 33.4MB) +테스트 4 〉 통과 (0.06ms, 33.4MB) +테스트 5 〉 통과 (0.04ms, 33.4MB) +테스트 6 〉 통과 (0.04ms, 33.5MB) +테스트 7 〉 통과 (0.04ms, 33.5MB) +테스트 8 〉 통과 (0.05ms, 33.4MB) +테스트 9 〉 통과 (0.17ms, 33.4MB) +테스트 10 〉 통과 (0.04ms, 33.5MB) +테스트 11 〉 통과 (0.04ms, 33.5MB) +테스트 12 〉 통과 (0.21ms, 33.4MB) +테스트 13 〉 통과 (0.03ms, 33.5MB) +테스트 14 〉 통과 (0.04ms, 33.6MB) +*/ From f4b70afdb847bb80420194a9e14aebcd01759486 Mon Sep 17 00:00:00 2001 From: hyejj19 Date: Mon, 28 Nov 2022 09:38:21 +0900 Subject: [PATCH 4/4] =?UTF-8?q?[PSG]=20=EC=B2=B4=EC=9C=A1=EB=B3=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .... \354\262\264\354\234\241\353\263\265.js" | 86 +++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 "\354\243\274\354\244\2218B/hyejung/Week04/4. \354\262\264\354\234\241\353\263\265.js" diff --git "a/\354\243\274\354\244\2218B/hyejung/Week04/4. \354\262\264\354\234\241\353\263\265.js" "b/\354\243\274\354\244\2218B/hyejung/Week04/4. \354\262\264\354\234\241\353\263\265.js" new file mode 100644 index 00000000..54738ba1 --- /dev/null +++ "b/\354\243\274\354\244\2218B/hyejung/Week04/4. \354\262\264\354\234\241\353\263\265.js" @@ -0,0 +1,86 @@ +function reference(n, lost, reserve) { + // 학생들이 가지고 있는 체육복 수를 모두 1로 세팅 + const clothes = Array(n).fill(1); + + // 체육복을 도난당한 학생들의 체육복 수를 0으로 + lost.map(lost => { + clothes[lost - 1] = 0; + }); + + // 여벌을 가지고 있는 학생들의 체육복 수 1 증가 + reserve.map(reserve => { + clothes[reserve - 1] += 1; + }); + + for (let i = 0; i < n; i++) { + // 체육복이 0개인 학생이 앞사람한테 받아왔을 때 + if (clothes[i] === 0 && clothes[i - 1] === 2) { + clothes[i] = 1; + clothes[i - 1] = 1; + } + // 체육복이 0개인 학생이 뒷사람한테 받아왔을 때 + else if (clothes[i] === 0 && clothes[i + 1] === 2) { + clothes[i] = 1; + clothes[i + 1] = 1; + } + } + + // 체육복이 한개 이상인 학생들의 수 + return clothes.filter(c => c > 0).length; +} + +const result2 = reference(3, [3], [1]); +console.log(result2); + +// 5번, 12번 테스트케이스 실패 ㅠㅠ +const result = solution(3, [3], [1]); +console.log(result); + +// 레퍼런스 +/* +테스트 1 〉 통과 (0.23ms, 33.4MB) +테스트 2 〉 통과 (0.20ms, 33.4MB) +테스트 3 〉 통과 (0.16ms, 33.4MB) +테스트 4 〉 통과 (0.09ms, 33.4MB) +테스트 5 〉 통과 (0.17ms, 33.4MB) +테스트 6 〉 통과 (0.09ms, 33.5MB) +테스트 7 〉 통과 (0.17ms, 33.6MB) +테스트 8 〉 통과 (0.11ms, 33.5MB) +테스트 9 〉 통과 (0.09ms, 33.4MB) +테스트 10 〉 통과 (0.19ms, 33.5MB) +테스트 11 〉 통과 (0.08ms, 33.4MB) +테스트 12 〉 통과 (0.08ms, 33.6MB) +테스트 13 〉 통과 (0.08ms, 33.5MB) +테스트 14 〉 통과 (0.12ms, 33.5MB) +테스트 15 〉 통과 (0.09ms, 33.5MB) +테스트 16 〉 통과 (0.13ms, 33.4MB) +테스트 17 〉 통과 (0.10ms, 33.4MB) +테스트 18 〉 통과 (0.09ms, 33.4MB) +테스트 19 〉 통과 (0.09ms, 33.5MB) +테스트 20 〉 통과 (0.09ms, 33.4MB) +*/ + +// 내꺼... +/* +테스트 1 〉 통과 (0.10ms, 33.4MB) +테스트 2 〉 통과 (0.11ms, 33.5MB) +테스트 3 〉 통과 (0.10ms, 33.4MB) +테스트 4 〉 통과 (0.10ms, 33.5MB) +테스트 5 〉 실패 (0.18ms, 33.5MB) +테스트 6 〉 통과 (0.09ms, 33.4MB) +테스트 7 〉 통과 (0.17ms, 33.5MB) +테스트 8 〉 통과 (0.10ms, 33.4MB) +테스트 9 〉 통과 (0.09ms, 33.4MB) +테스트 10 〉 통과 (0.17ms, 33.4MB) +테스트 11 〉 통과 (0.09ms, 33.4MB) + +12 〉 실패 (0.09ms, 33.4MB) +테스트 13 〉 통과 (0.09ms, 33.4MB) +테스트 14 〉 통과 (0.10ms, 33.4MB) +테스트 15 〉 통과 (0.09ms, 33.4MB) +테스트 16 〉 통과 (0.10ms, 33.4MB) +테스트 17 〉 통과 (0.09ms, 33.4MB) +테스트 18 〉 통과 (0.09ms, 33.5MB) +테스트 19 〉 통과 (0.10ms, 33.5MB) +테스트 20 〉 통과 (0.10ms, 33.5MB) +*/