Skip to content

Commit a1bf24a

Browse files
Update taurus09318976.py
1 parent e3ec00c commit a1bf24a

File tree

1 file changed

+46
-68
lines changed

1 file changed

+46
-68
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,76 +1,54 @@
1-
# ๋ฐฑํŠธ๋ž˜ํ‚น ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ํ’€์ดํ•จ
21
class Solution:
3-
def exist(self, board: List[List[str]], word: str) -> bool:
4-
# ๋ณด๋“œ์˜ ํ–‰๊ณผ ์—ด ์ˆ˜
5-
rows, cols = len(board), len(board[0])
6-
# ๋ฐฉ๋ฌธํ•œ ์…€์„ ์ถ”์ ํ•˜๋Š” ์ง‘ํ•ฉ
7-
visited = set()
2+
#findMin ๋ฉ”์„œ๋“œ๋Š” ์ •์ˆ˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ž…๋ ฅ ๋ฐ›์•„ ์ •์ˆ˜๋ฅผ ๋ฐ˜ํ™˜
3+
def findMin(self, nums: List[int]) -> int:
4+
# ๋ฐฐ์—ด์˜ ์‹œ์ž‘๊ณผ ๋ ์ธ๋ฑ์Šค ์„ค์ •
5+
## left๋Š” ๋ฐฐ์—ด์˜ ์‹œ์ž‘ ์ธ๋ฑ์Šค, right๋Š” ๋ฐฐ์—ด์˜ ๋ ์ธ๋ฑ์Šค. len(nums) - 1
6+
left, right = 0, len(nums) - 1
87

9-
# ๊นŠ์ด์šฐ์„  ํƒ์ƒ‰(DFS) ํ•จ์ˆ˜ ์ •์˜
10-
#r, c์€ ํ˜„์žฌ ์…€์˜ ํ–‰๊ณผ ์—ด, i๋Š” ํ˜„์žฌ ์ฐพ๊ณ  ์žˆ๋Š” ๋‹จ์–ด์˜ ์ธ๋ฑ์Šค
11-
def dfs(r, c, i):
12-
#๊ธฐ๋ณธ ์กฐ๊ฑด ํ™•์ธ
13-
# ๋‹จ์–ด์˜ ๋ชจ๋“  ๋ฌธ์ž๋ฅผ ์ฐพ์€ ๊ฒฝ์šฐ ์„ฑ๊ณต
14-
if i == len(word):
15-
return True
16-
17-
#์œบํšจ์„ฑ ๊ฒ€์‚ฌ
18-
# ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚˜๊ฑฐ๋‚˜ ์ด๋ฏธ ๋ฐฉ๋ฌธํ–ˆ๊ฑฐ๋‚˜ ํ˜„์žฌ ์…€์˜ ๋ฌธ์ž๊ฐ€ ๋‹จ์–ด์˜ ํ˜„์žฌ ๋ฌธ์ž์™€ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ
19-
if (r < 0 or c < 0 or
20-
r >= rows or c >= cols or
21-
(r, c) in visited or
22-
board[r][c] != word[i]):
23-
return False
24-
25-
# ํ˜„์žฌ ์…€์„ ๋ฐฉ๋ฌธํ–ˆ๋‹ค๊ณ  ํ‘œ์‹œ
26-
visited.add((r, c))
27-
28-
# ์ƒํ•˜์ขŒ์šฐ ๋ฐฉํ–ฅ์œผ๋กœ ํƒ์ƒ‰
29-
result = (dfs(r + 1, c, i + 1) or # ์•„๋ž˜
30-
dfs(r - 1, c, i + 1) or # ์œ„
31-
dfs(r, c + 1, i + 1) or # ์˜ค๋ฅธ์ชฝ
32-
dfs(r, c - 1, i + 1)) # ์™ผ์ชฝ
33-
34-
# ๋ฐฑํŠธ๋ž˜ํ‚น: ํ˜„์žฌ ์…€์„ ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ๊ฒƒ์œผ๋กœ ํ‘œ์‹œ
35-
#ํ˜„์žฌ ๊ฒฝ๋กœ๊ฐ€ ์‹คํŒจํ–ˆ์œผ๋ฏ€๋กœ ๋ฐฉ๋ฌธ ํ‘œ์‹œ ์ œ๊ฑฐ
36-
visited.remove((r, c))
37-
38-
return result
8+
#์™„์ „ํžˆ ์ •๋ ฌ๋˜์–ด ๋ฐฐ์—ด์ด ํšŒ์ „๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ, ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๊ฐ€ ์ตœ์†Œ๊ฐ’
9+
if nums[left] < nums[right]:
10+
return nums[left]
3911

