문제
- 다각형 모양의 둘레를 따라 캐릭터가 이동할 때, 특정 위치의 아이템을 줍기 위해 이동해야 하는 가장 짧은 거리 찾기
- 캐릭터의 위치 (cX, cY)와 아이템의 위치 (iX, iY)가 주어진다.
- 1 <= 직사각형 개수 <= 4
- 1 <= X, Y <= 50
풀이
- 캐릭터가 움직일 수 있는 테두리선을 찾아야 한다.
- 가로선으로 움직이는 경우와 세로선으로 움직이는 경우를 나눠서 표현한다.
- 예를 들어 (1, 3) -> (1, 4) 는 (1, (3, 4)) 로 표현한다.
- 직사각형의 테두리선을 추가하고, 직사각형 내부 선은 제거한다.
- 캐릭터의 위치에서 상하좌우로 움직일 때의 최단거리 찾기 (BFS)
- 테두리선을 따라 움직이기 때문에 가능한 방향은 항상 2개가 존재한다.
- 따라서 방문 배열을 하나만 두고, 이미 움직인 곳인지 확인하도록 한다.
References