Skip to content

Commit 6338bf0

Browse files
committed
solve word search
1 parent 503daed commit 6338bf0

1 file changed

Lines changed: 32 additions & 0 deletions

File tree

โ€Žword-search/ohkingtaek.pyโ€Ž

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
class Solution:
2+
def exist(self, board: List[List[str]], word: str) -> bool:
3+
"""
4+
์‹œ๊ฐ„ ๋ณต์žก๋„: O(M * N * 4^L)
5+
๊ณต๊ฐ„ ๋ณต์žก๋„: O(M * N)
6+
1. ํ–‰๋ ฌ์„ ์ˆœํšŒํ•˜๋ฉฐ ๋‹จ์–ด์˜ ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ž์™€ ์ผ์น˜ํ•˜๋Š” ์œ„์น˜๋ฅผ ์ฐพ๊ธฐ
7+
2. ์ฐพ์€ ์œ„์น˜์—์„œ ์ƒํ•˜์ขŒ์šฐ๋กœ ์ด๋™ํ•˜๋ฉฐ ๋‹จ์–ด์˜ ๋‹ค์Œ ๋ฌธ์ž์™€ ์ผ์น˜ํ•˜๋Š” ์œ„์น˜๋ฅผ ์ฐพ๊ธฐ
8+
3. ๋‹จ์–ด์˜ ๋งˆ์ง€๋ง‰ ๋ฌธ์ž๊นŒ์ง€ ์ฐพ์œผ๋ฉด True๋ฅผ ๋ฐ˜ํ™˜, ๋ชป ์ฐพ์œผ๋ฉด False
9+
"""
10+
m, n = len(board), len(board[0])
11+
12+
def dfs(i, j, k):
13+
if i < 0 or i >= m or j < 0 or j >= n or board[i][j] != word[k]:
14+
return False
15+
if k == len(word) - 1:
16+
return True
17+
t = board[i][j]
18+
board[i][j] = "#"
19+
dx, dy = (1, -1, 0, 0), (0, 0, 1, -1)
20+
ok = False
21+
for d in range(4):
22+
if dfs(i + dx[d], j + dy[d], k + 1):
23+
ok = True
24+
break
25+
board[i][j] = t
26+
return ok
27+
28+
for i in range(m):
29+
for j in range(n):
30+
if dfs(i, j, 0):
31+
return True
32+
return False

0 commit comments

Comments
ย (0)