uiucpass   5년 전

isRotate는 BBB 에서 중간 B를 중심으로 회전할 수 있는지 체크하는 함수이고

mat이라는 2차원배열은 1과 0만이 있습니다.(B나 E도 0)

visited는 [row 위치][column 위치] [ 방향] 으로 이루어져있습니다.

지도를 입력 받고, 입력받은 BBB의 중간 B의 위치를 큐에 넣고, 처음위치부터 rotate가능한 지 확인한 뒤에

 BFS를 실행합니다. 여기서 큐는 row, col, 얼마나 이동했는지(cnt), 수직으로 가는지 평행으로가는지 (chk) 를

각각 요소로 가지고 있는 struct를 원소로 가집니다. BFS가 시작되면 큐의 front()에서 왼쪽 오른쪽 위 아래를 검사하고

방문한 것이 아니면 cnt + 1을 하고, 여기서 rotate 까지 가능하면 cnt + 2를 하여 줍니다.

마지막으로 E와 같은 방향( 수직 or 평행)이면서 E의 중간 지점과 탐색하는 위치가 일치하면 즉시 종료하고, 탐색 중인

cnt를 출력합니다.

댓글을 작성하려면 로그인해야 합니다.