Skip to content

Commit b37ae9b

Browse files
authored
Merge pull request #432 from haklee/main
[haklee] week 4
2 parents 7b991fd + 80c282b commit b37ae9b

File tree

5 files changed

+212
-0
lines changed

5 files changed

+212
-0
lines changed
+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
"""TC: O(n), SC: O(n)
2+
3+
์•„์ด๋””์–ด:
4+
- nums ์•ˆ์—๋Š” ์—ฌ๋Ÿฌ consecutive sequence(์ดํ•˜ cs)๊ฐ€ ์กด์žฌํ•  ๊ฒƒ์ด๋‹ค(๊ธธ์ด 1์ธ ๊ฒƒ๊นŒ์ง€ ํฌํ•จ).
5+
- ์ด cs๋Š” ๋ชจ๋‘ ์ œ์ผ ์•ž ์ˆซ์ž๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
6+
- ์ œ์ผ ์•ž ์ˆซ์ž๋Š” ๊ทธ ์ˆซ์ž ๋ฐ”๋กœ ์•ž์— ์ˆซ์ž๊ฐ€ ์—†๋‹ค๋Š” ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
7+
- ์ฆ‰, i๊ฐ€ ์ œ์ผ ์•ž ์ˆซ์ž๋ผ๋ฉด i-1์€ nums ์•ˆ์— ์—†๋‹ค.
8+
- nums์—์„œ ์ œ์ผ ์•ž ์ˆซ์ž๋ฅผ ์ฐพ์€ ๋‹ค์Œ, ์ด ์ˆซ์ž๋ถ€ํ„ฐ ๋’ค๋กœ ์ด์–ด์ง€๋Š” cs๋ฅผ ์ฐพ์•„์„œ ๊ธธ์ด๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.
9+
- cs์˜ ๊ธธ์ด ์ค‘ ์ œ์ผ ๊ธด ๊ฒƒ์„ ์ฐพ์•„์„œ ๋ฆฌํ„ดํ•˜๋ฉด ๋œ๋‹ค.
10+
11+
SC:
12+
- set(nums)์—์„œ O(n).
13+
- ์œ„ set์—์„œ ๋ชจ๋“  ์•„์ดํ…œ์„ ๋Œ๋ฉด์„œ i-1์ด set ์•ˆ์— ํฌํ•จ๋˜์ง€ ์•Š๋Š” i๋ฅผ ์ฐพ์•„์„œ ๋ฆฌ์ŠคํŠธ๋กœ ๋งŒ๋“ค๋•Œ O(n).
14+
- ์ด O(n).
15+
16+
TC:
17+
- set(nums)์—์„œ O(n).
18+
- ์œ„ set์—์„œ ๋ชจ๋“  ์•„์ดํ…œ์„ ๋Œ๋ฉด์„œ i-1์ด set ์•ˆ์— ํฌํ•จ๋˜์ง€ ์•Š๋Š” i๋ฅผ ์ฐพ๋Š” ๋ฐ์— O(n).
19+
- ๊ฐ cs์˜ ์ œ์ผ ์•ž ์ˆซ์ž๋ถ€ํ„ฐ ์ด์–ด์ง€๋Š” ์ˆซ์ž๋“ค์ด set ์•ˆ์— ์žˆ๋Š”์ง€ ์ฒดํฌํ•˜๋Š” ๋ฐ์— ์ด O(n).
20+
- ์ด O(n).
21+
"""
22+
23+
24+
class Solution:
25+
def longestConsecutive(self, nums: List[int]) -> int:
26+
s = set(nums) # TC:O(n), SC:O(n)
27+
seq_start_candidate = [i for i in s if i - 1 not in s] # TC:O(n), SC:O(n)
28+
sol = 0
29+
30+
# ์•„๋ž˜์˜ for๋ฌธ ๋‚ด์—์„œ๋Š” s์— ์†ํ•œ ์•„์ดํ…œ์— ํ•œ ๋ฒˆ์”ฉ ์ ‘๊ทผํ•œ๋‹ค. TC:O(n)
31+
for i in seq_start_candidate:
32+
seq_len = 1
33+
while i + seq_len in s:
34+
seq_len += 1
35+
sol = max(seq_len, sol)
36+
return sol
+65
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
"""TC: O(n), SC: O(1)
2+
3+
โ€ป ์ฝ”๋“œ๋ฅผ ๋ณด๊ณ  ๋Œ€์ถฉ ๋ญ˜ ํ–ˆ๋Š”์ง€ ๊ฐ์„ ์žก์€ ๋‹ค์Œ์— ์•„๋ž˜์˜ ์•„์ด๋””์–ด์—์„œ p, n ๊ตฌ๊ฐ„์ด ๋‚˜์˜ค๋Š” ๋ถ€๋ถ„๋งŒ ๋ณด๋ฉด
4+
์ข€ ๋” ๋น ๋ฅธ ์ดํ•ด๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.
5+
6+
์•„์ด๋””์–ด:
7+
- ๊ณฑ์— 0์ด ์„ž์ด๋ฉด ์•„๋ฌด๋ฆฌ ๋งŽ์€ ์ˆ˜๋ฅผ ๊ณฑํ•ด๋„ ๊ฒฐ๊ณผ๋Š” 0์ด๋‹ค.
8+
- 0์ด ๋“ฑ์žฅํ•˜์ง€ ์•Š๋Š” ์–ด๋–ค subarray๊ฐ€ ์ฃผ์–ด์กŒ๋‹ค๊ณ  ํ•˜์ž.
9+
- ์—ฌ๊ธฐ์— ์Œ์ˆ˜๊ฐ€ ์ง์ˆ˜ ๋ฒˆ ๋“ฑ์žฅํ•˜๋ฉด ๋ชจ๋“  ์ˆซ์ž๋ฅผ ๊ณฑํ•œ ๊ฒƒ์ด ๊ฐ€์žฅ ํฐ ๊ณฑ์ด ๋œ๋‹ค.
10+
- ์Œ์ˆ˜๊ฐ€ ํ™€์ˆ˜ ๋ฒˆ, ์ด r๋ฒˆ ๋“ฑ์žฅํ•œ๋‹ค๊ณ  ํ•ด๋ณด์ž. ์ด ๋ฐฐ์—ด์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌ์กฐํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.
11+
- ์–‘์ˆ˜๋ฅผ p, ์Œ์ˆ˜๋ฅผ n์ด๋ผ๊ณ  ํ‘œํ˜„ํ•˜์ž.
12+
- ์ด ๋ฐฐ์—ด์€ [p, ..., p, n, p, ... p, n, ..., n, p, ..., p] ๊ผด๋กœ ํ‘œํ˜„์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
13+
์ด๋•Œ, n์€ ์ด r๋ฒˆ ๋“ฑ์žฅํ•˜๊ณ , n์€ p๊ฐ€ ์—ฌ๋Ÿฌ ๋ฒˆ(0๋ฒˆ๋„ ๊ฐ€๋Šฅ) ๋“ฑ์žฅํ•˜๋Š” ๋ฌถ์Œ ์‚ฌ์ด์— ์กด์žฌํ•œ๋‹ค.
14+
- p๊ฐ€ ์—ฌ๋Ÿฌ ๋ฒˆ(0๋ฒˆ๋„ ๊ฐ€๋Šฅ) ๋“ฑ์žฅํ•˜๋Š” ๊ฒƒ์„ P๋ผ๊ณ  ๋ฌถ์–ด์„œ ํ‘œํ˜„ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
15+
- [(P), n, (P), n, ..., n, (P), n, (P)]
16+
- n์„ ์ง์ˆ˜ ๋ฒˆ ๊ณฑํ•ด์•ผ ์–‘์ˆ˜๊ฐ€ ๋‚˜์˜จ๋‹ค. ์—ฐ์†๋œ ๊ฐ’์„ ์ตœ๋Œ€ํ•œ ๋งŽ์ด ๊ณฑํ•˜๋ ค๊ณ  ํ•˜๋ฏ€๋กœ, ํ•œ์ชฝ ๋์—
17+
๋“ฑ์žฅํ•˜๋Š” n์„ ๋บ€ ๋‚˜๋จธ์ง€ n๋“ค์„ ๊ณฑํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์€ ์ „๋žต์ด๋‹ค.
18+
- ์œ„์˜ ์ „๋žต์— ๋”ฐ๋ผ ๋ฐฐ์—ด์˜ ์ˆซ์ž๋ฅผ ๊ณฑํ•˜๋ ค๊ณ  ํ•˜๋ฉด ๋‹ค์Œ ๋‘˜ ์ค‘ ํ•˜๋‚˜๊ฐ€ ๊ฐ€์žฅ ํฐ ์ˆซ์ž๋‹ค.
19+
- [(P), n, (P), n, ..., n, (P), n, (P)]
20+
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
21+
์ด ๊ตฌ๊ฐ„์˜ ์ˆซ์ž๋“ค์„ ๋ชจ๋‘ ๊ณฑํ•จ
22+
- [(P), n, (P), n, ..., n, (P), n, (P)]
23+
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
24+
์ด ๊ตฌ๊ฐ„์˜ ์ˆซ์ž๋“ค์„ ๋ชจ๋‘ ๊ณฑํ•จ
25+
- ์ฆ‰, ์•ž์—์„œ๋ถ€ํ„ฐ ์ˆซ์ž๋ฅผ ๊ณ„์† ๊ณฑํ•˜๋ฉด์„œ max๊ฐ’์„ ์ฐพ์€ ๊ฒƒ, ํ˜น์€ ๋’ค์—์„œ๋ถ€ํ„ฐ ์ˆซ์ž๋ฅผ ๊ณ„์†
26+
๊ณฑํ•˜๋ฉด์„œ max๊ฐ’์„ ์ฐพ์€ ๊ฒƒ, ๋‘˜ ์ค‘ ํ•˜๋‚˜๊ฐ€ ์œ„์˜ ๊ตฌ๊ฐ„์—์„œ์˜ ์ตœ๋Œ€ ๊ณฑ์…ˆ ๊ฐ’์ด ๋œ๋‹ค.
27+
- ์šฐ๋ฆฌ์—๊ฒŒ ์ฃผ์–ด์ง„ ์ „์ฒด array๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ‘œํ˜„ ๊ฐ€๋Šฅํ•˜๋‹ค.
28+
- 0์ด ๋“ฑ์žฅํ•˜์ง€ ์•Š๋Š” ๊ธธ์ด 1 ์ด์ƒ์˜ subarray๋ฅผ (S), 0์œผ๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„ ๊ธธ์ด 0 ์ด์ƒ์˜ subarray๋ฅผ
29+
(0)์ด๋ผ๊ณ  ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ํ‘œํ˜„์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
30+
- [(0), (S), (0), (S), ..., (S), (0), (S), (0)]
31+
- ์ „์ฒด array์—์„œ ์ตœ๋Œ€ subarray ๊ณฑ์€ 0์ด๊ฑฐ๋‚˜, ํ˜น์€ ์œ„์˜ ๊ฐ S์—์„œ์˜ ์ตœ๋Œ€ ๊ณฑ๋“ค ์ค‘ ์ตœ๋Œ€ ๊ฐ’์ด๋‹ค.
32+
- ์œ„์˜ ์•„์ด๋””์–ด๋ฅผ ํ™œ์šฉํ•˜๋ฉด ๋‹ค์Œ์˜ ๋ฐฉ์‹์œผ๋กœ ์ตœ๋Œ€ subarray์˜ ๊ณฑ์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.
33+
- nums์˜ ์•ž์—์„œ๋ถ€ํ„ฐ ์ˆซ์ž๋ฅผ ํ•˜๋‚˜์”ฉ ๊ณฑํ•ด๊ฐ€๋ฉด์„œ ์ตœ๋Œ€ ๊ณฑ์„ ์ฐพ์Œ. ๋‹จ, ์ค‘๊ฐ„์— 0์ด ๋‚˜์™€์„œ ์ตœ๋Œ€ ๊ณฑ
34+
๊ฐ’์ด 0์ด ๋˜์—ˆ์„ ๊ฒฝ์šฐ ์ด๋ฅผ ๋‹ค์‹œ 1๋กœ ๋ฐ”๊ฟ”์ค˜์„œ ์œ„์˜ ์•„์ด๋””์–ด๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ธํŒ….
35+
- ๋˜‘๊ฐ™์€ ์ž‘์—…์„ nums์˜ ๋’ค์—์„œ๋ถ€ํ„ฐ ์ˆซ์ž๋ฅผ ํ•˜๋‚˜์”ฉ ๊ณฑํ•ด๊ฐ€๋ฉด์„œ ์ง„ํ–‰ํ•จ.
36+
37+
38+
SC:
39+
- solution์„ ์ €์žฅํ•˜๋Š” ๋ฐ์— O(1).
40+
- ๊ณฑ์…ˆ ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ๋ฐ์— O(1).
41+
- ์ด O(1).
42+
43+
TC:
44+
- ๋ฆฌ์ŠคํŠธ๋ฅผ ์•ž์—์„œ๋ถ€ํ„ฐ ์ˆœํšŒํ•˜๋ฉด์„œ ๊ณฑ/max ์—ฐ์‚ฐ. O(n).
45+
- ๋ฆฌ์ŠคํŠธ๋ฅผ ๋’ค์—์„œ๋ถ€ํ„ฐ ์ˆœํšŒํ•˜๋ฉด์„œ ๊ณฑ/max ์—ฐ์‚ฐ. O(n).
46+
- ์ด O(n).
47+
"""
48+
49+
50+
class Solution:
51+
def maxProduct(self, nums: List[int]) -> int:
52+
sol = nums[0]
53+
p = 1
54+
for i in nums:
55+
if p == 0:
56+
p = 1
57+
p *= i
58+
sol = max(p, sol)
59+
p = 1
60+
for i in reversed(nums):
61+
if p == 0:
62+
p = 1
63+
p *= i
64+
sol = max(p, sol)
65+
return sol

