1+ def solution (places ):
2+ def manhattan (T1 , T2 ):
3+ return abs (T1 [0 ]- T2 [0 ]) + abs (T1 [1 ]- T2 [1 ])
4+
5+ def find_P (P ):
6+ if p .find ('P' )!= - 1 :
7+ for i , s in enumerate (p ):
8+ if s == 'P' : P .append ([row ,i ])
9+
10+ answer = []
11+ for place in places :
12+ P = [] # 사람이 앉아있는 좌표
13+ flag = 0
14+
15+ for row , p in enumerate (place ):
16+ find_P (P )
17+
18+ for i , p1 in enumerate (P ):
19+ for p2 in P [i + 1 :]:
20+ dist = manhattan (p1 ,p2 ) # 두 사람의 맨해튼 거리
21+ if dist < 2 : # 옆에 앉아있을 경우
22+ answer .append (0 )
23+ flag = 1
24+ break
25+ elif dist == 2 :
26+ if (p1 [0 ]== p2 [0 ])or (p1 [1 ]== p2 [1 ]): # 일직선으로 앉아있는 경우
27+ x , y = [(p1 [0 ]+ p2 [0 ])// 2 , (p1 [1 ]+ p2 [1 ])// 2 ]
28+ if place [x ][y ] != 'X' : # 가운데 좌석이 파티션이 아닐 경우
29+ answer .append (0 )
30+ flag = 1
31+ break
32+ else : # 대각선으로 앉아있는 경우
33+ if place [p1 [0 ]][p2 [1 ]] == 'O' or place [p2 [0 ]][p1 [1 ]] == 'O' : # 사이에 빈 테이블이 있을 경우
34+ answer .append (0 )
35+ flag = 1
36+ break
37+ if flag : break
38+ if not flag :
39+ answer .append (1 )
40+ return answer
41+
42+ '''
43+ 정확성 테스트
44+ 테스트 1 〉 통과 (0.08ms, 10.3MB)
45+ 테스트 2 〉 통과 (0.03ms, 10.3MB)
46+ 테스트 3 〉 통과 (0.03ms, 10.3MB)
47+ 테스트 4 〉 통과 (0.03ms, 10.3MB)
48+ 테스트 5 〉 통과 (0.03ms, 10.3MB)
49+ 테스트 6 〉 통과 (0.03ms, 10.3MB)
50+ 테스트 7 〉 통과 (0.03ms, 10.2MB)
51+ 테스트 8 〉 통과 (0.05ms, 10.4MB)
52+ 테스트 9 〉 통과 (0.03ms, 10.3MB)
53+ 테스트 10 〉 통과 (0.03ms, 10.4MB)
54+ 테스트 11 〉 통과 (0.03ms, 10.4MB)
55+ 테스트 12 〉 통과 (0.03ms, 10.3MB)
56+ 테스트 13 〉 통과 (0.03ms, 10.4MB)
57+ 테스트 14 〉 통과 (0.02ms, 10.3MB)
58+ 테스트 15 〉 통과 (0.02ms, 10.3MB)
59+ 테스트 16 〉 통과 (0.03ms, 10.3MB)
60+ 테스트 17 〉 통과 (0.03ms, 10.3MB)
61+ 테스트 18 〉 통과 (0.03ms, 10.3MB)
62+ 테스트 19 〉 통과 (0.03ms, 10.3MB)
63+ 테스트 20 〉 통과 (0.04ms, 10.3MB)
64+ 테스트 21 〉 통과 (0.04ms, 10.3MB)
65+ 테스트 22 〉 통과 (0.03ms, 10.3MB)
66+ 테스트 23 〉 통과 (0.01ms, 10.3MB)
67+ 테스트 24 〉 통과 (0.04ms, 10.3MB)
68+ 테스트 25 〉 통과 (0.02ms, 10.3MB)
69+ 테스트 26 〉 통과 (0.02ms, 10.3MB)
70+ 테스트 27 〉 통과 (0.03ms, 10.3MB)
71+ 테스트 28 〉 통과 (0.03ms, 10.3MB)
72+ 테스트 29 〉 통과 (0.02ms, 10.3MB)
73+ 테스트 30 〉 통과 (0.03ms, 10.3MB)
74+ '''
0 commit comments