ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [LeetCode] Container With Most Water
    ALGORITHM/LEETCODE|HACKERRANK 2021. 1. 10. 00:00

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

     

    Container With Most Water - LeetCode

    Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

    leetcode.com

    2021-01-09


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    public class SolutionContainerWithMostWater {
        public static int maxArea(int[] height) {
            int answer = 0;
            // (1) brute force
            for(int i = 0; i < height.length; i++) {
                for(int j = height.length-1; j > i; j--) {
                    int tmp = (height[i] < height[j]) ? height[i] : height[j];
                    int num = tmp * (j-i);
                    if(answer < num) answer = num;
                }
            }
            
            // (2) two pointer
            int start = 0;
            int end = height.length-1;
            while(start < end) {
                answer = Math.max(answer, Math.min(height[start], height[end])*(end-start));
                if(height[start] < height[end]) {
                    start++;
                } else {
                    end--;
                }
            }
            
            return answer;
        }
     
        public static void main(String[] args) {
     
            int h[] = {1,8,6,2,5,4,8,3,7};
            System.out.println(maxArea(h));
        }
    }
     
    cs

    #문제풀이

    브루트 포스로 풀었고, 시간이 너무 오래걸려서 솔루션을 봐봤다.

     

    (1) Brute-force

    브루트포스는 말그대로 두 라인을 잡고 (두 라인 중에 적은 값) * (두 라인 사이의 거리) 중 가장 큰 값을 구하면 된다.

     

    (2) two pointer

    투 포인터는 start는 시작점에 end는 끝점에 두고, 시작점이 끝점보다 커지기 전까지만 실행한다. height[start] 값이 height[end]값보다 작은 경우는 start 값을 ++ 해주어서 새로운 값을 계산 할 수 있도록 해야한다. 

     

    그리고 if문을 시작하기 전에 answer 값을 구하는 이유는 [1,2] 와 같은 경우 if문에 들어가버리면 계산도 못 하고 끝나버리기 때문이다.

     

    'ALGORITHM > LEETCODE|HACKERRANK' 카테고리의 다른 글

    [LeetCode] Unique Paths II  (0) 2021.01.18
    [LeetCode] Median of Two Sorted Arrays  (0) 2021.01.01

    댓글

Programming Diary