- Reference
- Hard ๋ฌธ์ ๋ผ ๊ทธ๋ฐ์ง ์ด ๊ธฐ๋ฒ์ ์๊ฐํด ๋ด๊ธฐ ๊ฝค ๊น๋ค๋กญ๋ค.
- ์ต๋ ๋์ด๋ ์ฅ๋ฒฝ ์ญํ ์ ํ ์ ์๋ค๋ ์ ์ ํญ์ ๊ธฐ์ตํ๊ณ ์์!
Solution
from typing import List
class Solution:
# ์ต๋ ๋์ด ๋ง๋๋ ์ผ์ชฝ๊ณผ ์ค๋ฅธ์ชฝ์ ๊ฐ๋ฅด๋ ์ฅ๋ฒฝ ์ญํ ์ ํจ
def trap(self, height: List[int]) -> int:
answer = 0
lt, rt = 0, len(height) - 1
lt_max, rt_max = 0, 0
# ๊ฐ์ฅ ๋์ด๊ฐ ๋์ ๋ง๋์ธ, "์ต๋" ์ง์ ์์ ์ข์ฐ ํฌ์ธํฐ๊ฐ ์๋ก ๋ง๋๊ฒ ๋จ
# ๋ฑ ๊ทธ ์ ๊น์ง ๋ฐ๋ณต๋ฌธ ๋์์ฃผ๊ธฐ
while lt < rt:
lt_max, rt_max = max(height[lt], lt_max), max(height[rt], rt_max)
# ์ข์ฐ ์ ํด์ง ๊ฒ ์์ด, ๋ฎ์ ์ชฝ์์ ๋์ ์ชฝ์ ํฅํด ํฌ์ธํฐ๊ฐ ๊ฐ์ด๋ฐ๋ก ์ ์ ์ด๋ํจ
# ์ค๋ฅธ์ชฝ์ด ํฌ๋ฉด, ์ผ์ชฝ์ด ์ด๋
if lt_max < rt_max:
answer += lt_max - height[lt]
lt += 1
# ์ผ์ชฝ์ด ํฌ๋ฉด, ์ค๋ฅธ์ชฝ์ด ์ด๋
else:
answer += rt_max - height[rt]
rt -= 1
return answer
Leave a comment