Skip to content

Commit 0668ef0

Browse files
committed
점심 식사시간
1 parent ff23a12 commit 0668ef0

File tree

3 files changed

+164
-0
lines changed

3 files changed

+164
-0
lines changed

swea/2383/2383.py

+72
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
import os
2+
import sys
3+
4+
sys.stdin = open(
5+
os.path.join("/", *__file__.split("/")[:-1], "sample_input.txt"), "r"
6+
)
7+
8+
# https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5-BEE6AK0DFAVl
9+
10+
11+
from collections import deque
12+
13+
14+
def takes(selected: int):
15+
dists_to_0, dists_to_1 = [], []
16+
for idx in range(len(people))[::-1]:
17+
uses0 = selected & 1
18+
if uses0:
19+
dists_to_0.append(dists[idx][0])
20+
else:
21+
dists_to_1.append(dists[idx][1])
22+
selected >>= 1
23+
24+
dists_to_0, dists_to_1 = sorted(dists_to_0), sorted(dists_to_1)
25+
26+
q0 = deque([], maxlen=3)
27+
for dist_to_0 in dists_to_0:
28+
if len(q0) == 3:
29+
q0.append(max(dist_to_0 + 1, q0[0]) + stairs[0][2])
30+
else:
31+
q0.append(dist_to_0 + 1 + stairs[0][2])
32+
33+
q1 = deque([], maxlen=3)
34+
for dist_to_1 in dists_to_1:
35+
if len(q1) == 3:
36+
q1.append(max(dist_to_1 + 1, q1[0]) + stairs[1][2])
37+
else:
38+
q1.append(dist_to_1 + 1 + stairs[1][2])
39+
40+
return max(max(q0, default=0), max(q1, default=0))
41+
42+
43+
def select(idx: int = 0, selected: int = 0):
44+
if idx == len(people):
45+
return takes(selected)
46+
return min(
47+
select(idx + 1, selected), select(idx + 1, selected | (1 << idx))
48+
)
49+
50+
51+
for t in range(1, int(input()) + 1):
52+
n = int(input())
53+
people = []
54+
stairs = []
55+
for r in range(n):
56+
for c, v in enumerate(list(map(int, input().split()))):
57+
if not v:
58+
continue
59+
if v == 1:
60+
people.append((r, c))
61+
else:
62+
stairs.append((r, c, v))
63+
64+
dists = [
65+
(
66+
abs(r - stairs[0][0]) + abs(c - stairs[0][1]),
67+
abs(r - stairs[1][0]) + abs(c - stairs[1][1]),
68+
)
69+
for r, c in people
70+
]
71+
72+
print(f"#{t} {select()}")

swea/2383/sample_input.txt

+82
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
10
2+
5
3+
0 1 1 0 0
4+
0 0 1 0 3
5+
0 1 0 1 0
6+
0 0 0 0 0
7+
1 0 5 0 0
8+
5
9+
0 0 1 1 0
10+
0 0 1 0 2
11+
0 0 0 1 0
12+
0 1 0 0 0
13+
1 0 5 0 0
14+
6
15+
0 0 0 1 0 0
16+
0 0 0 0 0 0
17+
0 0 0 0 0 0
18+
0 1 0 0 0 0
19+
2 0 1 0 0 0
20+
0 0 2 0 0 0
21+
6
22+
0 0 0 0 0 0
23+
0 0 0 0 0 0
24+
0 0 0 0 0 0
25+
0 0 0 0 0 0
26+
1 0 0 0 0 0
27+
0 0 0 2 0 4
28+
7
29+
0 0 0 0 0 0 0
30+
0 0 0 0 0 0 4
31+
0 0 0 0 1 0 0
32+
1 0 0 1 0 0 0
33+
0 0 0 0 0 0 0
34+
0 0 0 0 0 0 0
35+
0 2 0 0 0 0 0
36+
7
37+
0 0 0 0 0 0 0
38+
7 0 0 0 0 0 0
39+
0 0 0 0 0 0 0
40+
0 0 0 0 0 0 0
41+
0 0 0 0 0 0 0
42+
2 0 0 0 0 1 0
43+
0 0 0 0 0 0 0
44+
8
45+
0 0 0 0 0 0 0 0
46+
0 0 0 0 0 0 0 2
47+
0 0 0 0 0 0 0 0
48+
2 0 0 0 0 0 0 0
49+
0 0 0 0 0 1 0 0
50+
0 0 0 0 0 0 0 0
51+
0 0 0 0 0 0 1 0
52+
0 0 0 0 1 0 0 0
53+
8
54+
3 0 0 0 0 0 5 0
55+
0 0 0 0 0 0 0 0
56+
1 0 0 0 0 0 0 0
57+
0 0 0 0 0 0 0 0
58+
1 0 1 1 0 0 0 0
59+
0 0 0 0 0 0 1 0
60+
0 0 0 0 0 0 0 0
61+
0 0 0 0 0 0 0 0
62+
9
63+
0 0 0 1 0 0 0 0 0
64+
0 1 0 0 0 0 0 0 0
65+
0 0 0 0 0 0 0 0 8
66+
7 0 0 0 0 1 0 0 0
67+
0 0 0 0 0 1 1 0 0
68+
0 0 0 0 0 0 0 0 0
69+
1 0 0 0 0 1 0 0 0
70+
0 0 0 0 0 0 0 0 0
71+
0 0 0 0 0 0 0 0 0
72+
10
73+
0 0 0 0 0 0 0 0 0 0
74+
0 0 0 0 1 0 0 0 0 0
75+
0 0 1 0 0 0 0 0 0 0
76+
0 0 0 0 0 0 0 0 0 0
77+
0 0 0 0 0 0 0 0 0 0
78+
3 0 1 0 1 0 0 0 0 2
79+
1 1 0 0 1 0 1 0 0 0
80+
0 0 0 0 0 0 0 0 0 0
81+
0 0 0 0 0 0 0 0 0 0
82+
0 0 0 0 0 0 0 0 0 0

swea/2383/sample_output.txt

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#1 9
2+
#2 8
3+
#3 9
4+
#4 7
5+
#5 8
6+
#6 8
7+
#7 11
8+
#8 11
9+
#9 18
10+
#10 12

0 commit comments

Comments
 (0)