โ€Žmissing-number/haklee.py

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
"""TC: O(n), SC: O(n)
2+
3+
์•„์ด๋””์–ด:
4+
- [0, ..., n]์—์„œ ํ•œ ์ˆซ์ž๋งŒ ๋น ์ ธ์žˆ๋Š” ์ƒํ™ฉ.
5+
- [0, ..., n]์„ set์œผ๋กœ ๋งŒ๋“  ๋‹ค์Œ ํŠน์ • ์ˆซ์ž๊ฐ€ ์ด set์— ์žˆ๋Š”์ง€ ์ฒดํฌํ•˜๋ฉด ๋œ๋‹ค.
6+
- ๊ทธ๋Ÿฐ๋ฐ ๊ทธ๋ ‡๊ฒŒ ๊ตฌํ˜„ํ•˜๋‚˜ ์œ„ set์—์„œ set(nums)๋ฅผ ๋นผ๊ณ  ๋‚จ์€ ์ˆซ์ž๋ฅผ ์ทจํ•˜๋‚˜ ์ตœ์•…์˜ ๊ฒฝ์šฐ
7+
๊ฐ™์€ ์„ฑ๋Šฅ์ด ๋‚˜์˜ฌํ…Œ๋‹ˆ ๋” ์ฝ”๋“œ๊ฐ€ ์งง์•„์ง€๋„๋ก ํ›„์ž์˜ ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ•ด๋ณด์ž.
8+
9+
10+
SC:
11+
- [0, ..., n]์œผ๋กœ set์„ ๋งŒ๋“œ๋Š” ๋ฐ์— O(n).
12+
- set(nums)์—์„œ O(n).
13+
- ์ด O(n).
14+
15+
TC:
16+
- [0, ..., n]์œผ๋กœ set์„ ๋งŒ๋“œ๋Š” ๋ฐ์— O(n).
17+
- set(nums)์—์„œ O(n).
18+
- set์— difference(์•„๋ž˜ ์ฝ”๋“œ์—์„œ๋Š” `-`)๋ฅผ ํ•˜๋Š” ๋ฐ์— O(n).
19+
- set์— pop์„ ํ•˜๋Š” ๋ฐ์— O(1).
20+
- ์ด O(n).
21+
"""
22+
23+
24+
class Solution:
25+
def missingNumber(self, nums: List[int]) -> int:
26+
return (set(range(len(nums) + 1)) - set(nums)).pop()

