Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 59 additions & 0 deletions 주중8/eunbi/Week20/과일장수.js
Original file line number Diff line number Diff line change
@@ -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;
}
99 changes: 99 additions & 0 deletions 주중8/eunbi/Week20/소수 만들기.js
Original file line number Diff line number Diff line change
@@ -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
28 changes: 28 additions & 0 deletions 주중8/eunbi/Week20/피보나치 수.js
Original file line number Diff line number Diff line change
@@ -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;
}