https://school.programmers.co.kr/learn/courses/30/lessons/42579?language=javascript# 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

function solution(genres, plays) {
    var answer = [];
    const hash = {};
    const arr = [];
    let compare = [];
    
    for(let i = 0 ; i < genres.length ; i++) {
        compare.push({key: genres[i], value: plays[i], index: i});
        if(hash[genres[i]] === undefined) hash[genres[i]] = plays[i];
        else hash[genres[i]] += plays[i];
    }
    
    let keys = Object.keys(hash);
    keys.forEach( k => arr.push({key: k, value: hash[k]}));
    
    while(keys.length > 0) {        
        arr.sort(function(a,b) {
            return b.value - a.value;
        })
    
        let first = arr.length !== 0 ? arr.shift().key : false;
        if(first === false) return answer;
        
        compare.sort(function(a,b) {
            return a.key === first ? -1 : 1;
        })
        
        let bestCandi = compare.map((c) => {
            if(c.key === first) return c;
        }).filter((b) => { return b !== undefined});
    
        compare = compare.filter((c) => c.key !== first);   

        bestCandi.sort((a,b) => {
            // 횟수 순
            if(b.value !== a.value) return b.value - a.value;
            // 횟수 같으면 고유 번호 낮은 순
            return a.index - b.index;            
        });
        
        // best 후보 중 2개만 선택
        bestCandi = bestCandi.filter((d,index) => index < 2);
    
        bestCandi.forEach((b) => {
            answer.push(b.index);
        })
    
        delete hash[first];    
    }
    return answer;
}
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/42578?language=javascript 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

function factorial(n) {
    if(n === 0) return 1;
    let result = 1;
    for(let i = 1 ; i <= n ; i++) {
        result *= i;
    }
    
    return result;
}

function perm(n,m) {
    let n_ = factorial(n);
    let m_ = factorial(m);
    let n_m = factorial(n-m);
    
    return n_/(m_*n_m);
}

function solution(clothes) {
    var answer = 1;
    let typeNumber = 0;
    const hash = {};
    
    clothes.forEach((c) => {
        if(hash[c[1]] === undefined) {
            hash[c[1]] = 1; 
            typeNumber++;
        }
        else hash[c[1]] += 1;
    });
    
    // 종류 1가지
    if(typeNumber === 1) return clothes.length;
    
    const keys = Object.keys(hash);

    keys.forEach((k) => {
       answer *= (perm(hash[k], 1) + perm(hash[k], 0));
    });
    
    return answer -1;
}
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/1845?language=javascript 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

function solution(nums) {
    const hash = {};
    
    nums.forEach((n) => {
        if(hash[n] === undefined) hash[n] = 1;
        else hash[n] += 1;
    });
    
    const M = nums.length/2;
    const keyList = Object.keys(hash);

    return M >= keyList.length ? keyList.length : M;
}
728x90

+ Recent posts