Skip to content

Commit fb8deaf

Browse files
committed
[level 3] Title: 주사위 고르기, Time: 692.31 ms, Memory: 16.5 MB -BaekjoonHub
1 parent 3311f65 commit fb8deaf

2 files changed

Lines changed: 476 additions & 0 deletions

File tree

Lines changed: 315 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,315 @@
1+
# [level 3] 주사위 고르기 - 258709
2+
3+
[문제 링크](https://school.programmers.co.kr/learn/courses/30/lessons/258709?language=swift)
4+
5+
### 성능 요약
6+
7+
메모리: 16.5 MB, 시간: 692.31 ms
8+
9+
### 구분
10+
11+
코딩테스트 연습 > 2024 KAKAO WINTER INTERNSHIP
12+
13+
### 채점결과
14+
15+
정확성: 100.0<br/>합계: 100.0 / 100.0
16+
17+
### 제출 일자
18+
19+
2025년 10월 12일 17:32:30
20+
21+
### 문제 설명
22+
23+
<p>A와 B가 <code>n</code>개의 주사위를 가지고 승부를 합니다. 주사위의 6개 면에 각각 하나의 수가 쓰여 있으며, 주사위를 던졌을 때 각 면이 나올 확률은 동일합니다. 각 주사위는 1 ~ <code>n</code>의 번호를 가지고 있으며, 주사위에 쓰인 수의 구성은 모두 다릅니다. </p>
24+
25+
<p>A가 먼저 <code>n / 2</code>개의 주사위를 가져가면 B가 남은 <code>n / 2</code>개의 주사위를 가져갑니다. 각각 가져간 주사위를 모두 굴린 뒤, 나온 수들을 모두 합해 점수를 계산합니다. 점수가 더 큰 쪽이 승리하며, <strong>점수가 같다면 무승부</strong>입니다.</p>
26+
27+
<p>A는 자신이 <strong>승리할 확률</strong>이 가장 높아지도록 주사위를 가져가려 합니다.</p>
28+
29+
<p>다음은 <code>n</code> = 4인 예시입니다.</p>
30+
<table class="table">
31+
<thead><tr>
32+
<th>주사위</th>
33+
<th>구성</th>
34+
</tr>
35+
</thead>
36+
<tbody><tr>
37+
<td>#1</td>
38+
<td>[1, 2, 3, 4, 5, 6]</td>
39+
</tr>
40+
<tr>
41+
<td>#2</td>
42+
<td>[3, 3, 3, 3, 4, 4]</td>
43+
</tr>
44+
<tr>
45+
<td>#3</td>
46+
<td>[1, 3, 3, 4, 4, 4]</td>
47+
</tr>
48+
<tr>
49+
<td>#4</td>
50+
<td>[1, 1, 4, 4, 5, 5]</td>
51+
</tr>
52+
</tbody>
53+
</table>
54+
<ul>
55+
<li>예를 들어 A가 주사위 #1, #2를 가져간 뒤 6, 3을 굴리고, B가 주사위 #3, #4를 가져간 뒤 4, 1을 굴린다면 A의 승리입니다. (6 + 3 &gt; 4 + 1)</li>
56+
</ul>
57+
58+
<p>A가 가져가는 주사위 조합에 따라, 주사위를 굴린 1296가지 경우의 승패 결과를 세어보면 아래 표와 같습니다.</p>
59+
<table class="table">
60+
<thead><tr>
61+
<th>A의 주사위</th>
62+
<th>승</th>
63+
<th>무</th>
64+
<th>패</th>
65+
</tr>
66+
</thead>
67+
<tbody><tr>
68+
<td>#1, #2</td>
69+
<td>596</td>
70+
<td>196</td>
71+
<td>504</td>
72+
</tr>
73+
<tr>
74+
<td>#1, #3</td>
75+
<td>560</td>
76+
<td>176</td>
77+
<td>560</td>
78+
</tr>
79+
<tr>
80+
<td>#1, #4</td>
81+
<td>616</td>
82+
<td>184</td>
83+
<td>496</td>
84+
</tr>
85+
<tr>
86+
<td>#2, #3</td>
87+
<td>496</td>
88+
<td>184</td>
89+
<td>616</td>
90+
</tr>
91+
<tr>
92+
<td>#2, #4</td>
93+
<td>560</td>
94+
<td>176</td>
95+
<td>560</td>
96+
</tr>
97+
<tr>
98+
<td>#3, #4</td>
99+
<td>504</td>
100+
<td>196</td>
101+
<td>596</td>
102+
</tr>
103+
</tbody>
104+
</table>
105+
<p>A가 승리할 확률이 가장 높아지기 위해선 주사위 #1, #4를 가져가야 합니다.</p>
106+
107+
<p>주사위에 쓰인 수의 구성을 담은 2차원 정수 배열 <code>dice</code>가 매개변수로 주어집니다. 이때, 자신이 승리할 확률이 가장 높아지기 위해 A가 골라야 하는 주사위 번호를 <strong>오름차순으로</strong> 1차원 정수 배열에 담아 return 하도록 solution 함수를 완성해 주세요. 승리할 확률이 가장 높은 주사위 조합이 유일한 경우만 주어집니다. </p>
108+
109+
<hr>
110+
111+
<h5>제한사항</h5>
112+
113+
<ul>
114+
<li>2 ≤ <code>dice</code>의 길이 = <code>n</code> ≤ 10
115+
116+
<ul>
117+
<li><code>n</code>은 2의 배수입니다.</li>
118+
<li><code>dice[i]</code>는 <code>i+1</code>번 주사위에 쓰인 6개의 수를 담고 있습니다.</li>
119+
<li><code>dice[i]</code>의 길이 = 6</li>
120+
<li>1 ≤ <code>dice[i]</code>의 원소 ≤ 100</li>
121+
</ul></li>
122+
</ul>
123+
124+
<hr>
125+
126+
<h5>입출력 예</h5>
127+
<table class="table">
128+
<thead><tr>
129+
<th>dice</th>
130+
<th>result</th>
131+
</tr>
132+
</thead>
133+
<tbody><tr>
134+
<td>[[1, 2, 3, 4, 5, 6], [3, 3, 3, 3, 4, 4], [1, 3, 3, 4, 4, 4], [1, 1, 4, 4, 5, 5]]</td>
135+
<td>[1, 4]</td>
136+
</tr>
137+
<tr>
138+
<td>[[1, 2, 3, 4, 5, 6], [2, 2, 4, 4, 6, 6]]</td>
139+
<td>[2]</td>
140+
</tr>
141+
<tr>
142+
<td>[[40, 41, 42, 43, 44, 45], [43, 43, 42, 42, 41, 41], [1, 1, 80, 80, 80, 80], [70, 70, 1, 1, 70, 70]]</td>
143+
<td>[1, 3]</td>
144+
</tr>
145+
</tbody>
146+
</table>
147+
<hr>
148+
149+
<h5>입출력 예 설명</h5>
150+
151+
<p><strong>입출력 예 #1</strong></p>
152+
153+
<p>문제 예시와 같습니다.</p>
154+
155+
<p><strong>입출력 예 #2</strong></p>
156+
<table class="table">
157+
<thead><tr>
158+
<th>주사위</th>
159+
<th>구성</th>
160+
</tr>
161+
</thead>
162+
<tbody><tr>
163+
<td>#1</td>
164+
<td>[1, 2, 3, 4, 5, 6]</td>
165+
</tr>
166+
<tr>
167+
<td>#2</td>
168+
<td>[2, 2, 4, 4, 6, 6]</td>
169+
</tr>
170+
</tbody>
171+
</table>
172+
<p>A가 주사위 #2를 가져갔을 때 승리할 확률이 가장 높습니다. A가 #2, B가 #1 주사위를 굴린 결과에 따른 승패는 아래 표와 같습니다.</p>
173+
<table class="table">
174+
<thead><tr>
175+
<th>주사위 결과</th>
176+
<th>1 (B)</th>
177+
<th>2 (B)</th>
178+
<th>3 (B)</th>
179+
<th>4 (B)</th>
180+
<th>5 (B)</th>
181+
<th>6 (B)</th>
182+
</tr>
183+
</thead>
184+
<tbody><tr>
185+
<td><strong>2 (A)</strong></td>
186+
<td>승</td>
187+
<td>무</td>
188+
<td>패</td>
189+
<td>패</td>
190+
<td>패</td>
191+
<td>패</td>
192+
</tr>
193+
<tr>
194+
<td><strong>2 (A)</strong></td>
195+
<td>승</td>
196+
<td>무</td>
197+
<td>패</td>
198+
<td>패</td>
199+
<td>패</td>
200+
<td>패</td>
201+
</tr>
202+
<tr>
203+
<td><strong>4 (A)</strong></td>
204+
<td>승</td>
205+
<td>승</td>
206+
<td>승</td>
207+
<td>무</td>
208+
<td>패</td>
209+
<td>패</td>
210+
</tr>
211+
<tr>
212+
<td><strong>4 (A)</strong></td>
213+
<td>승</td>
214+
<td>승</td>
215+
<td>승</td>
216+
<td>무</td>
217+
<td>패</td>
218+
<td>패</td>
219+
</tr>
220+
<tr>
221+
<td><strong>6 (A)</strong></td>
222+
<td>승</td>
223+
<td>승</td>
224+
<td>승</td>
225+
<td>승</td>
226+
<td>승</td>
227+
<td>무</td>
228+
</tr>
229+
<tr>
230+
<td><strong>6 (A)</strong></td>
231+
<td>승</td>
232+
<td>승</td>
233+
<td>승</td>
234+
<td>승</td>
235+
<td>승</td>
236+
<td>무</td>
237+
</tr>
238+
</tbody>
239+
</table>
240+
<p><strong>입출력 예 #3</strong></p>
241+
<table class="table">
242+
<thead><tr>
243+
<th>주사위</th>
244+
<th>구성</th>
245+
</tr>
246+
</thead>
247+
<tbody><tr>
248+
<td>#1</td>
249+
<td>[40, 41, 42, 43, 44, 45]</td>
250+
</tr>
251+
<tr>
252+
<td>#2</td>
253+
<td>[43, 43, 42, 42, 41, 41]</td>
254+
</tr>
255+
<tr>
256+
<td>#3</td>
257+
<td>[1, 1, 80, 80, 80, 80]</td>
258+
</tr>
259+
<tr>
260+
<td>#4</td>
261+
<td>[70, 70, 1, 1, 70, 70]</td>
262+
</tr>
263+
</tbody>
264+
</table>
265+
<p>A가 가져가는 주사위 조합에 따라, 주사위를 굴린 1296가지 경우의 승패 결과를 세어보면 아래 표와 같습니다.</p>
266+
<table class="table">
267+
<thead><tr>
268+
<th>A의 주사위</th>
269+
<th>승</th>
270+
<th>무</th>
271+
<th>패</th>
272+
</tr>
273+
</thead>
274+
<tbody><tr>
275+
<td>#1, #2</td>
276+
<td>704</td>
277+
<td>16</td>
278+
<td>576</td>
279+
</tr>
280+
<tr>
281+
<td>#1, #3</td>
282+
<td>936</td>
283+
<td>24</td>
284+
<td>336</td>
285+
</tr>
286+
<tr>
287+
<td>#1, #4</td>
288+
<td>360</td>
289+
<td>24</td>
290+
<td>912</td>
291+
</tr>
292+
<tr>
293+
<td>#2, #3</td>
294+
<td>912</td>
295+
<td>24</td>
296+
<td>360</td>
297+
</tr>
298+
<tr>
299+
<td>#2, #4</td>
300+
<td>336</td>
301+
<td>24</td>
302+
<td>936</td>
303+
</tr>
304+
<tr>
305+
<td>#3, #4</td>
306+
<td>576</td>
307+
<td>16</td>
308+
<td>704</td>
309+
</tr>
310+
</tbody>
311+
</table>
312+
<p>따라서 A가 주사위 #1, #3을 가져갔을 때 승리할 확률이 가장 높습니다.</p>
313+
314+
315+
> 출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges

0 commit comments

Comments
 (0)