1+ '''
2+ BOJ #13460. ๊ตฌ์ฌ ํ์ถ2 (๊ณจ๋2)
3+ https://www.acmicpc.net/problem/13460
4+ ์ ํ: BFS
5+ ์ถ์ฒ : https://hstory0208.tistory.com/entry/Python%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%B0%B1%EC%A4%80-13460-%EA%B5%AC%EC%8A%AC-%ED%83%88%EC%B6%9C2
6+ '''
7+
8+ from collections import deque
9+ import sys
10+ input = sys .stdin .readline
11+
12+ n , m = map (int , input ().split ()) # ํ, ์ด
13+
14+ board = [list (input ().rstrip ()) for _ in range (n )]
15+ visited = []
16+
17+ dx = [1 , - 1 , 0 , 0 ]
18+ dy = [0 , 0 , - 1 , 1 ]
19+ cnt = 0
20+
21+ def getPos ():
22+ rx , ry , bx , by = 0 , 0 , 0 , 0
23+ for x in range (n ):
24+ for y in range (m ):
25+ if board [x ][y ] == "R" :
26+ rx , ry = x , y
27+ if board [x ][y ] == "B" :
28+ bx , by = x , y
29+ return rx , ry , bx , by
30+
31+
32+ def move (x , y , dx , dy ):
33+ cnt = 0
34+ # ์ด๋ํ๋ ์์น๊ฐ ๋ฒฝ์ด์๋๊ณ , ๊ตฌ๋ฉ์ ๋ค์ด๊ฐ์ง ์์ ๋์ ๋ฐ๋ณต
35+ while board [x + dx ][y + dy ] != "#" and board [x ][y ] != "O" :
36+ x += dx
37+ y += dy
38+ cnt += 1
39+ return x , y , cnt
40+
41+ def bfs ():
42+ rx , ry , bx , by = getPos ()
43+
44+ q = deque ()
45+ q .append ((rx , ry , bx , by , 1 ))
46+ visited .append ((rx , ry , bx , by ))
47+
48+ while q :
49+ rx , ry , bx , by , result = q .popleft ()
50+
51+ if result > 10 :
52+ break
53+
54+ for i in range (4 ):
55+ nrx , nry , rcnt = move (rx , ry , dx [i ], dy [i ])
56+ nbx , nby , bcnt = move (bx , by , dx [i ], dy [i ])
57+
58+ # ํ๋ ๊ตฌ์ฌ์ด ๊ตฌ๋ฉ์ ๋ค์ด๊ฐ ๊ฒฝ์ฐ
59+ if board [nbx ][nby ] == "O" :
60+ continue
61+
62+ # ๋นจ๊ฐ ๊ตฌ์ฌ์ด ๋ค์ด๊ฐ ๊ฒฝ์ฐ ์ฑ๊ณต
63+ if board [nrx ][nry ] == "O" :
64+ print (result )
65+ return
66+
67+ # ๋์ด ๊ฒน์ณ์์๊ฒฝ์ฐ ๋ ๋ง์ด ์ด๋ํ๋
์์ 1์นธ ๋ค๋ก ๋ณด๋ธ๋ค.
68+ if nrx == nbx and nry == nby :
69+ if rcnt > bcnt :
70+ nrx -= dx [i ]
71+ nry -= dy [i ]
72+ else :
73+ nbx -= dx [i ]
74+ nby -= dy [i ]
75+
76+ # ํ์ํ์ง ์์ ๋ฐฉํฅ ํ์
77+ if (nrx , nry , nbx , nby ) not in visited :
78+ visited .append ((nrx , nry , nbx , nby ))
79+ q .append ((nrx , nry , nbx , nby , result + 1 ))
80+ print (- 1 )
81+
82+ bfs ()
0 commit comments