static boolean dfs(int y, int x, int by, int bx, char alp) {
if (visited[y][x]) return true;
// visit을 여기서 계산
visited[y][x] = true;
for (int k = 0; k < 4; ++k) {
int ny = y + dy[k];
int nx = x + dx[k];
if (!(0 <= ny && ny < n && 0 <= nx && nx < m)) continue;
if (a[ny][nx] != alp) continue;
// 이부분!
// bx by 는 before이다.
if (ny == by && nx == bx) continue;
if(dfs(ny, nx, y, x, alp))
return true;
}
return false;
}
ex 2*3 배열일때
0,1 -> 1
1,2 -> 5
로 나타내는 방법
높은 난이도의 문제에선 많이쓴다.
초기화 해주는 거 까먹지 말자.
sArrayList<class>[][] chips;
이 글을 보고 코딩테스트 합격했습니다. 감사합니다.