40-
# ๋ณด๋“œ์˜ ๋ชจ๋“  ์…€์—์„œ ์‹œ์ž‘์ ์œผ๋กœ ์‹œ๋„
41-
for r in range(rows):
42-
for c in range(cols):
43-
if dfs(r, c, 0):
44-
return True
12+
# ์ด์ง„ ํƒ์ƒ‰ ์‹คํ–‰ : left < right์ธ ๋™์•ˆ ๋ฐ˜๋ณต๋˜๋ฉฐ, ๊ฒ€์ƒ‰ ๋ฒ”์œ„๊ฐ€ 1๊ฐœ ์ด์ƒ์˜ ์š”์†Œ๋ฅผ ํฌํ•จํ•  ๋•Œ๊นŒ์ง€ ๊ณ„์†๋จ
13+
while left < right:
14+
# ์ค‘๊ฐ„ ์ธ๋ฑ์Šค ๊ณ„์‚ฐ : ์ค‘๊ฐ„๊ฐ’๊ณผ ์˜ค๋ฅธ์ชฝ ๋๊ฐ’ ๋น„๊ต ํ›„, ๋น„๊ต ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ ๊ฒ€์ƒ‰ ๋ฒ”์œ„ ์กฐ์ •
15+
mid = (left + right) // 2
16+
17+
# ์ค‘๊ฐ„๊ฐ’์ด ์˜ค๋ฅธ์ชฝ ๊ฐ’๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ
18+
# -> ์ตœ์†Œ๊ฐ’์€ ์ค‘๊ฐ„๊ฐ’ ์˜ค๋ฅธ์ชฝ์— ์žˆ์Œ
19+
if nums[mid] > nums[right]:
20+
left = mid + 1
21+
# ์ค‘๊ฐ„๊ฐ’์ด ์˜ค๋ฅธ์ชฝ ๊ฐ’๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ๊ฒฝ์šฐ
22+
# -> ์ตœ์†Œ๊ฐ’์€ ์ค‘๊ฐ„๊ฐ’ ํฌํ•จ ์™ผ์ชฝ์— ์žˆ์Œ
23+
else:
24+
right = mid
4525

46-
return False
26+
# ์ตœ์ข…์ ์œผ๋กœ ์ฐพ์€ ์ตœ์†Œ๊ฐ’ ๋ฐ˜ํ™˜
27+
return nums[left]
28+
29+
# ํ…Œ์ŠคํŠธ ์ฝ”๋“œ
30+
print(Solution().findMin([3, 4, 5, 1, 2])) # ์ถœ๋ ฅ: 1
31+
print(Solution().findMin([4, 5, 6, 7, 0, 1, 2])) # ์ถœ๋ ฅ: 0
32+
print(Solution().findMin([1])) # ์ถœ๋ ฅ: 1
33+
34+
35+
#์‹œ๊ฐ„ ๋ณต์žก๋„ (Time Complexity): O(log n)
36+
#์ด์œ :
37+
#์ด์ง„ ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‚ฌ์šฉ
38+
#๊ฐ ๋‹จ๊ณ„๋งˆ๋‹ค ๊ฒ€์ƒ‰ ๋ฒ”์œ„๊ฐ€ ์ ˆ๋ฐ˜์œผ๋กœ ์ค„์–ด๋“ฆ
39+
#n๊ฐœ์˜ ์š”์†Œ๋ฅผ logโ‚‚n ๋ฒˆ์˜ ๋น„๊ต๋กœ ๊ฒ€์ƒ‰
40+
#์˜ˆ์‹œ:
41+
#n = 8: ์ตœ๋Œ€ 3๋ฒˆ์˜ ๋น„๊ต (logโ‚‚8 = 3)
42+
#n = 16: ์ตœ๋Œ€ 4๋ฒˆ์˜ ๋น„๊ต (logโ‚‚16 = 4)
43+
#๋”ฐ๋ผ์„œ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(log n)
44+
#๊ณต๊ฐ„ ๋ณต์žก๋„ (Space Complexity): O(1)
45+
#์ด์œ :
46+
#์ถ”๊ฐ€์ ์ธ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ
47+
#์‚ฌ์šฉํ•˜๋Š” ๋ณ€์ˆ˜:
48+
#left, right, mid: ์ƒ์ˆ˜ ๊ฐœ์ˆ˜์˜ ์ •์ˆ˜ ๋ณ€์ˆ˜
49+
#์ž…๋ ฅ ํฌ๊ธฐ์™€ ๊ด€๊ณ„์—†์ด ์ผ์ •ํ•œ ๋ฉ”๋ชจ๋ฆฌ๋งŒ ์‚ฌ์šฉ
50+
#๋”ฐ๋ผ์„œ ๊ณต๊ฐ„ ๋ณต์žก๋„๋Š” O(1)
4751

