• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

코드 피드백 부탁드립니다. (미로의 최단거리 통로 BFS)

21.08.06 00:00 작성 조회수 130

0

미로의 최단거리 통로 문제를 먼저 보고 풀고 성공하고 나서 강사님 강의에 나오는 코드를 보니 저와는 조금 다른데 제 코드와 비교해서 강사님 코드가 더 효율적일까요? 코드 짜는 방식을 강사님 식으로 짜는 걸로 연습을 해야 할지 아니면 제 방식으로 비슷한 문제를 풀어나가도 되는지 아니면 추후에 강사님 식으로 푸는 게 나중에 응용이나 활용 문제 나왔을 때 더 좋은가 궁금합니다. 제 코드 피드백 좀 부탁드리고 싶습니다. 매번 감사드립니다!
```java
import java.util.*;

public class MazeSearch2 {
    public static int[][] map = new int[7][7];
    public static int ans = 0;
    public static int[] arrX={0,0,1,-1};
    public static int[] arrY = { 1, -1, 0, 0 };
    public static void main(String[] args) throws Exception {
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < 7; i++) 
            for (int j = 0; j < 7; j++) 
                map[i][j] = sc.nextInt();
        map[0][0] = 1;
        System.out.println(solution(0, 0));
    }
    public static int solution(int x, int y) {
        Queue<Integer> q = new LinkedList<>();
        q.add(x);
        q.add(y);
        while (!q.isEmpty()) {
            int len = q.size()/2;
            for (int i = 0; i < len; i++) {
                int xx = q.poll();
                int yy = q.poll();
                for (int j = 0; j < 4; j++) {
                    if (xx + arrX[j] < 7 && yy + arrY[j] < 7 && xx + arrX[j] >=0 && yy + arrY[j] >=0) {
                        if (map[xx + arrX[j]][yy + arrY[j]] == 0) {
                            if (xx+arrX[j] == 6 && yy+arrY[j] == 6)
                                return ans+1;
                            map[xx + arrX[j]][yy + arrY[j]] = 3;
                            q.add(xx + arrX[j]);
                            q.add(yy + arrY[j]);   
                        }
                    }
                }
            }
            ans++;
        }
        return -1;
    }
}
```

답변 1

답변을 작성해보세요.

0

안녕하세요^^

본인 코드 스타일로 해도 상관없을 것 같습니다.