✏️

집밥이 그리워

Question

김코딩은 몇 년의 해외 출장 끝에 본가에 내려왔습니다. 오랜만에 보는 김코딩의 얼굴에 반가웠던 부모님은 상다리가 부러질 정도로 음식을 만들었습니다. 감동의 재회도 잠시, 의자에 앉아 식사를 하려던 김코딩은 무엇부터 먹어야 될지 깊은 생각에 빠졌습니다. 정성스럽게 차려 주신 만큼, 최대한 많은 방법으로 다양하게 먹고 싶었기 때문입니다.
밥은 한 가지이며 반찬은 다수일 때, 밥과 함께 먹을 수 있는 반찬의 모든 경우의 수를 배열에 담아 리턴하세요.

입력

인자 1: sideDishes

String 타입의 영문으로 된 반찬이 나열되어 있는 배열

출력

Array 타입을 리턴해야 합니다.
밥과 함께 먹을 수 있는 반찬의 모든 경우의 수가 담긴 배열

주의사항

반찬은 영문으로 작성이 되어 있습니다.
반찬은 중복되지 않습니다.
반찬을 먹지 않는 것도 포함됩니다. (출력되는 2차원 배열은 빈 배열을 포함합니다.)
반찬은 3개 이상 99개 이하입니다.
출력되는 배열은 전부 사전식 순서(lexical order)로 정렬되어야 합니다.

Test Case 1

let output = missHouseMeal(["eggroll", "kimchi", "fishSoup"]); console.log(output); /* [ [],  [ 'eggroll' ],  [ 'eggroll', 'fishSoup' ],  [ 'eggroll', 'fishSoup', 'kimchi' ],  [ 'eggroll', 'kimchi' ],  [ 'fishSoup' ],  [ 'fishSoup', 'kimchi' ],  [ 'kimchi' ] ]  */
Shell
복사

Test Case 2

Shell
복사

Solve

function missHouseMeal(sideDishes) { // TODO: 여기에 코드를 작성합니다. sideDishes.sort(); const result = [] const dfs = (depth, subSet) => { if (depth === sideDishes.length) { result.push(subSet); return; } dfs(depth + 1, subSet); dfs(depth + 1, [...subSet, sideDishes[depth]]); } dfs(0, []); result.sort(); return result; }
JavaScript
복사
실행시간 : ms