48-
#์‹œ๊ฐ„ ๋ณต์žก๋„ (Time Complexity): O(m * n * 4^L)
49-
#m: ๋ณด๋“œ์˜ ํ–‰ ์ˆ˜
50-
#n: ๋ณด๋“œ์˜ ์—ด ์ˆ˜
51-
#L: ๋‹จ์–ด์˜ ๊ธธ์ด
52-
#์ด์œ :
53-
#๊ฐ ์…€์—์„œ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Œ: O(m * n)
54-
#๊ฐ ์œ„์น˜์—์„œ 4๋ฐฉํ–ฅ์œผ๋กœ ํƒ์ƒ‰ ๊ฐ€๋Šฅ: O(4^L)
55-
#์ตœ์•…์˜ ๊ฒฝ์šฐ ๋ชจ๋“  ๊ฒฝ๋กœ๋ฅผ ํƒ์ƒ‰ํ•ด์•ผ ํ•จ
56-
#๋”ฐ๋ผ์„œ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(m * n * 4^L)
57-
#๊ณต๊ฐ„ ๋ณต์žก๋„ (Space Complexity): O(L)
58-
#L: ๋‹จ์–ด์˜ ๊ธธ์ด
59-
#์ด์œ :
60-
#์žฌ๊ท€ ํ˜ธ์ถœ ์Šคํƒ์˜ ๊นŠ์ด๋Š” ๋‹จ์–ด์˜ ๊ธธ์ด์— ๋น„๋ก€
61-
#visited ์ง‘ํ•ฉ์˜ ํฌ๊ธฐ๋„ ๋‹จ์–ด์˜ ๊ธธ์ด์— ๋น„๋ก€
62-
#๋”ฐ๋ผ์„œ ๊ณต๊ฐ„ ๋ณต์žก๋„๋Š” O(L)
63-
#DFS vs BFS ๋น„๊ต:
64-
#DFS (๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰):
65-
#ํ•œ ๊ฒฝ๋กœ๋ฅผ ๋๊นŒ์ง€ ํƒ์ƒ‰
66-
#์Šคํƒ/์žฌ๊ท€ ์‚ฌ์šฉ
67-
#๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์ด ์ ์Œ
68-
#์ตœ๋‹จ ๊ฒฝ๋กœ ๋ณด์žฅํ•˜์ง€ ์•Š์Œ
69-
#BFS (๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰):
70-
#๊ฐ™์€ ๋ ˆ๋ฒจ์˜ ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ๋จผ์ € ํƒ์ƒ‰
71-
#ํ ์‚ฌ์šฉ
72-
#๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์ด ๋งŽ์Œ
73-
#์ตœ๋‹จ ๊ฒฝ๋กœ ๋ณด์žฅ
7452

7553

7654

0 commit comments

Comments
ย (0)