[LeetCode] Word Search (Medium)
[풀이]
크기가 (3,5)인 2차원 배열에서 word="ABCHM" 를 찾는 경우
결론: 찾고자 하는 word="ABCHM" 를 DFS로 사용해서 찾는다.
2차원 배열의 (0,0)부터 (2, 4)까지 반복문을 수행한다.
모든 위치를 시작점으로 word의 첫 글자와 일치하는 경우 dfs를 시도한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
public class Word_Search {
public boolean exist(char[][] board, String word) {
for(int i=0; i<board.length; i++){
for(int j=0; j<board[0].length; j++){
if(board[i][j] == word.charAt(0)
&& dfs(i,j,1,board,word)){
return true;
}
}
}
return false;
}
static int[] dx={1,0,-1,0};
static int[] dy={0,1,0,-1};
public static boolean dfs(int x, int y, int idx, char[][] board, String word){
if(idx == word.length()){
return true;
}
char temp = board[x][y];
board[x][y] = '\0';
for(int d=0; d<4; d++){
int nx = x + dx[d];
int ny = y + dy[d];
if(nx<0 || nx>=board.length || ny<0 || ny>=board[0].length)
continue;
if(board[nx][ny] == word.charAt(idx) && dfs(nx,ny,idx+1,board,word))
return true;
}
board[x][y] = temp;
return false;
}
}
|
cs |
'Problem Solving' 카테고리의 다른 글
[프로그래머스] L3 보석 쇼핑 / 2020 카카오 인턴십 (Java) (0) | 2021.01.04 |
---|---|
[프로그래머스] L3 이중우선순위큐 (0) | 2021.01.03 |
[프로그래머스] L3 불량 사용자 / 2019 카카오 겨울 인턴십 (Java) (0) | 2020.12.22 |
[프로그래머스] L3 셔틀버스 / 2018 카카오 블라인드 채용 (Java) (0) | 2020.12.22 |
[프로그래머스] L3 자물쇠와 열쇠 / 2020 카카오 블라인드 채용 (Java) (0) | 2020.12.20 |
댓글