큰일이군.. ㅎ
sort () , nuw Set()
1.
function solution(nums) {
const answer = [];
for (let i = 0; i<nums.length; i++){
// console.log(nums[i])
// 4마리중 2마리만 가져갈 수 있단다
// 근데 answer의 길이가 더 길면 더돌려
if (
(nums.length / 2)!== answer.length &&
answer.includes(nums[i])===false
) {
answer.push(nums[i]) //한마리씩 answer에 넣어보자!
}
}
return answer.length
}
2.new Set()
➡️ includesd와 효율성 차이가 난다.
function solution(nums) {
const answer = new Set();
for (let i = 0; i<nums.length; i++){
if ((nums.length / 2)!== answer.size) {
answer.add(nums[i]) //한마리씩 answer에 넣어보자!
}
}
return answer.size
}
3.for문 없이 2개로 비교하기
function solution(nums) {
// 내가 최대로 가져갈 수 있는 폰켓몬의 고유한 종류의 개수
const answer = new Set(nums).size;
// 내가 최대로 가져갈 수 있는 폰켓몬의 개수
const limit = nums.length / 2;
// 내가 가져갈 수 있는 폰켓몬의 개수가 폰켓몬의 종류의 수 이상일 경우
if(limit >= answer) {
return answer;
}
// 내가 가져갈 수 있는 폰켓몬의 개수보다 폰켓몬의 종류가 더 많을 경우
return limit;
}
1.
function solution(d, budget) {
const answer = [];
// 부서가 신청한 금액을 오름차순 형태로 정렬 (=낮은 금액이 앞으로 올 수 있도록)
// 배열을 정렬하는 함수 sort()
d.sort((a,b)=> a > b ? 1 : -1)
let sum = 0;
for ( let i = 0; i< d.length; i++){
sum += d[i];
if (budget >= sum){
answer.push(d[i])
}
// console.log(d[i], sum, budget, answer)
}
return answer.length;
}
2. while문에서 index활용
function solution(d, budget) {
// 부서가 신청한 금액을 오름차순 형태로 정렬 (=낮은 금액이 앞으로 올 수 있도록)
d.sort ((a,b)=> a>b ? 1 : -1);
let idx = 0;
while(budget - d[idx] >=0){
budget -= d[idx]
idx++
}
return idx;
}
3.filter()
function solution(d, budget) {
return d.sort ((a,b)=> a>b ? 1 : -1)
.filter(money => {
// 전체 예산에서 각각의 부서의 지원금을 삭감해보기
budget -= money
return budget >= 0;
}).length
}