본문 바로가기

너비우선탐색3

리코쳇 로봇(Lv.2) 문제 설명 입출력 예시 요약 출발점(R)에서 부터 동서남북 각 방향에 대해 벽(D)에 도달하기 전까지 이동하면서 도착점(G)까지의 최단 거리 구하기 풀이 접근 방식 1. 맵 정보를 이차원 배열에 담는다. → 출발점(R)과 도착점(G)의 좌표를 변수에 저장 2. bfs를 통한 최단 거리 구하기 → 출발점에서 bfs 시작. 도착점까지 최단 거리 구하기 3. 도착하지 못하는 상황 → 미끄러지는 그림을 상상했을 때, 도착점(R)의 상하좌우 어느 한 곳에는 반드시 벽(D)이 있어야 도달 가능 코드리뷰 import java.util.*; // 위치 정보를 담을 객체 클래스 class Position { int row; int col; int cnt;// 거리가 아닌 움직인 횟수를 기록한다. public Positi.. 2024. 4. 16.
미로 탈출(Lv.2) 문제 설명 입출력 예시 요약 레버로 이동한 후 도착지점으로 이동하는 최단 거리 구하기 풀이 접근 방식 1. 맵을 구성하는 이차원 배열 만들기 → 출발지(S), 레버(L), 도착지(E)가 있는 좌표를 따로 저장 2. bfs를 활용한 최단 거리 구하기 → 출발지(S)에서 레버(L)까지 bfs시작 → 레버에 도달했다면 레버에서 도착지(E)까지 bfs 시작 → 도착지에 도달했다면 S~L 거리와 L~E 거리 합 리턴 코드리뷰 import java.util.*; // 현재 위치와 거리를 저장할 객체 클래스 class Position { int row;// y좌표 int col;// x좌표 int dist;// 거리 public Position(int row, int col, int dist) { this.row =.. 2024. 4. 16.
게임 맵 최단거리(Lv.2) 문제 설명 입출력 예시 요약 상대 진영에 도착하는 최단거리 구하기(막혀있으면 -1 return) 풀이 접근 방식 1. 주어진 이차원 배열 형태로 미로 구성 → 미로 전체를 둘러싸기 위해 행과 열의 크기에 각각 2를 더한 만큼의 maze(boolean 2차원 배열) 생성 → 행의 개수, 열의 개수 만큼 이중 반복문을 통해 maze에 미로 표시 2. bfs를 활용해 최단 경로 구하기 → 상하좌우로 이동할 수 있는 좌표가 담긴 directions (int 2차원 배열) 생성 → 현재 좌표와 이동한 거리를 인스턴스로 갖는 Position 클래스 객체를 큐에 담아 FIFO 방식으로 확인 코드리뷰 import java.util.*; // 현재 좌표(row, col)와 이동한 거리(dist)를 인스턴스로 갖는 Pos.. 2024. 3. 27.