- 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