게임 맵 최단거리
in Algorithm
문제 파악
문제
미로탐색 과 비슷한 유형의 문제이다.
주요 조건
• 상대 진영에 도착하기 위해서 지나야하는 칸의 최소 갯수
• 상대 진영 주위에 벽이 있다면 상대 팀 진영에 도달할 수 없다. 이때는 -1
을 반환한다.
문제 해결 과정
핵심 로직
• BFS를 구현한 최단거리 구하기
• 예외처리 : 목적지에 도달하지 못 할 경우
해결 순서
⒈ 시작 촤표(x,y)
를 Queue에 넣고 방문처리를 한다.
⒉ 상하좌우로 이동하며 이동할 수 있는 좌표를 찾는다.
⒊ 이동할 수 있는 경로의 좌표를 Queue에 넣고 방문처리 한다.
⒋ 최단 경로를 알아야 하므로 이전 좌표의 노드값에 1을 더하며 이동한다.
⒌ 마지막 노드까지 방문을 완료했다면, 마지막 좌표의 노드값을 반환한다.
⒍ 만약 벽에 가로막혀 마지막 노드를 방문을 하지 못한다면 -1을 반환한다.
소스 코드
🔖 소스 코드