@@ -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