leetcode 42 - 빗물 트래핑(Kotlin)

동키·2025년 5월 16일

알고리즘

목록 보기
8/10

LeetCode.42 - 빗물 트래킹

해결 방안

투포인터

  • 투 포인터를 지정
  • 왼쪽 가장 큰벽 / 오른쪽 가장 큰벽 변수 지정
  • 가장 큰벽 사이즈 - 현재 벽 사이즈 = 빈공간

두개의 포인터가 이동하며 for문을 돌며 현재 인덱스의 벽 크기가 가장 큰 벽 사이즈 보다 작다면 빈공간을 의미

class Solution {
    fun trap(height: IntArray): Int {
        var answer = 0
        var left = 0
        var right = height.size - 1
        var leftMax = height[left] // 왼쪽 제일 큰 벽
        var rightMax = height[right] // 오른쪽 제일 큰 벽

        while(left != right) {
            leftMax = leftMax.coerceAtLeast(height[left]) // 최댓값 구하기
            rightMax = rightMax.coerceAtLeast(height[right]) // 최댓값 구하기

            if(leftMax <= rightMax) {
                answer += leftMax - height[left]
                left ++
            } else {
                answer += rightMax - height[right]
                right --
            }
        }
        return answer
    }
}
profile
오늘 하루도 화이팅

0개의 댓글