Skip to content

Commit dd39567

Browse files
committed
word-search solution
1 parent 23be100 commit dd39567

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed

โ€Žword-search/krokerdile.jsโ€Ž

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
/**
2+
* @param {character[][]} board
3+
* @param {string} word
4+
* @return {boolean}
5+
*/
6+
var exist = function(board, word) {
7+
const rows = board.length;
8+
const cols = board[0].length;
9+
10+
// DFS ํ•จ์ˆ˜ ์ •์˜
11+
const dfs = (r, c, idx) => {
12+
// ๋‹จ์–ด ๋๊นŒ์ง€ ์ฐพ์€ ๊ฒฝ์šฐ
13+
if (idx === word.length) return true;
14+
15+
// ๋ฒ”์œ„ ๋ฐ–์ด๊ฑฐ๋‚˜, ๋ฌธ์ž ๋ถˆ์ผ์น˜๊ฑฐ๋‚˜, ์ด๋ฏธ ๋ฐฉ๋ฌธํ•œ ๊ฒฝ์šฐ
16+
if (
17+
r < 0 || c < 0 || r >= rows || c >= cols ||
18+
board[r][c] !== word[idx]
19+
) {
20+
return false;
21+
}
22+
23+
const temp = board[r][c]; // ํ˜„์žฌ ๋ฌธ์ž ์ €์žฅ
24+
board[r][c] = "#"; // ๋ฐฉ๋ฌธ ํ‘œ์‹œ
25+
26+
// ์ƒํ•˜์ขŒ์šฐ๋กœ ํƒ์ƒ‰
27+
const found = dfs(r + 1, c, idx + 1) ||
28+
dfs(r - 1, c, idx + 1) ||
29+
dfs(r, c + 1, idx + 1) ||
30+
dfs(r, c - 1, idx + 1);
31+
32+
board[r][c] = temp; // ๋ฐฑํŠธ๋ž˜ํ‚น: ์›์ƒ๋ณต๊ตฌ
33+
34+
return found;
35+
};
36+
37+
// ๋ณด๋“œ์˜ ๋ชจ๋“  ์นธ์—์„œ ์‹œ์ž‘ํ•ด๋ณด๊ธฐ
38+
for (let r = 0; r < rows; r++) {
39+
for (let c = 0; c < cols; c++) {
40+
if (dfs(r, c, 0)) return true;
41+
}
42+
}
43+
44+
return false;
45+
};
46+
47+
// ์‹œ๊ฐ„๋ณต์žก๋„: O(m * n * 4^L), m*n๋ฒˆ DFS ์‹œ์ž‘ ๊ฐ€๋Šฅํ•˜๊ณ , ๊ฐ DFS๋Š” ์ตœ๋Œ€ 4๋ฐฉํ–ฅ * ๋‹จ์–ด ๊ธธ์ด ๋งŒํผ ํƒ์ƒ‰

0 commit comments

Comments
ย (0)