NumberOfIsland_ DFS
245
작성한 질문수 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
263
0
나선형매트릭스 깃허브에 코드가 없는것같아요
0
217
0
로그 파일의 데이터 재정렬 코드가 깃허브에 없어요!
0
230
0
새로 생긴 기초강의 질문드려요
1
387
1
질문드립니다
1
236
1
Unique Paths Integer 질문입니다
0
227
1
subString 방법으로 문제 풀이 영상은 짤린건가요?
1
262
1
DFS 방식으로 푼 것이 맞나요?
0
317
2
질문드립니다~
0
201
1
left if문에 대해서
1
260
1
오타 인가요?
1
242
1
안녕하세요 강사님
1
194
1
질문 드립니다
0
176
2
Queue&Stack 문제해설집 문의
0
185
1
문제분석 로직 질문
1
232
1
시간 복잡도 문의드립니다.
1
235
1
시간복잡도 질문드립니다.
1
207
1
for-each 문 질문있습니다!
0
303
1
강의영상에서 사용된 로그 메소드가 궁금합니다.
2
291
2
강의자료 + 문제 이해 관련 질문입니다
1
291
3
강사님 오류맞나요?
1
209
1
강사님 시간 복잡도에 대해서 질문드립니다.
1
180
1
질문입니다.
1
205
1
문제에 대한 이해
1
314
1





