From a8710f4502fa035f628f75cd8629456c4a0f1bc1 Mon Sep 17 00:00:00 2001 From: rachelyu1025 Date: Sun, 20 Nov 2022 17:59:47 +0900 Subject: [PATCH 1/3] =?UTF-8?q?[PGS]=20=EC=86=8C=EC=88=98=20=EB=A7=8C?= =?UTF-8?q?=EB=93=A4=EA=B8=B0/level1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...0 \353\247\214\353\223\244\352\270\260.js" | 99 +++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 "\354\243\274\354\244\2218/eunbi/Week20/\354\206\214\354\210\230 \353\247\214\353\223\244\352\270\260.js" diff --git "a/\354\243\274\354\244\2218/eunbi/Week20/\354\206\214\354\210\230 \353\247\214\353\223\244\352\270\260.js" "b/\354\243\274\354\244\2218/eunbi/Week20/\354\206\214\354\210\230 \353\247\214\353\223\244\352\270\260.js" new file mode 100644 index 00000000..c525dcdc --- /dev/null +++ "b/\354\243\274\354\244\2218/eunbi/Week20/\354\206\214\354\210\230 \353\247\214\353\223\244\352\270\260.js" @@ -0,0 +1,99 @@ +//[PGS] 소수 만들기 , +4 + +// 재귀가 하고 싶었으나 머리가 굳어버렸습니다... +// 테스트 1 〉 통과 (1.29ms, 35.6MB) +// 테스트 2 〉 통과 (1.73ms, 35.8MB) +// 테스트 3 〉 통과 (0.33ms, 33.5MB) +// 테스트 4 〉 통과 (0.31ms, 33.5MB) +// 테스트 5 〉 통과 (38.01ms, 36.7MB) +// 테스트 6 〉 통과 (2.07ms, 35.8MB) +// 테스트 7 〉 통과 (0.25ms, 33.4MB) +// 테스트 8 〉 통과 (29.59ms, 37.4MB) +// 테스트 9 〉 통과 (0.99ms, 35.5MB) +// 테스트 10 〉 통과 (4.28ms, 35.8MB) +// 테스트 11 〉 통과 (0.18ms, 33.5MB) +// 테스트 12 〉 통과 (0.16ms, 33.5MB) +// 테스트 13 〉 통과 (0.18ms, 33.5MB) +// 테스트 14 〉 통과 (0.17ms, 33.4MB) +// 테스트 15 〉 통과 (0.16ms, 33.4MB) +// 테스트 16 〉 통과 (32.18ms, 37.4MB) +// 테스트 17 〉 통과 (3.18ms, 35.5MB) +// 테스트 18 〉 통과 (0.21ms, 33.4MB) +// 테스트 19 〉 통과 (0.10ms, 33.4MB) +// 테스트 20 〉 통과 (4.61ms, 35.8MB) +// 테스트 21 〉 통과 (5.17ms, 35.9MB) +// 테스트 22 〉 통과 (20.82ms, 36.4MB) +// 테스트 23 〉 통과 (0.06ms, 33.4MB) +// 테스트 24 〉 통과 (4.44ms, 35.9MB) +// 테스트 25 〉 통과 (4.77ms, 35.8MB) +// 테스트 26 〉 통과 (0.06ms, 33.5MB) + +// 소수 구하는 함수 +const isPrime = (num) => { + for(let i = 2; i <= Math.floor(Math.sqrt(num)); i++){ + if(num % i === 0) return false; //소수가 아닌경우 + } + return true; // 소수인 경우 +} + +function solution(nums) { + let count = 0; // 3개의 수의 합이 소수인 개수를 담을 변수 + + for(let i = 0; i < nums.length-2; i++){ + for(let j = i+1; j < nums.length-1; j++){ + for(let n = j+1; n < nums.length; n++){ + let sum = nums[i]+nums[j]+nums[n]; + + if(isPrime(sum)) count++; + } + } + } + + return count; +} + +// 재귀로 푼 다른사람 풀이 +// 소수일 때 true 반환하는 함수 +function primeNum(num) { + for (let i=2; i < num; i++) { + if (num % i === 0) { + return false; + } + } + return true; +} + +// 조합 함수 +function combinations(arr, selectNum) { + const result = []; + + if (selectNum === 1) { + return arr.map(value => [value]); + }; + + arr.forEach((fixed, index, origin) => { + const rest = origin.slice(index+1); + const reCombinations = combinations(rest, selectNum-1); + const attached = reCombinations.map(combination => [fixed, ...combination]); + + result.push(...attached); + }); + return result; +}; + +function solution(nums) { + let primeNumCnt = 0; + + const combinationArr = combinations(nums, 3); + + combinationArr.forEach(elem => { + let tmp = elem.reduce((a,b)=>a+b); + + if (primeNum(tmp) === true) { + primeNumCnt += 1 + } + }); + + return primeNumCnt; + + // 출처: https://dapsu-startup.tistory.com/entry/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%86%8C%EC%88%98-%EB%A7%8C%EB%93%A4%EA%B8%B0-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8JavaScript \ No newline at end of file From f3c1bc35c6e72fd5219cfac445e957f0cc0f9ad1 Mon Sep 17 00:00:00 2001 From: rachelyu1025 Date: Sun, 20 Nov 2022 18:00:05 +0900 Subject: [PATCH 2/3] =?UTF-8?q?[PGS]=20=EA=B3=BC=EC=9D=BC=EC=9E=A5?= =?UTF-8?q?=EC=88=98/level1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...74\354\235\274\354\236\245\354\210\230.js" | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 "\354\243\274\354\244\2218/eunbi/Week20/\352\263\274\354\235\274\354\236\245\354\210\230.js" diff --git "a/\354\243\274\354\244\2218/eunbi/Week20/\352\263\274\354\235\274\354\236\245\354\210\230.js" "b/\354\243\274\354\244\2218/eunbi/Week20/\352\263\274\354\235\274\354\236\245\354\210\230.js" new file mode 100644 index 00000000..d19d9ee4 --- /dev/null +++ "b/\354\243\274\354\244\2218/eunbi/Week20/\352\263\274\354\235\274\354\236\245\354\210\230.js" @@ -0,0 +1,59 @@ +//[PGS] 과일장수,+3 + +// 시간초과 +function solution(k, m, score) { + let total = 0; + + score.sort((a,b) => b - a); + + while(score.length >= m){ + let arr = score.splice(0, m); + let price = Math.min(...arr) * m; + total += price; + } + + return total +} + +// 시도2 +// 테스트 1 〉 통과 (0.16ms, 33.6MB) +// 테스트 2 〉 통과 (0.07ms, 33.5MB) +// 테스트 3 〉 통과 (0.16ms, 33.4MB) +// 테스트 4 〉 통과 (0.06ms, 33.5MB) +// 테스트 5 〉 통과 (0.06ms, 33.5MB) +// 테스트 6 〉 통과 (16.07ms, 40MB) +// 테스트 7 〉 통과 (18.18ms, 38MB) +// 테스트 8 〉 통과 (3.16ms, 35.9MB) +// 테스트 9 〉 통과 (18.31ms, 38.2MB) +// 테스트 10 〉 통과 (14.72ms, 39.3MB) +// 테스트 11 〉 통과 (221.27ms, 95MB) +// 테스트 12 〉 통과 (217.09ms, 93.8MB) +// 테스트 13 〉 통과 (235.58ms, 95MB) +// 테스트 14 〉 통과 (252.08ms, 93.8MB) +// 테스트 15 〉 통과 (241.03ms, 94.3MB) +// 테스트 16 〉 통과 (0.06ms, 33.5MB) +// 테스트 17 〉 통과 (0.06ms, 33.4MB) +// 테스트 18 〉 통과 (0.17ms, 33.4MB) +// 테스트 19 〉 통과 (0.17ms, 33.5MB) +// 테스트 20 〉 통과 (0.17ms, 33.5MB) +// 테스트 21 〉 통과 (0.07ms, 33.4MB) +// 테스트 22 〉 통과 (0.06ms, 33.5MB) +// 테스트 23 〉 통과 (0.06ms, 33.6MB) +// 테스트 24 〉 통과 (0.10ms, 33.6MB) + +function solution(k, m, score) { + let total = 0; // 사과박스를 판 가격들의 합 + + score.sort((a,b) => b - a); // 최대 이익을 위해 내림차순 정렬로 가장 높은 값을 받을 수 있도록 한다. + + for(let i = 0; i < score.length; i+=m){ + let arr = score.slice(i, i+m); //m 개만큼 자른 배열을 arr에 저장 + + if(arr.length >= m){ // arr안의 사과 개수가 팔 수 있는 만큼 존재한다면 + let price = Math.min(...arr) * m; // 사과박스의 가격을 매기고 + total += price; // 판 가격을 total에 합해준다. + } + } + + return total; +} \ No newline at end of file From 387af71172519c1dafabe9f724676743cdecfa8b Mon Sep 17 00:00:00 2001 From: rachelyu1025 Date: Sun, 20 Nov 2022 18:00:19 +0900 Subject: [PATCH 3/3] =?UTF-8?q?[PGS]=20=ED=94=BC=EB=B3=B4=EB=82=98?= =?UTF-8?q?=EC=B9=98=20=EC=88=98/level2?= 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" | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 "\354\243\274\354\244\2218/eunbi/Week20/\355\224\274\353\263\264\353\202\230\354\271\230 \354\210\230.js" diff --git "a/\354\243\274\354\244\2218/eunbi/Week20/\355\224\274\353\263\264\353\202\230\354\271\230 \354\210\230.js" "b/\354\243\274\354\244\2218/eunbi/Week20/\355\224\274\353\263\264\353\202\230\354\271\230 \354\210\230.js" new file mode 100644 index 00000000..850e27a1 --- /dev/null +++ "b/\354\243\274\354\244\2218/eunbi/Week20/\355\224\274\353\263\264\353\202\230\354\271\230 \354\210\230.js" @@ -0,0 +1,28 @@ +//[PGS] 피보나치 수, +6 +// 테스트 1 〉 통과 (0.04ms, 33.5MB) +// 테스트 2 〉 통과 (0.04ms, 33.6MB) +// 테스트 3 〉 통과 (0.04ms, 33.5MB) +// 테스트 4 〉 통과 (0.04ms, 33.5MB) +// 테스트 5 〉 통과 (0.04ms, 33.7MB) +// 테스트 6 〉 통과 (0.11ms, 33.5MB) +// 테스트 7 〉 통과 (0.22ms, 33.5MB) +// 테스트 8 〉 통과 (0.18ms, 33.6MB) +// 테스트 9 〉 통과 (0.15ms, 33.5MB) +// 테스트 10 〉 통과 (0.23ms, 33.4MB) +// 테스트 11 〉 통과 (0.15ms, 33.7MB) +// 테스트 12 〉 통과 (0.16ms, 33.4MB) +// 테스트 13 〉 통과 (4.89ms, 39.1MB) +// 테스트 14 〉 통과 (4.68ms, 39MB) + +// 재귀함수로 풀었다가 시간초과되어 for문으로 다시 풀이함 +function solution(n) { + let fiboNums = [0,1,1]; // 0,1,2는 고정된 값이므로 + + for(let i = 3; i <= n; i++){ + fiboNums.push((fiboNums[i-2]+fiboNums[i-1]) % 1234567); //반복하다보면 자바스크립트에서 다루지 못하는 큰 수가 나오기 때문 + } + + let total = (fiboNums[n-2] + fiboNums[n-1]) % 1234567; + + return total; +} \ No newline at end of file