โ€Žvalid-palindrome/haklee.py

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
"""TC: O(n), SC: O(n)
2+
3+
์•„์ด๋””์–ด:
4+
๋ฌธ์ž์—ด์„ ๋ณด๊ณ  ์ˆซ์ž ํ˜น์€ ์•ŒํŒŒ๋ฒณ์ธ ๋ฌธ์ž๋งŒ ๋ฝ‘์•„์„œ ์ƒˆ ๋ฌธ์ž์—ด์„ ๋งŒ๋“ค๊ณ , ๋Œ€๋ฌธ์ž๋Š” ์†Œ๋ฌธ์ž๋กœ ๋ฐ”๊พผ๋‹ค.
5+
๊ตฌํ˜„์ด ์–ด๋ ต์ง€๋Š” ์•Š์ง€๋งŒ ๊ท€์ฐฎ์„ ์ˆ˜ ์žˆ๋Š”๋ฐ, python์—๋Š” ์œ„ ๊ณผ์ •์„ `isalnum()`, `lower()` ํ•จ์ˆ˜๋กœ
6+
์‰ฝ๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ์ƒˆ๋กœ ๋งŒ๋“  ๋ฌธ์ž์—ด์„ ๋’ค์ง‘์–ด์„œ ์›๋ž˜ ๋ฌธ์ž์—ด๊ณผ ๊ฐ™์€์ง€ ํ™•์ธํ•˜๋ฉด ๋œ๋‹ค.
7+
8+
9+
SC:
10+
- ๋ฌธ์ž์—ด์„ ํ•„์š”ํ•œ ๋ฌธ์ž๋งŒ ๋‚จ๊ธฐ๋Š” ๊ณผ์ •์—์„œ O(n).
11+
- ๋ฌธ์ž์—ด์„ ๋’ค์ง‘์–ด์„œ ์ €์žฅ. O(n).
12+
- ์ฆ‰, O(n).
13+
14+
TC:
15+
- ๋ฌธ์ž์—ด์„ ํ•„์š”ํ•œ ๋ฌธ์ž๋งŒ ๋‚จ๊ธฐ๋Š” ๊ณผ์ •์—์„œ O(n).
16+
- ๋ฌธ์ž์—ด ๋’ค์ง‘๊ธฐ. O(n).
17+
- ์ƒˆ๋กœ ๋งŒ๋“  ๋ฌธ์ž์—ด๊ณผ ๋’ค์ง‘์€ ๋ฌธ์ž์—ด palindrome ์ฒดํฌ. O(n).
18+
- ์ฆ‰, O(n).
19+
"""
20+
21+
22+
class Solution:
23+
def isPalindrome(self, s: str) -> bool:
24+
return (l := [c.lower() for c in s if c.isalnum()]) == l[::-1]

