[완전탐색]최소직사각형

Wintering·2022년 8월 24일
0

Algorithm

목록 보기
16/16


30min

import java.util.Arrays;

/**
 * 완전탐색
 * 최소직사각형
 */
public class Solution {
    public static int solution(int[][] sizes) {
        int N = sizes.length;
        int[] width = new int[N];
        int[] height = new int[N];
        int maxWidth = 0;
        int maxHeight = 0;


        for (int i = 0; i < N; i++) {
            width[i] = sizes[i][0];
            if (maxWidth < width[i]) {
                maxWidth = width[i];
            }
            height[i] = sizes[i][1];
            if (maxHeight < height[i]) {
                maxHeight = height[i];
            }
        }

        if (maxHeight < maxWidth) {
            for (int i = 0; i < N; i++) {
                if (width[i] != maxWidth && height[i] > width[i]) {
                    height[i] = width[i];
                }
            }
            Arrays.sort(height);
            maxHeight = height[N - 1];
        } else {
            for (int i = 0; i < N; i++) {
                if (height[i] != maxHeight && width[i] > height[i]) {
                    width[i] = height[i];
                }
            }
            Arrays.sort(width);
            maxWidth = width[N - 1];
        }

        int answer = maxHeight * maxWidth;
        return answer;
    }
}

GET

  • if문과 for문이 너무 많은 것 같다... 풀긴 했지만 좋지 못한 코드인 것 같다.
class Solution {
    public int solution(int[][] sizes) {
        int length = 0, height = 0;
        for (int[] card : sizes) {
            length = Math.max(length, Math.max(card[0], card[1]));
            height = Math.max(height, Math.min(card[0], card[1]));
        }
        int answer = length * height;
        return answer;
    }
}

발상은 비슷한 것 같은데 굉장히 간단하게 푸셨다. 어떻게 이렇게 풀 수 있는거지? ^.T
일단 나의 패착은 Math.max() 함수를 활용하지 않은 게 아닐까 싶다.

0개의 댓글