๐ข ๊ฒ์ ๋งต ์ต๋จ๊ฑฐ๋ฆฌ
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
"""
๊ฒ์ ๋งต ์ต๋จ๊ฑฐ๋ฆฌ
๐ ๋ฌธ์
ROR ๊ฒ์์ ๋ ํ์ผ๋ก ๋๋์ด์ ์งํํ๋ฉฐ, ์๋ ํ ์ง์์ ๋จผ์ ํ๊ดดํ๋ฉด ์ด๊ธฐ๋ ๊ฒ์์
๋๋ค.
๋ฐ๋ผ์, ๊ฐ ํ์ ์๋ ํ ์ง์์ ์ต๋ํ ๋นจ๋ฆฌ ๋์ฐฉํ๋ ๊ฒ์ด ์ ๋ฆฌํฉ๋๋ค.
๊ฒ์ ๋งต์ ์ํ maps๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋,
์บ๋ฆญํฐ๊ฐ ์๋ ํ ์ง์์ ๋์ฐฉํ๊ธฐ ์ํด์ ์ง๋๊ฐ์ผ ํ๋ ์นธ์ ๊ฐ์์ ์ต์๊ฐ์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
๋จ, ์๋ ํ ์ง์์ ๋์ฐฉํ ์ ์์ ๋๋ -1์ return ํด์ฃผ์ธ์.
๐งก ์ ํ ์ฌํญ
maps๋ n x m ํฌ๊ธฐ์ ๊ฒ์ ๋งต์ ์ํ๊ฐ ๋ค์ด์๋ 2์ฐจ์ ๋ฐฐ์ด๋ก, n๊ณผ m์ ๊ฐ๊ฐ 1 ์ด์ 100 ์ดํ์ ์์ฐ์์
๋๋ค.
n๊ณผ m์ ์๋ก ๊ฐ์ ์๋, ๋ค๋ฅผ ์๋ ์์ง๋ง, n๊ณผ m์ด ๋ชจ๋ 1์ธ ๊ฒฝ์ฐ๋ ์
๋ ฅ์ผ๋ก ์ฃผ์ด์ง์ง ์์ต๋๋ค.
maps๋ 0๊ณผ 1๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ, 0์ ๋ฒฝ์ด ์๋ ์๋ฆฌ, 1์ ๋ฒฝ์ด ์๋ ์๋ฆฌ๋ฅผ ๋ํ๋
๋๋ค.
์ฒ์์ ์บ๋ฆญํฐ๋ ๊ฒ์ ๋งต์ ์ข์ธก ์๋จ์ธ (1, 1) ์์น์ ์์ผ๋ฉฐ, ์๋๋ฐฉ ์ง์์ ๊ฒ์ ๋งต์ ์ฐ์ธก ํ๋จ์ธ (n, m) ์์น์ ์์ต๋๋ค.
๐ ์
์ถ๋ ฅ
maps answer
[[1,0,1,1,1],[1,0,1,0,1],[1,0,1,1,1],[1,1,1,0,1],[0,0,0,0,1]] 11
[[1,0,1,1,1],[1,0,1,0,1],[1,0,1,1,1],[1,1,1,0,0],[0,0,0,0,1]] -1
"""
from collections import deque
def bfs(maps, x, y):
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
queue = deque()
queue.append((x, y))
while queue:
x, y = queue.popleft()
for i in range(4):
nx = x + dx[i]
ny = y + dy[i]
if nx < 0 or nx >= len(maps) or ny < 0 or ny >= len(maps[0]):
continue
# ๋ฒฝ
if maps[nx][ny] == 0:
continue
# ์ฒ์ ์ง๋๊ฐ๋ ๊ธธ + ๊ฑฐ๋ฆฌ ๊ณ์ฐ
if maps[nx][ny] == 1:
maps[nx][ny] = maps[x][y] + 1
queue.append((nx, ny))
# ์๋ํธ ์ขํ๊น์ง์ ๊ฑฐ๋ฆฌ (n, n)
return maps[len(maps)-1][len(maps[0])-1]
# maps๋ 0๊ณผ 1๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ, 0์ ๋ฒฝ์ด ์๋ ์๋ฆฌ, 1์ ๋ฒฝ์ด ์๋ ์๋ฆฌ
def solution(maps):
answer = 0
answer = bfs(maps, 0, 0)
if answer == 1 :
return -1
else :
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
ํ ์คํธ 1 ใ ํต๊ณผ (0.04ms, 10.4MB) ํ ์คํธ 2 ใ ํต๊ณผ (0.03ms, 10.1MB) ํ ์คํธ 3 ใ ํต๊ณผ (0.06ms, 10.2MB) ํ ์คํธ 4 ใ ํต๊ณผ (0.03ms, 10.1MB) ํ ์คํธ 5 ใ ํต๊ณผ (0.04ms, 10.3MB) ํ ์คํธ 6 ใ ํต๊ณผ (0.05ms, 10.2MB) ํ ์คํธ 7 ใ ํต๊ณผ (0.09ms, 10.2MB) ํ ์คํธ 8 ใ ํต๊ณผ (0.10ms, 10.2MB) ํ ์คํธ 9 ใ ํต๊ณผ (0.07ms, 10.2MB) ํ ์คํธ 10 ใ ํต๊ณผ (0.13ms, 10.2MB) ํ ์คํธ 11 ใ ํต๊ณผ (0.04ms, 10.2MB) ํ ์คํธ 12 ใ ํต๊ณผ (0.04ms, 10.1MB) ํ ์คํธ 13 ใ ํต๊ณผ (0.05ms, 10.2MB) ํ ์คํธ 14 ใ ํต๊ณผ (0.04ms, 10.2MB) ํ ์คํธ 15 ใ ํต๊ณผ (0.04ms, 10.3MB) ํ ์คํธ 16 ใ ํต๊ณผ (0.02ms, 10.3MB) ํ ์คํธ 17 ใ ํต๊ณผ (0.12ms, 10.2MB) ํ ์คํธ 18 ใ ํต๊ณผ (0.02ms, 10.2MB) ํ ์คํธ 19 ใ ํต๊ณผ (0.01ms, 10.2MB) ํ ์คํธ 20 ใ ํต๊ณผ (0.01ms, 10.2MB) ํ ์คํธ 21 ใ ํต๊ณผ (0.01ms, 10.4MB) ํจ์จ์ฑ ํ ์คํธ ํ ์คํธ 1 ใ ํต๊ณผ (15.65ms, 10.2MB) ํ ์คํธ 2 ใ ํต๊ณผ (4.29ms, 10.3MB) ํ ์คํธ 3 ใ ํต๊ณผ (11.20ms, 10.4MB) ํ ์คํธ 4 ใ ํต๊ณผ (6.64ms, 10.3MB) ์ฑ์ ๊ฒฐ๊ณผ ์ ํ์ฑ: 69.9 ํจ์จ์ฑ: 30.1 ํฉ๊ณ: 100.0 / 100.0
3. ํด์ค
- ์๋ํ ์ง์๊น์ง์ ์ต๋ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๊ธฐ
- ๋ง์ง๋ง ์๋ํ ์ง์์ ์ต๋ ๊ฑฐ๋ฆฌ return ํ๊ธฐ
This post is licensed under CC BY 4.0 by the author.