โ€Žword-search/haklee.py

+61
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
"""TC: O(m * n * (4^l)), SC: O(m * n)
2+
3+
์•„์ด๋””์–ด:
4+
- ๊ฒฉ์žํŒ์˜ ๊ฐ ์นธ์„ ๋…ธ๋“œ๋กœ, ์ด์›ƒํ•œ ์นธ๋“ค์˜ ๊ด€๊ณ„๋ฅผ ์—ฃ์ง€๋กœ ์ƒ๊ฐํ•˜๋ฉด ๊ฒฉ์žํŒ์„ ๊ทธ๋ž˜ํ”„๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
5+
- ์œ„ ๊ทธ๋ž˜ํ”„์—์„œ dfs๋ฅผ ๋Œ๋ฆฐ๋‹ค.
6+
- ์ด๋•Œ, ๊ธฐ์กด์— ๋ฐฉ๋ฌธํ–ˆ๋˜ ๋…ธ๋“œ๋ฅผ ์žฌ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š๋„๋ก visited๋ผ๋Š” 2์ฐจ์› ๋ฐฐ์—ด์„ ๊ฐ™์ด ๊ด€๋ฆฌํ•ด์ฃผ์ž.
7+
8+
SC:
9+
- visited ๋ฐฐ์—ด์—์„œ O(m * n)
10+
- ํ˜ธ์ถœ ์Šคํƒ์€ ์ฐพ๊ณ ์ž ํ•˜๋Š” ๋‹จ์–ด์˜ ๊ธธ์ด l, ์ฆ‰, O(l).
11+
- ๊ทธ๋Ÿฐ๋ฐ l์ด ๊ฒฉ์ž ์ „์ฒด ์นธ ๊ฐœ์ˆ˜๋ณด๋‹ค ํด ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๋ฌด์‹œ ๊ฐ€๋Šฅ.
12+
- ์ด O(m * n).
13+
14+
TC:
15+
- visited ๋ฐฐ์—ด ์„ธํŒ…, O(m * n)
16+
- dfs, ์ตœ์•…์˜ ๊ฒฝ์šฐ
17+
- ๋‹จ์–ด๋ฅผ ์ฐพ๋Š” ์‹œ๋„๋ฅผ ํ•˜๋Š” ๋ฐ์— 4^l ๋งŒํผ์˜ ํƒ์ƒ‰์ด ๊ฑธ๋ฆผ
18+
- ๊ทธ๋Ÿฐ๋ฐ ๋‹ต์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ์‹œ์ž‘ ์นธ์„ ํ•˜ํ•„ ์ œ์ผ ๋งˆ์ง€๋ง‰์œผ๋กœ ํƒ์ƒ‰ํ•œ ๊ฒฝ์šฐ ์œ„์˜ ์‹œ๋„๋ฅผ m*n๋ฒˆ ํ•ด์•ผํ•จ
19+
- ์ฆ‰, O(m * n * (4^l))
20+
- ์ด O(m * n * (4^l))
21+
"""
22+
23+
24+
class Solution:
25+
def exist(self, board: List[List[str]], word: str) -> bool:
26+
r, c = len(board), len(board[0])
27+
visited = [[False for _ in range(c)] for _ in range(r)]
28+
29+
def search(ind: int, pos: tuple[int, int]) -> bool:
30+
if ind == len(word):
31+
# ์ฐพ๋Š” ๋ฐ์— ์„ฑ๊ณต.
32+
return True
33+
34+
if not (0 <= pos[0] < r and 0 <= pos[1] < c):
35+
# ๊ฒฉ์žํŒ์„ ๋ฒ—์–ด๋‚จ.
36+
return False
37+
38+
if visited[pos[0]][pos[1]]:
39+
# ์ด๋ฏธ ๋ฐฉ๋ฌธํ•จ.
40+
return False
41+
42+
if word[ind] != board[pos[0]][pos[1]]:
43+
# ๊ธ€์ž๊ฐ€ ์•ˆ ๋งž์Œ.
44+
return False
45+
46+
visited[pos[0]][pos[1]] = True # ๋ฐฉ๋ฌธํ•œ ๊ฒƒ์œผ๋กœ ์ฒดํฌ
47+
48+
found = (
49+
search(ind + 1, (pos[0] - 1, pos[1])) # ์ƒ
50+
or search(ind + 1, (pos[0] + 1, pos[1])) # ํ•˜
51+
or search(ind + 1, (pos[0], pos[1] - 1)) # ์ขŒ
52+
or search(ind + 1, (pos[0], pos[1] + 1)) # ์šฐ
53+
) # ๋‹ค์Œ ๊ธ€์ž ์ฐพ๊ธฐ
54+
55+
# ์•ž์—์„œ ๋ชป ์ฐพ์•˜์„ ๊ฒฝ์šฐ์—๋Š” ๋ฐฉ๋ฌธ์„ ํ•ด์ œํ•ด์•ผ ํ•œ๋‹ค.
56+
# ์ฐพ์€ ๊ฒฝ์šฐ์—๋Š” ๋ฐฉ๋ฌธ์„ ํ•ด์ œํ•˜๋“  ๋ง๋“  ์ƒ๊ด€ ์—†์Œ.
57+
visited[pos[0]][pos[1]] = False
58+
59+
return found
60+
61+
return any(search(0, (i, j)) for i in range(r) for j in range(c))

0 commit comments

Comments
ย (0)