Skip to content

Commit 1686e63

Browse files
committed
[7th batch] week 6 - container with most water
1 parent 334b8f0 commit 1686e63

1 file changed

Lines changed: 33 additions & 0 deletions

File tree

โ€Žcontainer-with-most-water/liza0525.pyโ€Ž

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,3 +29,36 @@ def maxArea(self, height: List[int]) -> int:
2929
)
3030

3131
return result_area
32+
33+
34+
# 7๊ธฐ ํ’€์ด
35+
# ์‹œ๊ฐ„ ๋ณต์žก๋„: O(n)
36+
# - two point ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ด์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— heights ๋ณ€์ˆ˜์˜ ๊ธธ์ด์ธ n์— ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ์ •ํ•ด์ง
37+
# ๊ณต๊ฐ„ ๋ณต์žก๋„: O(1)
38+
# - ๋ช‡ ๊ฐœ์˜ ๋ณ€์ˆ˜๋งŒ ์‚ฌ์šฉํ•จ
39+
class Solution:
40+
def maxArea(self, height: List[int]) -> int:
41+
# ์–‘ ๋ ํฌ์ธํ„ฐ ์ง€์ •
42+
start, end = 0, len(height) - 1
43+
44+
# max_area๋Š” ํ˜„์žฌ ํฌ์ธํ„ฐ๋“ค์„ ์ด์šฉํ–ˆ์„ ๋•Œ์˜ ๋„“์ด ๊ณ„์‚ฐ
45+
# ์ด๋•Œ ๋†’์ด๋Š” ์ž‘์€ ์ชฝ์œผ๋กœ ์„ ํƒํ•˜์—ฌ ๊ณ„์‚ฐํ•ด์•ผ ํ•จ
46+
max_area = min(height[start], height[end]) * (end - start)
47+
48+
# start๊ฐ€ end๋ณด๋‹ค ์ž‘์„ ๋•Œ ๋ฃจํ”„ ๋Œ๊ธฐ
49+
while start < end:
50+
# ๋ฌธ์ œ์˜ ํ•ต์‹ฌ ์•„์ด๋””์–ด๋Š”, ๋†’์ด๊ฐ€ ํฐ ์ชฝ์„ ์›€์ง์ด๋ฉด ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ตœ์„ ์ด ํ˜„์žฌ๋ณด๋‹ค ํด ์ˆ˜ ์—†๋‹ค.
51+
# ์ด๋Š”, start์˜ ๋†’์ด์™€ end์˜ ๋†’์ด ์ค‘ ํฐ ์ชฝ์˜ ํฌ์ธํ„ฐ๋ฅผ ๊ณ ์ •ํ•˜์—ฌ ์›€์ง์—ฌ์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ
52+
# (๋ฌผ์˜ ๋†’์ด๋Š” ์ž‘์€ ์ชฝ์— ์˜ํ•ด ์ •ํ•ด์ง€๋Š”๋ฐ, ํฐ ์ชฝ ํฌ์ธํ„ฐ๋ฅผ ์›€์ง์ด๋ฉด x ๊ธธ์ด๋งŒ ์งง์•„์ง€๊ฒŒ ๋˜์–ด ์˜คํžˆ๋ ค ๋„“์ด์ด ์ค„์–ด๋“ฆ)
53+
if height[start] < height[end]:
54+
# start ์ชฝ์˜ ๋†’์ด๊ฐ€ ๋‚ฎ์œผ๋ฉด start๋ฅผ ์›€์ง์ž„
55+
start += 1
56+
else:
57+
# end ์ชฝ์˜ ๋†’์ด๊ฐ€ ๋‚ฎ์œผ๋ฉด end๋ฅผ ์›€์ง์ž„
58+
end -= 1
59+
60+
# ํฌ์ธํ„ฐ๋ฅผ ์˜ฎ๊ธฐ๊ณ  ๋‚œ ํ›„์˜ ๋„“์ด๋ฅผ ๊ณ„์‚ฐํ•˜์—ฌ, ๊ธฐ์กด์˜ max_area์™€ ๋น„๊ตํ•˜์—ฌ ํฐ ์ชฝ์œผ๋กœ ์—…๋ฐ์ดํŠธ
61+
curr_area = min(height[start], height[end]) * (end - start)
62+
max_area = max(max_area, curr_area)
63+
64+
return max_area

0 commit comments

Comments
ย (0)