미로탐색 코드 질문있습니다.
234
작성한 질문수 5
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
class Main {
static int n = 7;
static int[][] map;
static int count = 0;
static int[] dx = {-1, 0, 1, 0};
static int[] dy = {0, -1, 0, 1};
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
map = new int[n][n];
for (int x = 0; x < n; x++) {
StringTokenizer st = new StringTokenizer(br.readLine());
for (int y = 0; y < n; y++) {
map[x][y] = Integer.parseInt(st.nextToken());
}
}
dfs(0, 0);
System.out.println(count);
}
public static void dfs(int x, int y) {
if (x == n - 1 && y == n - 1) {
count++;
} else {
for (int i = 0; i < 4; i++) {
int d_x = dx[i] + x;
int d_y = dy[i] + y;
if (d_x >= 0 && d_x <= n - 1 && d_y >= 0 && d_y <= n - 1 && map[d_x][d_y] == 0) {
map[d_x][d_y] = 1;
dfs(d_x, d_y);
map[d_x][d_y] = 0;
}
}
}
}
}저와 같은 경우는 1부터 시작하지 않고 0부터 시작해서 n전까지를 구해서 진행했는데 인덱스 차이만 있는데 답은 두배씩 나오는지 모르겠습니다.
정답이 8이라고 하면 16으로 나오더라구요. 인덱스를 하나씩 빼줘서 했을 뿐인데 어디가 문제인지 못찾겠네요ㅠ 아니면 놓친부분이 어디에 있는지 모르겠습니다ㅠ
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
tjrwls08088님, 미로 탐색 문제에서 경로를 찾는 과정에서 답이 2배로 나오는 현상에 대해 질문해주셨네요. 제시해주신 코드를 보았을 때, 기본적인 DFS 탐색은 잘 구현되어 있습니다. 하지만, 중복으로 경로를 세는 문제가 발생한 것 같습니다.
코드를 통해서는 직접적인 문제점을 확인하기 어렵지만, 가장 흔하게 발생할 수 있는 문제 중 하나는 시작점이나 도착점을 잘못 설정하여 경로를 중복으로 세는 경우입니다. 시작점을 여러 번 방문하게 되거나, 도착점이 여러 번 카운트되는 상황을 확인해 볼 필요가 있습니다.
또한, n전까지 구한다고 하였는데, 경계 조건 잘못 설정으로 인한 오류가 생길 수 있습니다. 범위 조건 검사 혹은 마킹하는 부분에서 off-by-one 오류가 없는지 다시 한 번 확인하시기 바랍니다.
코드 상에서는 명확한 문제를 찾기 어렵지만, 가능한 문제점을 주의 깊게 살펴보고, 디버깅을 하면서 각 단계별 변수의 값과 경로의 상태를 추적해 보세요. 이는 중복 카운팅을 발견하는 데 도움이 될 수 있습니다.
본 내용과 관련하여 추가적인 정보를 얻고 싶으시다면 Spring Boot Reference Documentation을 참고해보시는 것도 좋습니다. 프로그래밍하며 자주 마주치는 문제들에 관한 해답을 찾을 수 있어요.
질문하신 내용과 정확히 일치하지 않더라도 디버깅을 하는 과정에서 문제를 해결하는 데 도움이 될 수 있습니다. 문제가 계속해서 해결되지 않는다면, 해당하는 사이트의 커뮤니티 혹은 Q&A 섹션에 질문을 올려 도움을 받는 것도 좋은 방법입니다.
안녕하세요. 바뀐 채점사이트 관련해서 문의드립니다.
0
26
1
갑자기 채점 사이트가 바뀌었어요
0
31
1
문제 리스트 페이지
0
26
1
채점 사이트 관련 질문드립니다
0
23
1
봉우리 문제 질문입니다
0
80
2
씨름 선수 문제에서 각 선수의 몸무게나 키가 같을 수도 있다면?
0
64
0
이 코드랑 영상 코드중에 뭐가 더 좋은 코드인가요?
0
71
0
가중치 방향 그래프에서 가중치가 0인 간선을 표현하는 방법
0
67
1
좌표 정렬 문제 이 코드가 왜 틀린지 모르겠습니다 ㅠㅠ
0
84
2
6-7 강의에서
0
47
1
6-6. 장난꾸러기 질문 있습니다.
0
44
1
강의 수강후 코딩테스트
0
109
1
answer 변수 사용 여부
0
43
1
2중 for문
1
84
2
2-11. 임시반장정하기 (Runtime Error)
0
63
1
혹시 LinkedList 같은 자료 구조들은 따로 배우지 않나요?
0
70
1
이런 풀이는 어떨까요
0
42
1
자바 스트림 방식의 효율성 질문 드립니다.
0
57
1
알고리즘 자료 구조들..
0
61
1
StringBuilder vs BufferdWriter
0
47
1
원더랜드(프림)
0
49
1
이런 코드는 어떤가요?
0
60
1
bfs 풀이
0
57
1
병합정렬
0
55
1





