๐น ๊ฑฐ๋ฆฌ๋๊ธฐ ํ์ธํ๊ธฐ
1. ๋ฌธ์ ๋งํฌ
2. ์ฝ๋
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
def solution(places):
answer = []
for place in places:
candidate = find_candidate(place)
answer.append(check_observe_distance(place, candidate))
return answer
def find_candidate(place):
candidate = []
for i in range(5):
for j in range(5):
if place[i][j] == 'P':
candidate.append((i, j))
return candidate
def check_observe_distance(place, candidate):
for i in range(len(candidate)-1):
now_x, now_y = candidate[i]
for j in range(i+1, len(candidate)):
if i == j:
continue
next_x, next_y = candidate[j]
manhattan = abs(now_x - next_x) + abs(now_y - next_y)
diff_x, diff_y = abs(now_x - next_x), abs(now_y - next_y)
# ๋งจํํผ ๊ฑฐ๋ฆฌ๊ฐ 1์ดํ์ธ ๊ฒฝ์ฐ
if manhattan <= 1:
return 0
# ๋งจํํผ ๊ฑฐ๋ฆฌ๊ฐ 2์ธ ๊ฒฝ์ฐ
if manhattan == 2:
# ๊ฐ๋ก ๊ธธ์ด 2์ธ ๊ฒฝ์ฐ ์ค ํํฐ์
์๋ ๊ฒฝ์ฐ
if diff_x == 2 and place[min(now_x, next_x)+1][now_y] != 'X':
return 0
# ์ธ๋ก ๊ธธ์ด 2์ธ ๊ฒฝ์ฐ ์ค ํํฐ์
์๋ ๊ฒฝ์ฐ
elif diff_y == 2 and place[now_x][min(now_y, next_y)+1] != 'X':
return 0
# ๋๊ฐ์ ์ธ ๊ฒฝ์ฐ ์ค ํํฐ์
์๋ ๊ฒฝ์ฐ
elif place[now_x][next_y] == 'O' or place[next_x][now_y] == 'O':
return 0
return 1
- ์คํ ๊ฒฐ๊ณผ
ํ ์คํธ 1 ใ | ํต๊ณผ (0.16ms, 10.4MB) |
ํ ์คํธ 2 ใ | ํต๊ณผ (0.05ms, 10.3MB) |
ํ ์คํธ 3 ใ | ํต๊ณผ (0.04ms, 10.3MB) |
ํ ์คํธ 4 ใ | ํต๊ณผ (0.06ms, 10.2MB) |
ํ ์คํธ 5 ใ | ํต๊ณผ (0.04ms, 10.4MB) |
ํ ์คํธ 6 ใ | ํต๊ณผ (0.03ms, 10.2MB) |
ํ ์คํธ 7 ใ | ํต๊ณผ (0.03ms, 10.3MB) |
ํ ์คํธ 8 ใ | ํต๊ณผ (0.08ms, 10.4MB) |
ํ ์คํธ 9 ใ | ํต๊ณผ (0.04ms, 10.3MB) |
ํ ์คํธ 10 ใ | ํต๊ณผ (0.03ms, 10.2MB) |
ํ ์คํธ 11 ใ | ํต๊ณผ (0.04ms, 10.2MB) |
ํ ์คํธ 12 ใ | ํต๊ณผ (0.03ms, 10.4MB) |
ํ ์คํธ 13 ใ | ํต๊ณผ (0.04ms, 10.2MB) |
ํ ์คํธ 14 ใ | ํต๊ณผ (0.03ms, 10.4MB) |
ํ ์คํธ 15 ใ | ํต๊ณผ (0.03ms, 10.3MB) |
ํ ์คํธ 16 ใ | ํต๊ณผ (0.06ms, 10.2MB) |
ํ ์คํธ 17 ใ | ํต๊ณผ (0.05ms, 10.2MB) |
ํ ์คํธ 18 ใ | ํต๊ณผ (0.06ms, 10.3MB) |
ํ ์คํธ 19 ใ | ํต๊ณผ (0.07ms, 10.2MB) |
ํ ์คํธ 20 ใ | ํต๊ณผ (0.08ms, 10.1MB) |
ํ ์คํธ 21 ใ | ํต๊ณผ (0.07ms, 10.2MB) |
ํ ์คํธ 22 ใ | ํต๊ณผ (0.06ms, 10.4MB) |
ํ ์คํธ 23 ใ | ํต๊ณผ (0.02ms, 10.3MB) |
ํ ์คํธ 24 ใ | ํต๊ณผ (0.03ms, 10.3MB) |
ํ ์คํธ 25 ใ | ํต๊ณผ (0.03ms, 10.4MB) |
ํ ์คํธ 26 ใ | ํต๊ณผ (0.02ms, 10.1MB) |
ํ ์คํธ 27 ใ | ํต๊ณผ (0.03ms, 10.3MB) |
ํ ์คํธ 28 ใ | ํต๊ณผ (0.03ms, 10.2MB) |
ํ ์คํธ 29 ใ | ํต๊ณผ (0.05ms, 10.4MB) |
ํ ์คํธ 30 ใ | ํต๊ณผ (0.03ms, 10.4MB) |
ํ ์คํธ 31 ใ | ํต๊ณผ (0.05ms, 10.4MB) |
3. ํด์ค
๊ฐ์์ค ๋ณ ์์์๋ค์ ์์น ์ ๋ณด๋ฅผ ๋ด์ candidate๋ฅผ ์์ฑํ ํ, ๊ฐ์์ค ๋ณ ๊ฐ๋ฅํ ๊ฒฝ์ฐ๋ฅผ ํ์ ํ๋ค.
๋ถ๊ฐ๋ฅํ ๊ฒฝ์ฐ๋ ๋ค์๊ณผ ๊ฐ๋ค.
- ๋งจํํผ ๊ฑฐ๋ฆฌ = 1
- ๋งจํํผ ๊ฑฐ๋ฆฌ = 2
- ๊ฐ๋ก ๊ฑฐ๋ฆฌ ํน์ ์ธ๋ก ๊ฑฐ๋ฆฌ๊ฐ 2์ฐจ์ด ์ผ๋ ๊ฐ์ด๋ฐ ์์น์ ํํฐ์ ์ด ์๋ ๊ฒฝ์ฐ
- ๋๊ฐ์ ์ ์์์๋ค์ด ์์นํ ๋ ๋ฐ๋ ๋ฐฉํฅ ๋๊ฐ์ ์ค ํํฐ์ ์ด ํ๋๋ผ๋ ์๋ ๊ฒฝ์ฐ
candidate ์์น๋ฅผ ๋น๊ตํ์ฌ ์์ ๋ถ๊ฐ๋ฅํ ๊ฒฝ์ฐ์ผ ๋๋ 0์ ๋ฆฌํด, ๊ทธ ์ด์ธ๋ 1์ ๋ฆฌํดํ๋ check_observe_distance ํจ์๋ฅผ ์์ฑํ ํ answer์ ๊ฐ์ ๋ฃ์ด์ค๋ค.
This post is licensed under CC BY 4.0 by the author.