알고리즘(Algorithm)/프로그래머스(Programmers)

[프로그래머스] 최소직사각형 - JAVA

나아가는중 2021. 10. 25. 18:10
반응형

프로그래머스 최소직사각형 - JAVA


문제 설명

  1. 다양한 모양과 크기의 명합들을 모두 수납할 수 있으면서, 가장 작은 명합 지갑을 만들려 한다.
  2. 모든 명합의 가로 길이와 세로 길이를 나타내는 2차원 배열 sizes가 배개변수로 주어진다.
  3. 모든 명합을 수납할 수 있는 가장 작은 지갑을 만들 때, 지갑의 크기를 return.

제한 사항

  1. sizes의 길이는 1 이상 10,000 이하입니다.
    • sizes의 원소는 [w, h] 형식입니다.
    • w는 명함의 가로 길이를 나타냅니다.
    • h는 명함의 세로 길이를 나타냅니다.
    • w와 h는 1 이상 1,000 이하인 자연수입니다.

문제 풀이

  1. 주어진 명함을 눕힐 수 있으므로, 주어진 가로, 세로 중 긴것과, 짧은 것을 구한다.
  2. 구한 길이를 편이상 긴 쪽을 가로, 짧은 쪽을 세로로 저장.
  3. 2번에서 구한 값중 가장 길이가 긴 값들을 곱해줌으로 최소 지갑 크기를 얻을 수 있다.

소스 코드

class Solution {
    public int solution(int[][] sizes) {       
        int width = 0, height = 0;

        for (int[] size : sizes) {
            width = Math.max(width, Math.max(size[0], size[1]));
            height = Math.max(height, Math.min(size[0], size[1]));
        }

        return width * height;
    }
}
반응형