๐ข ์์ดํ ์ค๊ธฐ
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
"""
์์ดํ
์ค๊ธฐ
๐ ๋ฌธ์
๋ค์๊ณผ ๊ฐ์ ๋ค๊ฐํ ๋ชจ์ ์งํ์์ ์บ๋ฆญํฐ๊ฐ ์์ดํ
์ ์ค๊ธฐ ์ํด ์ด๋ํ๋ ค ํฉ๋๋ค.
์งํ์ ๊ฐ ๋ณ์ด x์ถ, y์ถ๊ณผ ํํํ ์ง์ฌ๊ฐํ์ด ๊ฒน์ณ์ง ํํ๋ก ํํํ๋ฉฐ, ์บ๋ฆญํฐ๋ ์ด ๋ค๊ฐํ์ ๋๋ (๊ตต์ ์ )๋ฅผ ๋ฐ๋ผ์ ์ด๋ํฉ๋๋ค.
๋ง์ฝ ์ง์ฌ๊ฐํ์ ๊ฒน์น ํ ๋ค์๊ณผ ๊ฐ์ด ์ค์์ ๋น ๊ณต๊ฐ์ด ์๊ธฐ๋ ๊ฒฝ์ฐ, ๋ค๊ฐํ์ ๊ฐ์ฅ ๋ฐ๊นฅ์ชฝ ํ
๋๋ฆฌ๊ฐ ์บ๋ฆญํฐ์ ์ด๋ ๊ฒฝ๋ก๊ฐ ๋ฉ๋๋ค.
๋จ, ์๋ก ๋ค๋ฅธ ๋ ์ง์ฌ๊ฐํ์ x์ถ ์ขํ ๋๋ y์ถ ์ขํ๊ฐ ๊ฐ์ ๊ฒฝ์ฐ๋ ์์ต๋๋ค.
์ฆ, ์ ๊ทธ๋ฆผ์ฒ๋ผ ์๋ก ๋ค๋ฅธ ๋ ์ง์ฌ๊ฐํ์ด ๊ผญ์ง์ ์์ ๋ง๋๊ฑฐ๋, ๋ณ์ด ๊ฒน์น๋ ๊ฒฝ์ฐ ๋ฑ์ ์์ต๋๋ค.
๋ค์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์งํ์ด 2๊ฐ ์ด์์ผ๋ก ๋ถ๋ฆฌ๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค.
ํ ์ง์ฌ๊ฐํ์ด ๋ค๋ฅธ ์ง์ฌ๊ฐํ ์์ ์์ ํ ํฌํจ๋๋ ๊ฒฝ์ฐ ๋ํ ์์ต๋๋ค.
์งํ์ ๋ํ๋ด๋ ์ง์ฌ๊ฐํ์ด ๋ด๊ธด 2์ฐจ์ ๋ฐฐ์ด rectangle, ์ด๊ธฐ ์บ๋ฆญํฐ์ ์์น characterX, characterY,
์์ดํ
์ ์์น itemX, itemY๊ฐ solution ํจ์์ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋,
์บ๋ฆญํฐ๊ฐ ์์ดํ
์ ์ค๊ธฐ ์ํด ์ด๋ํด์ผ ํ๋ ๊ฐ์ฅ ์งง์ ๊ฑฐ๋ฆฌ๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
๐งก ์ ํ ์ฌํญ
rectangle์ ์ธ๋ก(ํ) ๊ธธ์ด๋ 1 ์ด์ 4 ์ดํ์
๋๋ค.
rectangle์ ์์๋ ๊ฐ ์ง์ฌ๊ฐํ์ [์ข์ธก ํ๋จ x, ์ข์ธก ํ๋จ y, ์ฐ์ธก ์๋จ x, ์ฐ์ธก ์๋จ y] ์ขํ ํํ์
๋๋ค.
์ง์ฌ๊ฐํ์ ๋ํ๋ด๋ ๋ชจ๋ ์ขํ๊ฐ์ 1 ์ด์ 50 ์ดํ์ธ ์์ฐ์์
๋๋ค.
์๋ก ๋ค๋ฅธ ๋ ์ง์ฌ๊ฐํ์ x์ถ ์ขํ, ํน์ y์ถ ์ขํ๊ฐ ๊ฐ์ ๊ฒฝ์ฐ๋ ์์ต๋๋ค.
๋ฌธ์ ์ ์ฃผ์ด์ง ์กฐ๊ฑด์ ๋ง๋ ์ง์ฌ๊ฐํ๋ง ์
๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋๋ค.
charcterX, charcterY๋ 1 ์ด์ 50 ์ดํ์ธ ์์ฐ์์
๋๋ค.
์งํ์ ๋ํ๋ด๋ ๋ค๊ฐํ ํ
๋๋ฆฌ ์์ ํ ์ ์ด ์ฃผ์ด์ง๋๋ค.
itemX, itemY๋ 1 ์ด์ 50 ์ดํ์ธ ์์ฐ์์
๋๋ค.
์งํ์ ๋ํ๋ด๋ ๋ค๊ฐํ ํ
๋๋ฆฌ ์์ ํ ์ ์ด ์ฃผ์ด์ง๋๋ค.
์บ๋ฆญํฐ์ ์์ดํ
์ ์ฒ์ ์์น๊ฐ ๊ฐ์ ๊ฒฝ์ฐ๋ ์์ต๋๋ค.
์ ์ฒด ๋ฐฐ์ ์ 50%๋ ์ง์ฌ๊ฐํ์ด 1๊ฐ์ธ ๊ฒฝ์ฐ์
๋๋ค.
์ ์ฒด ๋ฐฐ์ ์ 25%๋ ์ง์ฌ๊ฐํ์ด 2๊ฐ์ธ ๊ฒฝ์ฐ์
๋๋ค.
์ ์ฒด ๋ฐฐ์ ์ 25%๋ ์ง์ฌ๊ฐํ์ด 3๊ฐ ๋๋ 4๊ฐ์ธ ๊ฒฝ์ฐ์
๋๋ค.
๐ ์
์ถ๋ ฅ
rectangle characterX characterY itemX itemY result
[[1,1,7,4],[3,2,5,5],[4,3,6,9],[2,6,8,8]] 1 3 7 8 17
[[1,1,8,4],[2,2,4,9],[3,6,9,8],[6,3,7,7]] 9 7 6 1 11
[[1,1,5,7]] 1 1 4 7 9
[[2,1,7,5],[6,4,10,10]] 3 1 7 10 15
[[2,2,5,5],[1,3,6,4],[3,1,4,6]] 1 4 6 3 10
"""
from collections import deque
# ์งํ์ ๋ํ๋ด๋ ์ง์ฌ๊ฐํ์ด ๋ด๊ธด 2์ฐจ์ ๋ฐฐ์ด rectangle, ์ด๊ธฐ ์บ๋ฆญํฐ์ ์์น characterX, characterY, ์์ดํ
์ ์์น itemX, itemY
def solution(rectangle, characterX, characterY, itemX, itemY):
answer = 0
# ๋ชจ๋ ์ขํ๊ฐ์ 1 ์ด์ 50 ์ดํ์ธ ์์ฐ์
graph = [[-1] * 102 for i in range(102)]
for r in rectangle:
x1, y1, x2, y2 = r[0] * 2, r[1] * 2, r[2] * 2, r[3] * 2
for i in range(x1, x2+1):
for j in range(y1, y2+1):
# ๋ด๋ถ์ผ ๋
if x1 < i < x2 and y1 < j < y2:
graph[i][j] = 0
# ํ
๋๋ฆฌ์ผ ๋
elif graph[i][j] != 0:
graph[i][j] = 1
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
q = deque()
# ์ฒซ ์์
q.append([characterX * 2, characterY * 2])
visited = [[0] * 102 for _ in range(102)]
visited[characterX * 2][characterY * 2] = 1
# ์ต๋จ๊ฑฐ๋ฆฌ ์ฐพ๊ธฐ
while q:
x, y = q.popleft()
# ์บ๋ฆญํฐ์ ์์ดํ
์์น๊ฐ ๊ฐ์ ๋
if x == itemX * 2 and y == itemY * 2:
answer = (visited[x][y] - 1) // 2
break
for k in range(4):
nx = x + dx[k]
ny = y + dy[k]
# ๋ฐฉ๋ฌธ๋ ์ํ๊ณ , ํ
๋๋ฆฌ์ธ ๊ฒฝ์ฐ
if graph[nx][ny] == 1 and visited[nx][ny] == 0:
q.append([nx, ny])
# ์ต๋จ๊ฑฐ๋ฆฌ ์ฆ๊ฐ
visited[nx][ny] = visited[x][y] + 1
return answer
์ ํ์ฑ
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
์ ํ์ฑ ํ ์คํธ ํ ์คํธ 1 ใ ํต๊ณผ (0.23ms, 10.3MB) ํ ์คํธ 2 ใ ํต๊ณผ (0.22ms, 10.4MB) ํ ์คํธ 3 ใ ํต๊ณผ (0.24ms, 10.3MB) ํ ์คํธ 4 ใ ํต๊ณผ (0.23ms, 10.3MB) ํ ์คํธ 5 ใ ํต๊ณผ (0.22ms, 10.4MB) ํ ์คํธ 6 ใ ํต๊ณผ (0.22ms, 10.4MB) ํ ์คํธ 7 ใ ํต๊ณผ (0.24ms, 10.3MB) ํ ์คํธ 8 ใ ํต๊ณผ (0.24ms, 10.4MB) ํ ์คํธ 9 ใ ํต๊ณผ (2.56ms, 10.4MB) ํ ์คํธ 10 ใ ํต๊ณผ (1.58ms, 10.3MB) ํ ์คํธ 11 ใ ํต๊ณผ (1.11ms, 10.4MB) ํ ์คํธ 12 ใ ํต๊ณผ (1.41ms, 10.3MB) ํ ์คํธ 13 ใ ํต๊ณผ (1.22ms, 10.4MB) ํ ์คํธ 14 ใ ํต๊ณผ (0.73ms, 10.4MB) ํ ์คํธ 15 ใ ํต๊ณผ (0.34ms, 10.3MB) ํ ์คํธ 16 ใ ํต๊ณผ (1.21ms, 10.1MB) ํ ์คํธ 17 ใ ํต๊ณผ (0.91ms, 10.3MB) ํ ์คํธ 18 ใ ํต๊ณผ (0.57ms, 10.3MB) ํ ์คํธ 19 ใ ํต๊ณผ (1.19ms, 10.2MB) ํ ์คํธ 20 ใ ํต๊ณผ (1.43ms, 10.4MB) ํ ์คํธ 21 ใ ํต๊ณผ (0.63ms, 10.4MB) ํ ์คํธ 22 ใ ํต๊ณผ (0.39ms, 10.2MB) ํ ์คํธ 23 ใ ํต๊ณผ (0.89ms, 10.4MB) ํ ์คํธ 24 ใ ํต๊ณผ (0.70ms, 10.4MB) ํ ์คํธ 25 ใ ํต๊ณผ (0.26ms, 10.4MB) ํ ์คํธ 26 ใ ํต๊ณผ (0.43ms, 10.4MB) ํ ์คํธ 27 ใ ํต๊ณผ (0.31ms, 10.3MB) ํ ์คํธ 28 ใ ํต๊ณผ (0.31ms, 10.4MB) ํ ์คํธ 29 ใ ํต๊ณผ (0.32ms, 10.5MB) ํ ์คํธ 30 ใ ํต๊ณผ (0.47ms, 10.3MB) ์ฑ์ ๊ฒฐ๊ณผ ์ ํ์ฑ: 100.0 ํฉ๊ณ: 100.0 / 100.0
3. ํด์ค
- ํ ๋๋ฆฌ๊ฐ 1 1 ์ด๋ ๊ฒ ๊ฒน์น ๊ฒฝ์ฐ ์ค๊ฐ์ ํ์ด ์์ด์ ์ต๋จ ๊ฒฝ๋ก์ ์ง์ฅ์ ์ค
- 2๋ฐฐ๋ก ๊ธธ์ด๋ฅผ ๋ํ์ ์ต๋จ ๊ฒฝ๋ก๋ฅผ ๊ฐ ์ ์๋๋ก ํ์ ์ค๋ค
- ๊ทธ ์ธ์๋ ๋๊ฐ์ด ์ต๋จ ๊ฑฐ๋ฆฌ๋ฅผ ๋ง๋ค์ด์ ์์ดํ ๊ณผ ์์น๊ฐ ๊ฐ๋ค๋ฉด ๊ฒฝ๋ก์์ 2๋ฅผ ๋๋ ๊ฐ์ด ๋ต์ด ๋๋ค
This post is licensed under CC BY 4.0 by the author.