본문 바로가기

코딩테스트 연습/JAVA

[JAVA/알고리즘] 최소직사각형

반응형

https://programmers.co.kr/learn/courses/30/lessons/86491?language=java 

 

코딩테스트 연습 - 최소직사각형

[[10, 7], [12, 3], [8, 15], [14, 7], [5, 15]] 120 [[14, 4], [19, 6], [6, 16], [18, 7], [7, 11]] 133

programmers.co.kr

 

 

나의 풀이

한 명함의 가로와 세로 중 큰 값이 가로값이 되게 했다. 이후에 가로값과 세로값끼리 각각 비교해 최댓값을 구해주었다. 어차피 명함끼리는 값이 섞일 일이 없어서, 반복문은 한 번만 돌려도 상관없었다.

class Solution {
    public int solution(int[][] sizes) {
        int maxWidth = 0;
        int maxHeight = 0;
        
        for (int i = 0; i < sizes.length; ++i) {
            if (sizes[i][0] < sizes[i][1]) {
                int temp = sizes[i][0];
                sizes[i][0] = sizes[i][1];
                sizes[i][1] = temp;
            }
            maxWidth = sizes[i][0] > maxWidth? sizes[i][0] : maxWidth;
            maxHeight = sizes[i][1] > maxHeight? sizes[i][1] : maxHeight;
        }
        
        return maxWidth * maxHeight;
    }
}

 

 

다른 풀이

프로그래머스에 있는 다른 풀이를 보았는데, 향상된 for문을 사용했다는 점이 흥미로웠다.

 

 

반응형