Skip to content

Commit 6426e9e

Browse files
authored
Merge pull request #2202 from liza0525/main
[liza0525] WEEK 06 solutions
2 parents 38e674e + c25e40a commit 6426e9e

File tree

2 files changed

+94
-0
lines changed

2 files changed

+94
-0
lines changed
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# ์‹œ๊ฐ„ ๋ณต์žก๋„: O(n)
2+
# - two point ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ ์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—, height์˜ ๊ธธ์ด n๋งŒํผ์˜ ์‹œ๊ฐ„๋ณต์žก๋„ ์‚ฌ์šฉ
3+
# ๊ณต๊ฐ„ ๋ณต์žก๋„: O(1)
4+
# - ์ž…๋ ฅ ๋ฆฌ์ŠคํŠธ ์™ธ์— ์ƒ์ˆ˜ ๊ฐœ์ˆ˜์˜ ๋ณ€์ˆ˜๋งŒ ์‚ฌ์šฉ
5+
6+
class Solution:
7+
# x์˜ ๊ธธ์ด๋ฅผ ๋ณ€ํ™” ์‹œํ‚ฌ ๋•Œ ๋†’์ด๋ฅผ ๊ณ ๋ คํ•˜๋ฉฐ ๋ณ€ํ™” ์‹œํ‚จ๋‹ค.
8+
# ์ด ๋•Œ start ๋˜๋Š” end๋ฅผ ์˜ฎ๊ธฐ๋Š” ๊ธฐ์ค€์€ ๊ฐ ํฌ์ธํŠธ์—์„œ์˜ ๋†’์ด ์ค‘ ์ž‘์€ ๊ฒƒ์„ ์˜ฎ๊ธด๋‹ค.
9+
# ์™œ๋ƒํ•˜๋ฉด, ํ•ด๋‹น ๋ฌธ์ œ์—์„œ ๋†’์ด๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์€ ๋†’์ด๊ฐ€ ์ž‘์€ ์ชฝ์ด๋ฉฐ,
10+
# ๋†’์ด๊ฐ€ ๋†’์€ ๊ฒƒ์„ ์˜ฎ๊ฒจ๋ดค์ž ๊ฐ€๋กœ ๊ธธ์ด๋งŒ ์งง์•„์ ธ ์˜คํžˆ๋ ค ๋„“์ด๋Š” ์ถ•์†Œ๊ฐ€ ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
11+
def maxArea(self, height: List[int]) -> int:
12+
start = 0
13+
end = len(height) - 1
14+
result_area = (end - start) * min(height[start], height[end])
15+
16+
while start < end:
17+
if height[start] < height[end]:
18+
# start ์ชฝ์˜ ๋†’์ด๊ฐ€ ๋‚ฎ์„ ๋• start๋ฅผ ์˜ฎ๊น€
19+
start += 1
20+
else:
21+
# end ์ชฝ์˜ ๋†’์ด๊ฐ€ ๋‚ฎ์„ ๋• end๋ฅผ ์˜ฎ๊น€(๊ฐ™์„ ๋•Œ๋Š” ๋ญ˜ ์˜ฎ๊ฒจ๋„ ์ƒ๊ด€ ์—†์Œ)
22+
end -= 1
23+
24+
# ์˜ฎ๊ธด ํ›„์˜ ๋„’์ด๊ฐ€, ์ง€๊ธˆ๊นŒ์ง€ ๊ณ„์‚ฐํ•œ ๋„“์ด๋ณด๋‹ค ๋„“์–ด์ง„ ๊ฒƒ์ธ์ง€ ํ™•์ธํ•˜์—ฌ ๋” ํฐ์ˆ˜๋ฅผ
25+
# result_area์— ์ €์žฅํ•จ
26+
result_area = max(
27+
(end - start) * min(height[start], height[end]),
28+
result_area
29+
)
30+
31+
return result_area
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
# ์‹œ๊ฐ„ ๋ณต์žก๋„: O(n)
2+
# - s์˜ ๊ธธ์ด๋งŒํผ ํƒ์ƒ‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์—
3+
# ๊ณต๊ฐ„ ๋ณต์žก๋„: O(n)
4+
# - stack์„ list๋กœ ์‚ฌ์šฉํ•˜๋ฉฐ s[:-1]๊นŒ์ง€ ๋ชจ๋“  ๋‹ค๋ฅธ ์™ผ์ชฝ ๊ด„ํ˜ธ์ผ ๋•Œ O(n)๊นŒ์ง€ ๋Š˜์–ด๋‚  ์ˆ˜ ์žˆ์Œ
5+
6+
class Solution:
7+
# ์™ผ์ชฝ ๊ด„ํ˜ธ๋Š” stack์— ์ €์žฅํ•˜๊ณ  ์˜ค๋ฅธ์ชฝ ๊ด„ํ˜ธ๊ฐ€ ๋“ค์–ด์™”์„ ๋•Œ,
8+
# stack์˜ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ๋“ค์–ด์˜จ ์™ผ์ชฝ ๊ด„ํ˜ธ์™€ ์Œ์ด ๋งž๋Š”์ง€ ํ™•์ธํ•˜์—ฌ
9+
# ๋ชจ๋“  ๊ฒฝ์šฐ์— ์Œ์ด ๋งž์œผ๋ฉด ์ด ๋ฌธ์ž์—ด์ด validํ•˜๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.
10+
# ๋งŒ์•ฝ ์œ ํšจ์„ฑ์—์„œ falsyํ•œ ๊ฒฝ์šฐ์—๋Š” early return ํ•ด์ค€๋‹ค.
11+
def isValid(self, s: str) -> bool:
12+
stack = []
13+
14+
for ss in s:
15+
if ss in ('(', '[', '{'):
16+
# ์™ผ์ชฝ ๊ด„ํ˜ธ๋Š” stack์— ์ €์žฅ
17+
stack.append(ss)
18+
else:
19+
# ์˜ค๋ฅธ์ชฝ ๊ด„ํ˜ธ๋Š” stack ๋‚ด๋ถ€ ์š”์†Œ๋ฅผ ํ™•์ธํ•˜์—ฌ ์œ ํšจ์„ฑ ํ™•์ธ
20+
if not stack:
21+
# stack์ด ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” ์Œ์„ ๋งž์ถœ ์™ผ์ชฝ ๊ด„ํ˜ธ๊ฐ€ ์—†์œผ๋ฏ€๋กœ s๊ฐ€ invalidํ•˜๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ์Œ
22+
return False
23+
24+
# stack์˜ ๋งˆ์ง€๋ง‰ ์š”์†Œ์™€ ํ˜„์žฌ ํ™•์ธํ•  ๋ฌธ์ž์—ด์˜ ์Œ์ด ๋งž๋Š”์ง€ ํ™•์ธ
25+
last_ss = stack[-1]
26+
if any([
27+
last_ss == '(' and ss == ')',
28+
last_ss == '[' and ss == ']',
29+
last_ss == '{' and ss == '}',
30+
]):
31+
# ์Œ์ด ๋งž๋‹ค๋ฉด stack์˜ ๋งˆ์ง€๋ง‰ ๋ฌธ์ž์—ด์€ pop
32+
stack.pop()
33+
else:
34+
# ์Œ์ด ์•ˆ ๋งž๋Š” ๊ฒฝ์šฐ
35+
return False
36+
if stack:
37+
# ๋ชจ๋“  ๋ฌธ์ž์—ด์„ ๋Œ์•˜๋Š”๋ฐ๋„, stack์— ์™ผ์ชฝ ๊ด„ํ˜ธ๊ฐ€ ๋‚จ์•„ ์žˆ๋Š” ๊ฒฝ์šฐ
38+
return False
39+
40+
# ์œ„์˜ ๋ชจ๋“  invalidํ•œ ๊ฒฝ์šฐ๋ฅผ ํ†ต๊ณผํ–ˆ๋‹ค๋ฉด validํ•˜๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.
41+
return True
42+
43+
# ๋ฆฌ๋ทฐ ๋ฐ˜์˜ ํ’€์ด
44+
# ๊ด„ํ˜ธ์˜ ์Œ์„ key-value๋กœ ํ•˜๋Š” pairs ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ์ด์šฉํ•˜์—ฌ, if ์กฐ๊ฑด์„ ๋”์šฑ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Œ
45+
def isValid(self, s: str) -> bool:
46+
stack = []
47+
pairs = {")": "(", "}": "{", "]": "["}
48+
49+
for ss in s:
50+
if ss in ('(', '[', '{'):
51+
stack.append(ss)
52+
else:
53+
if not stack:
54+
return False
55+
56+
last_ss = stack[-1]
57+
if last_ss == pairs[ss]:
58+
stack.pop()
59+
else:
60+
return False
61+
if stack:
62+
return False
63+
return True

0 commit comments

Comments
ย (0)