TIL [알고리즘] 최소직사각형(Java)

주의할 점 - 카드 방향을 회전 시킬 수 있다

THINKING

  1. 가로, 세로 길이를 비교하여 긴 값을 가로에 짧은 값을 세로에 넣기
  2. 가장 길이가 긴 가로를 max_w에 저장
  3. 가장 길이가 긴 세로를 max_h에 저장
  4. max_w와 max_h를 곱한 값을 return

1번을 떠올리긴 했지만, 어떻게 구현할지에 대해 떠올린 것은 다른 문제들보다 길었던 것 같다.

내 풀이

class Solution {
    public int solution(int[][] sizes) {
        int answer = 0;
        int max_w = 0;
        int max_h = 0;
        
        for (int i = 0; i < sizes.length; i++) {
            int w = Math.max(sizes[i][0], sizes[i][1]);
            int h = Math.min(sizes[i][0], sizes[i][1]);
            
            max_w = Math.max(max_w, w);
            max_h = Math.max(max_h, h);
        }
        answer = max_w * max_h;
        return answer;
    }
}

좋은 웹페이지 즐겨찾기