Programmers/JAVA

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

giggs 2023. 1. 14. 10:58

 

1. 문제 설명

 

 

 

 


 

 

2. 문제 풀이 핵심이라 생각하는 점

  • 길이가 긴 값들 중 가장 큰 값, 길이가 작은 값들 중 가장 큰 값
  • 각각의 명함들의 가로와 세로길이 중 긴 쪽을 가로로 재배치
  • 가로값 = paramMax 변수로, 세로값은 = paramMin 변수로 비교
  • 가로값 중 최댓값, 세로값 중 최댓값
  • 최댓값을 모아놓고 그중 최댓값, 최솟값을 모아놓고 그중 최댓값

 

 


 

 

3. 정답 코드 확인 및 활용 메소드 체크

 

 

3-1 : 정답 코드 확인

class Solution {
    public int solution(int[][] sizes) {
        int max = 0;
        int min = 0;
        for (int[] size : sizes) {
            int paramMax = Math.max(size[0], size[1]);
            int paramMin = Math.min(size[0], size[1]);

            if (paramMax > max) {
                max = paramMax;
            }

            if (paramMin > min) {
                min = paramMin;
            }
        }
        return max * min;
    }
}

 

 

 

 


 

 

 

4. 공부하고 싶은 다른 분의 풀이

  • 풀이 방법은 비슷하다.
  • Math 메소드를 중복으로 활용하여 코드의 가독성이 더 좋아 보여서 체크해 놓았다.

 

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;
    }
}