Google 태그 관리자 아이콘

알고리즘 풀이

.leetcode(11. Container With Most Water)

silvergoni 2022. 1. 30. 09:05
반응형

https://leetcode.com/problems/container-with-most-water/

 

2. 2022.01.30 시도

소요시간: 4분

class Solution {
    public int maxArea(int[] height) {
        int left = 0;
        int right = height.length -1;
        
        int ret = 0;
        while (left < right) {
            int w = right - left;
            int h = Math.min(height[left], height[right]);
            ret = Math.max(ret, w * h);
            
            if (height[left] <= height[right]) {
                left++;
            } else {
                right--;
            }
        }
        
        return ret;
    }
}

풀이 접근 과정

일종의 포인터 문제다. 그래서 양쪽의 index를 잡고 넓이를 비교해가면서 풀면 되겠다.

 

느낀점

  • 문제를 풀어봤던거라 유형을 정확히 알고 있엇다. 유형만 알아도 문제가 쉽게 풀리는거 보니 문제를 보면서 유형 접근을 먼저해보는 것도 좋겠다는 생각이 들었다.

1. 2021.01.25 시도

소요시간 : 17분

class Solution {
    public int maxArea(int[] height) {

        int area = 0;
        int s=0;
        int e=height.length-1;
        while(true) {
            if (s >= e) {
                break;
            }

            area = Math.max(area, Math.min(height[s], height[e])* (e-s));
            if (height[s] < height[e]) {
                s++;
            } else {
                e--;
            }
        }

        return area;
    }
}

풀이 접근 과정

양끝에서 가운대로 모이면 어떨가?

 

느낀점

  • 두점 잡아서 짧은 쪽을 이동시키면서 넓이를 비교한다. 이게 어차피 한칸 더 가까워질때 밑변은 같으므로 긴 높이를 유지하는게 유리하다.

알고리즘 정리노트: .leetcode(알고리즘 문제풀이 접근)

반응형