[프로그래머스]Algorithm_23.4.11

윤성해·2023년 4월 11일
0

알고리즘

목록 보기
15/22
post-thumbnail

큰일이군.. ㅎ

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
}
  • length -> size로 변경 / push -> add로 변경
    3.for문 없이 2개로 비교하기
function solution(nums) {
    // 내가 최대로 가져갈 수 있는 폰켓몬의 고유한 종류의 개수
    const answer = new Set(nums).size;
    // 내가 최대로 가져갈 수 있는 폰켓몬의 개수
    const limit = nums.length / 2;
    
    // 내가 가져갈 수 있는 폰켓몬의 개수가 폰켓몬의 종류의 수 이상일 경우
    if(limit >= answer) {
        return answer;
        
    }
    // 내가 가져갈 수 있는 폰켓몬의 개수보다 폰켓몬의 종류가 더 많을 경우
    return limit;
}

예산

문제

레퍼런스 (sort가 중요한 역할을 한다!)

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
}
profile
Slow and steady wins the race.

0개의 댓글