점프할 때마다 주난이 있는 칸에서 상하좌우로 뻗는 파동이 각 방향의 첫 친구까지 닿아 그 칸을 비운다. 도둑 칸이 비워질 때까지의 최소 점프 횟수를 구한다.
보통6BFS그래프시뮬레이션구현면접 대비아직 제출이 없습니다시간 제한2초메모리 제한512 MB주난이는 크게 화가 났다. 책상 서랍 안에 몰래 먹으려고 숨겨 둔 초코바가 사라졌기 때문이다. 주난이는 미쳐 날뛰기 시작했다. 사실은 진짜로 뛰기 시작했다.
'쿵... 쿵...'
주난이는 점프의 파동으로 주변 친구들을 모두 쓰러뜨리고(?) 초코바를 훔쳐 간 범인을 찾으려고 한다. 주난이는 N×M 크기의 교실 어딘가에서 뛰기 시작했다. 주난이의 파동은 상하좌우 4방향으로 퍼져 나가다가 친구를 만나면 그 친구를 쓰러뜨리고(?) 멈춘다. 다시 말해 한 번의 점프는 친구들을 한 겹 쓰러뜨린다. 쓰러진 친구가 있던 칸은 빈 공간이 된다. 다음 예를 보자.
1 # 1 0 1 1 1
1 1 0 1 0 0 1
0 0 1 * 1 1 1
1 1 0 1 1 1 1
0 0 1 1 0 0 1
주난이를 뜻하는 *은 (3,4)에 있고, 초코바를 가진 범인 #은 (1,2)에 있다. 0은 장애물이 없는 빈 공간이고, 1은 친구가 서 있는 칸이다. 다음은 주난이가 점프할 때마다 살아남은(?) 학생들이 어떻게 바뀌는지 보여 준다.
1 # 1 0 1 1 1
1 1 0 0 0 0 1
0 0 0 * 0 1 1
1 1 0 0 1 1 1
0 0 1 1 0 0 1
1 # 0 0 0 0 1
0 0 0 0 0 0 0
0 0 0 * 0 0 1
0 0 0 0 0 1 1
0 0 0 0 0 0 1
0 X 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 * 0 0 0
0 0 0 0 0 0 1
0 0 0 0 0 0 0
위의 예에서 주난이는 3번 점프해서 초코바를 훔쳐 간 범인을 찾아낸다. 범인도 친구와 똑같이 파동에 쓰러지며, 범인이 쓰러지는 순간 범인을 잡은 것이다.
주난이를 빨리 멈춰야 교실이 평화로워진다. 주난이에게 최소 점프 횟수를 알려 주어 교실을 지키자.
첫째 줄에 교실의 크기 N, M이 주어진다. (1≤N,M≤300)
둘째 줄에 주난이의 위치 x1, y1과 범인의 위치 x2, y2가 주어진다. (1≤x1,x2≤N, 1≤y1,y2≤M) 위치는 (행, 열) 순서이며 1부터 센다.
다음 N개의 줄에 교실 정보가 공백 없이 한 줄에 M개의 문자로 주어진다. 0은 빈 공간, 1은 친구, *는 주난이, #은 범인을 뜻한다.
주난이가 범인을 잡으려면 최소 몇 번 점프해야 하는지 출력한다.
파동은 호수에 떨어진 돌멩이가 만드는 물결처럼 상하좌우 네 방향으로 퍼지며, 장애물(친구)을 만날 때까지 계속 퍼져 나간다.
# 0 0 0 0
1 1 1 1 1
0 0 0 0 *
위 교실에서 첫 점프를 하면 다음과 같이 된다.
# 0 0 0 0
0 0 0 0 0
0 0 0 0 *
이후 한 번 더 점프하면 파동이 #에 닿아 범인을 잡는다.