Lv.2 메뉴 리뉴얼

ujinujin·2022년 2월 2일
0

코딩테스트 뿌시기

목록 보기
30/57

🤖문제

👍🏻 2022년 2월 2일

<script>
const getCombinations = (arr, n) => {
    const results = [];
    if (n === 1) return arr.map((v) => [v]);
    arr.forEach((fix, i, origin) => {
        const rest = origin.slice(i + 1);
        const combinations = getCombinations(rest, n-1);
        const attached = combinations.map((v) => [fix, ...v])
    results.push(...attached);
    });
    return results;
}

function solution(orders, course) {
    var answer = [];
    let result = [];
    orders.sort();
    
    course.forEach((val) => {
        orders.forEach((v,i) => {
            v = v.split("").sort().join("");
            let combinationStr;
            if (v.length >= val) {
                let ordersArr = v.split("");
                let combination = getCombinations(ordersArr, val);               
                combination.forEach((combi) => {
                    let totalCnt = 0;
                    orders.forEach((order) => {
                        let cnt = 0;
                        combi.forEach((str) => {
                            if (order.includes(str)) cnt++
                        })
                        if (cnt === combi.length) totalCnt++;
                    })
                    if (totalCnt >= 2) {
                        combi = combi.join("");
                        result.push(combi)
                    }   
                }) 
            }
            
        })
    })
    let countObj = {};
    result.forEach((v,i) => {
        let count = result.filter(ele => v === ele).length;
        countObj[v] = count;
    })
    
    course.forEach((val) => {
        let obj = {}
        let keys = Object.keys(countObj).filter(ele => val === ele.length);
        if (keys.length !== 0) {
            keys.forEach((v,i) => {
                obj[v] = countObj[v];
            })
            let maxCnt = Math.max(...Object.values(obj));
            for (let [key, value] of Object.entries(obj)) {
                if (value === maxCnt) {
                    answer.push(key)
                }
            }
        }
    })    
    return answer.sort();
}
</script>

푸는데 1시간 40분 걸렸다...^^ 포인트 겨우 5점 주는거 보고 현타왔다

profile
백수와 취준생 그 사이 어디

0개의 댓글

관련 채용 정보