LeetCode - Container With Most Water

600g (Kim Dong Geun)·2020년 9월 11일

문제 설명

n개의 자연수가 주어진 배열이 주어진다.
배열의 인덱스에 배열의 값을 가진 벽을 2개 박는다고 했을때,
최댓값이 되는 넓이를 구하여라.

해결 방법

제일먼저 떠오른 방법이 2 Pointer 라는 생각이 들었다.
(그다음 Brute Force)

2Pointer를 사용하고 l<R인 조건에
minHeight가 낮은 l과 r을 한칸씩 증가 하거나 감소하면 될 것 같았다.

코드

import java.lang.*;
class Solution {
    public int maxArea(int[] height) {
        
        int l=0;
        int r=height.length-1;
        int max = 0;
        while(l<r){
            int minHeight = Math.min(height[l],height[r]);
            int value = minHeight*(r-l);
            if(max<value) max = value;
            if(minHeight==height[l])
                l++;
            else
                r--;
        }
        return max;
    }
}

소감

생각한대로 푸니 얼마 걸리지 않았다.(10분)

문제 자체는 재밌었다.

profile
수동적인 과신과 행운이 아닌, 능동적인 노력과 치열함

0개의 댓글