๐ข ๋ฌ์ด ์ฐจ์ค๋ฅธ๋ค, ๊ฐ์
1. ๋ฌธ์ ๋งํฌ
1194๋ฒ: ๋ฌ์ด ์ฐจ์ค๋ฅธ๋ค, ๊ฐ์
2. ์ฝ๋
Python3
38828KB
6168ms
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
93
94
95
96
97
98
"""
[1194] ๋ฌ์ด ์ฐจ์ค๋ฅธ๋ค, ๊ฐ์
๐ ๋ฌธ์
์ง๊ธ ๋ฏผ์์ด๊ฐ ๊ณํํ ์ฌํ์ ๋ฌ์ด ๋งจ ์ฒ์ ๋จ๊ธฐ ์์ํ ๋ ๋ถํฐ, ์ค๋นํ๋ ์ฌํ๊ธธ์ด๋ค.
ํ์ง๋ง, ๋งค๋ฒ ๋ฌ์ด ์ฐจ์ค๋ฅผ ๋๋ง๋ค ๋ฏผ์์ด๋ ์ด์ฉ ์ ์๋ ํ์ค์ ๋ฒฝ ์์์ ๋ค์ง์ ํฌ๊ธฐํ๊ณ ๋ง์๋ค.
๋ฏผ์์ด๋ ๋งค๋ฒ ์์ ์ ๋ค์ง์ ๋งํ๋ ค๊ณ ๋
ธ๋ ฅํ์ง๋ง, ๋ง์ ํ๋ฉด ์๋ฌด๋ ๋ชป ์์๋ค์ ๊ฒ๋ง ๊ฐ์์, ์ง๋ ๊ฒ๋จน๊ณ ๋ฒ์ด๋ฆฌ๊ฐ ๋์ด๋ฒ๋ ธ๋ค.
๊ฒฐ๊ตญ ๋ฏผ์์ด๋ ๋ชจ๋ ์ ๋ ์๋ฒฝ ๋ค์ ๋ฐ์ฏค ํ๋ก ์ผ์ด๋, ์ฐฝ ๋ฐ์ ๋ ์๋ ๋ฌ์ ๋ณด์๋ค.
ํ๋ฃจ๋ฐ์ ๋จ์ง ์์๋ค. ๋ฌ์ ๋ด์ผ์ด๋ฉด ๋ค ์ฐจ์ค๋ฅธ๋ค. ์ด๋ฒ์ด ๋ง์ง๋ง๊ธฐํ๋ค. ์ด๊ฑธ ๋์น๋ฉด ์์ ๋ชป๊ฐ๋ค.
์์์ด๋ ๋ฏผ์์ด๊ฐ ์ค๋๋ ์ฌํ๊ฒ์ฒ๋ผ ๊ทธ๋ฅ ์ ๋ค์ด๋ฒ๋ ค์ ๋ชป ๊ฐ์ง๋ ๋ชจ๋ฅธ๋ค๊ณ ์๊ฐํ๋ค.
ํ์ง๋ง ๊ทธ๋ฌ๊ธฐ์ ๋ฏผ์์ด์ ๋์๋ ์ ๊ธฐ ๋ฌ ๋ฌ์ด ๋๋ฌด๋ ๋จ๋ ธ๋ค.
๋ฏผ์์ด๋ ์ง๊ธ ๋ฏธ๋ก ์์ ์๋ค. ๋ฏธ๋ก๋ ์ง์ฌ๊ฐํ ๋ชจ์์ด๊ณ , ์ฌํ๊ธธ์ ๋ ๋๊ธฐ ์ํด ๋ฏธ๋ก๋ฅผ ํ์ถํ๋ ค๊ณ ํ๋ค.
๋ฏธ๋ก๋ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌ์ฑ๋์ด์ ธ์๋ค.
๋น ์นธ: ์ธ์ ๋ ์ด๋ํ ์ ์๋ค. ('.')
๋ฒฝ: ์ ๋ ์ด๋ํ ์ ์๋ค. ('#')
์ด์ : ์ธ์ ๋ ์ด๋ํ ์ ์๋ค. ์ด ๊ณณ์ ์ฒ์ ๋ค์ด๊ฐ๋ฉด ์ด์ ๋ฅผ ์ง๋๋ค. ('a', 'b', 'c', 'd', 'e', 'f')
๋ฌธ: ๋์ํ๋ ์ด์ ๊ฐ ์์ ๋๋ง ์ด๋ํ ์ ์๋ค. ('A', 'B', 'C', 'D', 'E', 'F')
๋ฏผ์์ด์ ํ์ฌ ์์น: ๋น ๊ณณ์ด๊ณ , ๋ฏผ์์ด๊ฐ ํ์ฌ ์ ์๋ ๊ณณ์ด๋ค. ('0')
์ถ๊ตฌ: ๋ฌ์ด ์ฐจ์ค๋ฅด๊ธฐ ๋๋ฌธ์, ๋ฏผ์์ด๊ฐ ๊ฐ์ผํ๋ ๊ณณ์ด๋ค. ์ด ๊ณณ์ ์ค๋ฉด ๋ฏธ๋ก๋ฅผ ํ์ถํ๋ค. ('1')
๋ฌ์ด ์ฐจ์ค๋ฅด๋ ๊ธฐํ๋ฅผ ๋์น์ง ์๊ธฐ ์ํด์, ๋ฏธ๋ก๋ฅผ ํ์ถํ๋ ค๊ณ ํ๋ค.
ํ ๋ฒ์ ์์ง์์ ํ์ฌ ์์น์์ ์ํ์ด๋ ์์ง์ผ๋ก ํ ์นธ ์ด๋ํ๋ ๊ฒ์ด๋ค.
๋ฏผ์์ด๊ฐ ๋ฏธ๋ก๋ฅผ ํ์ถํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์ด๋ ํ์์ ์ต์๊ฐ์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
๐ ์
๋ ฅ
์ฒซ์งธ ์ค์ ๋ฏธ๋ก์ ์ธ๋ก ํฌ๊ธฐ N๊ณผ ๊ฐ๋ก ํฌ๊ธฐ M์ด ์ฃผ์ด์ง๋ค. (1 โค N, M โค 50) ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ๋ฏธ๋ก์ ๋ชจ์์ด ์ฃผ์ด์ง๋ค.
๊ฐ์ ํ์
์ ์ด์ ๊ฐ ์ฌ๋ฌ ๊ฐ ์์ ์ ์๊ณ , ๋ฌธ๋ ๋ง์ฐฌ๊ฐ์ง์ด๋ค.
๊ทธ๋ฆฌ๊ณ , ๋ฌธ์ ๋์ํ๋ ์ด์ ๊ฐ ์์ ์๋ ์๋ค. '0'์ ํ ๊ฐ, '1'์ ์ ์ด๋ ํ ๊ฐ ์๋ค. ์ด์ ๋ ์ฌ๋ฌ ๋ฒ ์ฌ์ฉํ ์ ์๋ค.
๐ ์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๋ฏผ์์ด๊ฐ ๋ฏธ๋ก๋ฅผ ํ์ถํ๋๋ฐ ๋๋ ์ด๋ ํ์์ ์ต์๊ฐ์ ์ถ๋ ฅํ๋ค.
๋ง์ฝ ๋ฏผ์์ด๊ฐ ๋ฏธ๋ก๋ฅผ ํ์ถ ํ ์ ์์ผ๋ฉด, -1์ ์ถ๋ ฅํ๋ค.
"""
from collections import deque
# ์ธ๋ก ํฌ๊ธฐ N๊ณผ ๊ฐ๋ก ํฌ๊ธฐ M
n, m = map(int, input().split())
for _ in range(n) :
maze = list(map(str, input().split()))
dx = [1, -1, 0, 0]
dy = [0, 0, -1, 1]
visited = [[[0] for _ in range(m)] for _ in range(n)]
queue = deque()
# ๋น ์นธ: ์ธ์ ๋ ์ด๋ํ ์ ์๋ค. ('.')
# ๋ฒฝ: ์ ๋ ์ด๋ํ ์ ์๋ค. ('#')
# ์ด์ : ์ธ์ ๋ ์ด๋ํ ์ ์๋ค. ์ด ๊ณณ์ ์ฒ์ ๋ค์ด๊ฐ๋ฉด ์ด์ ๋ฅผ ์ง๋๋ค. ('a', 'b', 'c', 'd', 'e', 'f')
# ๋ฌธ: ๋์ํ๋ ์ด์ ๊ฐ ์์ ๋๋ง ์ด๋ํ ์ ์๋ค. ('A', 'B', 'C', 'D', 'E', 'F')
# ๋ฏผ์์ด์ ํ์ฌ ์์น: ๋น ๊ณณ์ด๊ณ , ๋ฏผ์์ด๊ฐ ํ์ฌ ์ ์๋ ๊ณณ์ด๋ค. ('0')
# ์ถ๊ตฌ: ๋ฌ์ด ์ฐจ์ค๋ฅด๊ธฐ ๋๋ฌธ์, ๋ฏผ์์ด๊ฐ ๊ฐ์ผํ๋ ๊ณณ์ด๋ค. ์ด ๊ณณ์ ์ค๋ฉด ๋ฏธ๋ก๋ฅผ ํ์ถํ๋ค. ('1')
for i in range(n):
for j in range(m):
# ์์ ์ขํ
if maze[i][j] == "0":
# ์ขํ, key
queue.append([i, j, 0])
# ๋น์นธ์ผ๋ก .
maze[i][j] = "."
# ๋ฐฉ๋ฌธํจ
visited[i][j][0] = 1
while queue :
x, y, k = queue.popleft()
# ์ถ๊ตฌ, ๋ฏธ๋ก ํ์ถํ๊ธฐ
if maze[x][y] == "1" :
answer = visited[x][y] - 1
break
for i in range(4) :
nx = x + dx[i]
ny = y + dy[i]
# ๋ฒ์ ์, ๋ฐฉ๋ฌธ ์ํจ ๋ฒฝ ์๋
if (0 <= nx < n and 0 <= ny < m and visited[x][y] == 0 and maze[nx][ny] != "#") :
# ์ด์
if maze[nx][ny] in ['a', 'b', 'c', 'd', 'e', 'f'] :
visited[x][y] = visited[nx][ny] + 1
queue.append((nx, ny, k))
# ๋ฌธ
elif maze[nx][ny] in ['A', 'B', 'C', 'D', 'E', 'F'] :
visited[x][y] = visited[nx][ny] + 1
queue.append((nx, ny, k))
# ๊ธธ
else :
visited[x][y] = visited[nx][ny] + 1
queue.append((nx, ny, k))
print(answer)
3. ํด์ค
This post is licensed under CC BY 4.0 by the author.