|
| 1 | +# [level 2] 메뉴 리뉴얼 - 72411 |
| 2 | + |
| 3 | +[문제 링크](https://school.programmers.co.kr/learn/courses/30/lessons/72411) |
| 4 | + |
| 5 | +### 성능 요약 |
| 6 | + |
| 7 | +메모리: 93.1 MB, 시간: 10.25 ms |
| 8 | + |
| 9 | +### 구분 |
| 10 | + |
| 11 | +코딩테스트 연습 > 2021 KAKAO BLIND RECRUITMENT |
| 12 | + |
| 13 | +### 채점결과 |
| 14 | + |
| 15 | +정확성: 100.0<br/>합계: 100.0 / 100.0 |
| 16 | + |
| 17 | +### 제출 일자 |
| 18 | + |
| 19 | +2025년 08월 26일 13:19:33 |
| 20 | + |
| 21 | +### 문제 설명 |
| 22 | + |
| 23 | +<p>레스토랑을 운영하던 <code>스카피</code>는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다.<br> |
| 24 | +기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 새로운 메뉴를 제공하기로 결정했습니다. 어떤 단품메뉴들을 조합해서 코스요리 메뉴로 구성하면 좋을 지 고민하던 "스카피"는 이전에 각 손님들이 주문할 때 가장 많이 함께 주문한 단품메뉴들을 코스요리 메뉴로 구성하기로 했습니다.<br> |
| 25 | +단, 코스요리 메뉴는 최소 2가지 이상의 단품메뉴로 구성하려고 합니다. 또한, 최소 2명 이상의 손님으로부터 주문된 단품메뉴 조합에 대해서만 코스요리 메뉴 후보에 포함하기로 했습니다.</p> |
| 26 | + |
| 27 | +<p>예를 들어, 손님 6명이 주문한 단품메뉴들의 조합이 다음과 같다면,<br> |
| 28 | +(각 손님은 단품메뉴를 2개 이상 주문해야 하며, 각 단품메뉴는 A ~ Z의 알파벳 대문자로 표기합니다.)</p> |
| 29 | +<table class="table"> |
| 30 | + <thead><tr> |
| 31 | +<th>손님 번호</th> |
| 32 | +<th>주문한 단품메뉴 조합</th> |
| 33 | +</tr> |
| 34 | +</thead> |
| 35 | + <tbody><tr> |
| 36 | +<td>1번 손님</td> |
| 37 | +<td>A, B, C, F, G</td> |
| 38 | +</tr> |
| 39 | +<tr> |
| 40 | +<td>2번 손님</td> |
| 41 | +<td>A, C</td> |
| 42 | +</tr> |
| 43 | +<tr> |
| 44 | +<td>3번 손님</td> |
| 45 | +<td>C, D, E</td> |
| 46 | +</tr> |
| 47 | +<tr> |
| 48 | +<td>4번 손님</td> |
| 49 | +<td>A, C, D, E</td> |
| 50 | +</tr> |
| 51 | +<tr> |
| 52 | +<td>5번 손님</td> |
| 53 | +<td>B, C, F, G</td> |
| 54 | +</tr> |
| 55 | +<tr> |
| 56 | +<td>6번 손님</td> |
| 57 | +<td>A, C, D, E, H</td> |
| 58 | +</tr> |
| 59 | +</tbody> |
| 60 | + </table> |
| 61 | +<p>가장 많이 함께 주문된 단품메뉴 조합에 따라 "스카피"가 만들게 될 코스요리 메뉴 구성 후보는 다음과 같습니다.</p> |
| 62 | +<table class="table"> |
| 63 | + <thead><tr> |
| 64 | +<th>코스 종류</th> |
| 65 | +<th>메뉴 구성</th> |
| 66 | +<th>설명</th> |
| 67 | +</tr> |
| 68 | +</thead> |
| 69 | + <tbody><tr> |
| 70 | +<td>요리 2개 코스</td> |
| 71 | +<td>A, C</td> |
| 72 | +<td>1번, 2번, 4번, 6번 손님으로부터 총 4번 주문됐습니다.</td> |
| 73 | +</tr> |
| 74 | +<tr> |
| 75 | +<td>요리 3개 코스</td> |
| 76 | +<td>C, D, E</td> |
| 77 | +<td>3번, 4번, 6번 손님으로부터 총 3번 주문됐습니다.</td> |
| 78 | +</tr> |
| 79 | +<tr> |
| 80 | +<td>요리 4개 코스</td> |
| 81 | +<td>B, C, F, G</td> |
| 82 | +<td>1번, 5번 손님으로부터 총 2번 주문됐습니다.</td> |
| 83 | +</tr> |
| 84 | +<tr> |
| 85 | +<td>요리 4개 코스</td> |
| 86 | +<td>A, C, D, E</td> |
| 87 | +<td>4번, 6번 손님으로부터 총 2번 주문됐습니다.</td> |
| 88 | +</tr> |
| 89 | +</tbody> |
| 90 | + </table> |
| 91 | +<hr> |
| 92 | + |
| 93 | +<h4><strong>[문제]</strong></h4> |
| 94 | + |
| 95 | +<p>각 손님들이 주문한 단품메뉴들이 문자열 형식으로 담긴 배열 orders, "스카피"가 <code>추가하고 싶어하는</code> 코스요리를 구성하는 단품메뉴들의 갯수가 담긴 배열 course가 매개변수로 주어질 때, "스카피"가 새로 추가하게 될 코스요리의 메뉴 구성을 문자열 형태로 배열에 담아 return 하도록 solution 함수를 완성해 주세요.</p> |
| 96 | + |
| 97 | +<h4><strong>[제한사항]</strong></h4> |
| 98 | + |
| 99 | +<ul> |
| 100 | +<li>orders 배열의 크기는 2 이상 20 이하입니다.</li> |
| 101 | +<li>orders 배열의 각 원소는 크기가 2 이상 10 이하인 문자열입니다. |
| 102 | + |
| 103 | +<ul> |
| 104 | +<li>각 문자열은 알파벳 대문자로만 이루어져 있습니다.</li> |
| 105 | +<li>각 문자열에는 같은 알파벳이 중복해서 들어있지 않습니다.</li> |
| 106 | +</ul></li> |
| 107 | +<li>course 배열의 크기는 1 이상 10 이하입니다. |
| 108 | + |
| 109 | +<ul> |
| 110 | +<li>course 배열의 각 원소는 2 이상 10 이하인 자연수가 <code>오름차순</code>으로 정렬되어 있습니다.</li> |
| 111 | +<li>course 배열에는 같은 값이 중복해서 들어있지 않습니다.</li> |
| 112 | +</ul></li> |
| 113 | +<li>정답은 각 코스요리 메뉴의 구성을 문자열 형식으로 배열에 담아 사전 순으로 <code>오름차순</code> 정렬해서 return 해주세요. |
| 114 | + |
| 115 | +<ul> |
| 116 | +<li>배열의 각 원소에 저장된 문자열 또한 알파벳 <code>오름차순</code>으로 정렬되어야 합니다.</li> |
| 117 | +<li>만약 가장 많이 함께 주문된 메뉴 구성이 여러 개라면, 모두 배열에 담아 return 하면 됩니다.</li> |
| 118 | +<li>orders와 course 매개변수는 return 하는 배열의 길이가 1 이상이 되도록 주어집니다.</li> |
| 119 | +</ul></li> |
| 120 | +</ul> |
| 121 | + |
| 122 | +<hr> |
| 123 | + |
| 124 | +<h5><strong>[입출력 예]</strong></h5> |
| 125 | +<table class="table"> |
| 126 | + <thead><tr> |
| 127 | +<th>orders</th> |
| 128 | +<th>course</th> |
| 129 | +<th>result</th> |
| 130 | +</tr> |
| 131 | +</thead> |
| 132 | + <tbody><tr> |
| 133 | +<td><code>["ABCFG", "AC", "CDE", "ACDE", "BCFG", "ACDEH"]</code></td> |
| 134 | +<td>[2,3,4]</td> |
| 135 | +<td><code>["AC", "ACDE", "BCFG", "CDE"]</code></td> |
| 136 | +</tr> |
| 137 | +<tr> |
| 138 | +<td><code>["ABCDE", "AB", "CD", "ADE", "XYZ", "XYZ", "ACD"]</code></td> |
| 139 | +<td>[2,3,5]</td> |
| 140 | +<td><code>["ACD", "AD", "ADE", "CD", "XYZ"]</code></td> |
| 141 | +</tr> |
| 142 | +<tr> |
| 143 | +<td><code>["XYZ", "XWY", "WXA"]</code></td> |
| 144 | +<td>[2,3,4]</td> |
| 145 | +<td><code>["WX", "XY"]</code></td> |
| 146 | +</tr> |
| 147 | +</tbody> |
| 148 | + </table> |
| 149 | +<h5><strong>입출력 예에 대한 설명</strong></h5> |
| 150 | + |
| 151 | +<hr> |
| 152 | + |
| 153 | +<p><strong>입출력 예 #1</strong><br> |
| 154 | +문제의 예시와 같습니다.</p> |
| 155 | + |
| 156 | +<p><strong>입출력 예 #2</strong><br> |
| 157 | +AD가 세 번, CD가 세 번, ACD가 두 번, ADE가 두 번, XYZ 가 두 번 주문됐습니다.<br> |
| 158 | +요리 5개를 주문한 손님이 1명 있지만, 최소 2명 이상의 손님에게서 주문된 구성만 코스요리 후보에 들어가므로, 요리 5개로 구성된 코스요리는 새로 추가하지 않습니다.</p> |
| 159 | + |
| 160 | +<p><strong>입출력 예 #3</strong><br> |
| 161 | +WX가 두 번, XY가 두 번 주문됐습니다.<br> |
| 162 | +3명의 손님 모두 단품메뉴를 3개씩 주문했지만, 최소 2명 이상의 손님에게서 주문된 구성만 코스요리 후보에 들어가므로, 요리 3개로 구성된 코스요리는 새로 추가하지 않습니다.<br> |
| 163 | +또, 단품메뉴를 4개 이상 주문한 손님은 없으므로, 요리 4개로 구성된 코스요리 또한 새로 추가하지 않습니다.</p> |
| 164 | + |
| 165 | + |
| 166 | +> 출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges |
0 commit comments