NumberOfIsland_ DFS
243
작성한 질문수 9
void merge(char[][] grid, int i, int j) {
// System.out.println("==merge===== i: " + i + " y: " + j);
// if (i < 0 || i >= m || j < 0 || j >= n || grid[i][j] != '1')
// return;
// grid[i][j] = 'X';
// for(int[] dir: dirs) {
// merge(grid, i+dir[0], j+dir[1]);
// }
//
// merge(grid, i - 1, j);
// merge(grid, i + 1, j);
// merge(grid, i, j + 1);
// merge(grid, i, j - 1);
// }
NumberOfIsland_ DFS문제에서
이부분이 이해가안됩니다 특히 merge(grid,i+dir[0],dir[1]+j)
가 여러방향 훑는거라는 느낌은 들었는데 왜 인덱스 0과 1인지 과정이 궁금해서 질문남깁니다!
답변 1
0
안녕하세요. 답변이 늦어 죄송합니다.
dfs는 정말 많이 물어보는 개념이죠 . 거의 외우다시피 하셔야하겠죠.
1) 질문주신
이부분이 이해가안됩니다 특히 merge(grid,i+dir[0],dir[1]+j) 가 여러방향 훑는거라는 느낌은 들었는데 왜 인덱스 0과 1인지 과정이 궁금해서 질문남깁니다!
merge(grid, i-1, j);
merge(grid, i+1, j);
merge(grid, i, j+1);
merge(grid, i, j-1);
와
for(int[] dir: dirs) {
merge(grid, i+dir[0], j+dir[1]);
}
은 같은 개념입니다.
즉 (0,0) 좌표를 사방으로 돌리기 시작하면
int[][] dirs= {{0,1},{0,-1},{1,0},{-1,0}}; 에서
int[] dir {0,1}을 만나면 (0,0) -> (0,1) 이 되고
int[] dir {0,-1}을 만나면 (0,0) -> (0,-1) 이 되고
int[] dir {1,0}을 만나면 (0,0) -> (1,0) 이 되고
int[] dir {-1,0}을 만나면 (0,0) -> (-1,0) 이 되고
이렇게 사방으로 체크하는 의미입니다.
강의자료에 나오는 m과 n의 범위가 코딩하고 다른거 같습니다
0
255
0
나선형매트릭스 깃허브에 코드가 없는것같아요
0
210
0
로그 파일의 데이터 재정렬 코드가 깃허브에 없어요!
0
225
0
새로 생긴 기초강의 질문드려요
1
376
1
질문드립니다
1
220
1
Unique Paths Integer 질문입니다
0
220
1
subString 방법으로 문제 풀이 영상은 짤린건가요?
1
253
1
DFS 방식으로 푼 것이 맞나요?
0
310
2
질문드립니다~
0
197
1
left if문에 대해서
1
257
1
오타 인가요?
1
238
1
안녕하세요 강사님
1
190
1
질문 드립니다
0
173
2
Queue&Stack 문제해설집 문의
0
184
1
문제분석 로직 질문
1
231
1
시간 복잡도 문의드립니다.
1
233
1
시간복잡도 질문드립니다.
1
203
1
for-each 문 질문있습니다!
0
295
1
강의영상에서 사용된 로그 메소드가 궁금합니다.
2
282
2
강의자료 + 문제 이해 관련 질문입니다
1
279
3
강사님 오류맞나요?
1
208
1
강사님 시간 복잡도에 대해서 질문드립니다.
1
174
1
질문입니다.
1
203
1
문제에 대한 이해
1
314
1





