class Solution {
    public int maxArea(int[] height) {
        int maxWater = 0;        
		
        for (int i = 0; i < height.length - 1; i++) {
			for (int j = i+1; j < height.length; j++) {								
				int water = (j - i) * Math.min(height[i], height[j]);
				if(maxWater < water)
					maxWater = water;
			}
		}		
		return maxWater;
    }
}

그냥 for를 활용한 브루트포스로 하면 풀리긴 하는데, 시간초과

역시, Two Pointer를 사용하면 되는데, 인덱스를 옮겨가면서, 탐색을 하는 방법을 찾는게 어려웠음

 

 

맨 처음 가장 넓은(0 ~ height.length-1)너비에서 그 다음으로 가면 너비가 점점 줄어드는데, 총 용량이 늘어나려면 높이가 큰 막대를 찾아야 함

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