알고리즘 문제 연습

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

codi-3 2024. 7. 30. 20:50

🔍문제


📊분석 

  • 명함의 두변, 가로와 세로 값은 회전하여 서로 값이 바뀔수있다.
  • 모든 명함을 수납할수있는 최소의 명함 넓이를 구한다.
  • 세로와 가로의 값은 2차원 배열로 입력된다

위의 조건을 바탕으로

  • 가로 : 두변의 길이중 가장 높은값 (Max)
  • 세로: 2차원 배열의 element 두개의 값중 가장 적은 값들 중 제일 높은 값(모든 명함을 수납하기위해) 

✏️풀이

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

 

코드 자체의 난이도는 높지 않지만 문제를 이해하고 논리적으로 답을 추리는 시간이 오래걸렸던거같은 문제다.  앞을로 도형문제를 풀때 많은 도움이될꺼같다!