Muscardinus

메뉴 리뉴얼 본문

알고리즘 문제/[프로그래머스] Lv2

메뉴 리뉴얼

Muscardinus 2021. 2. 3. 00:34
728x90

programmers.co.kr/learn/courses/30/lessons/72411?language=javascript

 

코딩테스트 연습 - 메뉴 리뉴얼

레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서

programmers.co.kr

function solution(orders, course) {
    const orderedCountMap = new Map();
    const maxCountMap = new Map();
    const courseSet = new Set(course);
    
    const combination = (result, index, str) => {
        if (courseSet.has(result.length)) {
            let cnt = orderedCountMap.get(result) || 0;
            orderedCountMap.set(result, ++cnt);
            
            const max = maxCountMap.get(result.length) || 0;
            if (max < cnt) maxCountMap.set(result.length, cnt);
        }
        for (let i = index; i < str.length; i++) combination(result + str[i], i+ 1, str);
    }
    orders.map((order) => order.split("").sort().join("")).forEach((order) => combination("", 0, order));
    return course.map((length) => {
        const max = maxCountMap.get(length);
        return Array.from(orderedCountMap).filter((order) => order[0].length === length && order[1] >= 2 && order[1] === max).map((order) => order[0]);
    }).flatMap((order) => order).sort();
}
728x90
Comments