Skip to content

Commit 649b32c

Browse files
committed
solve: word search
1 parent 3ff3afb commit 649b32c

File tree

1 file changed

+62
-0
lines changed

1 file changed

+62
-0
lines changed

word-search/wogha95.js

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,65 @@
1+
// 2차
2+
// result flag 변수를 활용 => boolean 반환으로 개선
3+
// TC: O(M * N * 4^W)
4+
// SC: O(MIN)
5+
// W: word.length, MIN: min(M * N, W)
6+
7+
/**
8+
* @param {character[][]} board
9+
* @param {string} word
10+
* @return {boolean}
11+
*/
12+
var exist = function (board, word) {
13+
for (let r = 0; r < board.length; r++) {
14+
for (let c = 0; c < board[0].length; c++) {
15+
if (dfs(r, c, 0)) {
16+
return true;
17+
}
18+
}
19+
}
20+
21+
return false;
22+
23+
function dfs(row, column, wordIndex) {
24+
if (!isValid(row, column)) {
25+
return false;
26+
}
27+
if (board[row][column] !== word[wordIndex]) {
28+
return false;
29+
}
30+
if (wordIndex === word.length - 1) {
31+
return true;
32+
}
33+
34+
const temp = board[row][column];
35+
board[row][column] = "#";
36+
37+
if (
38+
dfs(row + 1, column, wordIndex + 1) ||
39+
dfs(row - 1, column, wordIndex + 1) ||
40+
dfs(row, column + 1, wordIndex + 1) ||
41+
dfs(row, column - 1, wordIndex + 1)
42+
) {
43+
return true;
44+
}
45+
46+
board[row][column] = temp;
47+
48+
return false;
49+
}
50+
51+
function isValid(row, column) {
52+
if (row < 0 || board.length <= row) {
53+
return false;
54+
}
55+
if (column < 0 || board[0].length <= column) {
56+
return false;
57+
}
58+
return true;
59+
}
60+
};
61+
62+
// 1차
163
// TC: O(M * N * 4^W)
264
// SC: O(MIN)
365
// W: word.length, MIN: min(M * N, W)

0 commit comments

Comments
 (0)