본문 바로가기
프로그래머스/[프로그래머스 - JAVA] Lv.1

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

by 코딩하는 흰둥이 2023. 4. 3.
반응형

 

 


  • 내 풀이
class Solution {
    public int solution(int[][] sizes) {
        int answer = 0;
        
        int[] check = new int[]{sizes[0][0], sizes[0][1]};
        // 가로 세로 값을 비교해서 큰 값을 가로로 다 몰아 줌
        for (int i = 0; i < sizes.length; i++) {
            // 세로보다 가로가 더 크다면
            if (sizes[i][0] > sizes[i][1]) {
                // 비교 값 가로보다 크다면 check[0]에 담기
                if (check[0] < sizes[i][0]) {
                    check[0] = sizes[i][0];
                }
                // 비교 값 세로보다 크다면 check[1]에 담기
                if(check[1] < sizes[i][1]){
                    check[1] = sizes[i][1];
                }
                // 가로보다 세로가 더 크다면
            } else if (sizes[i][0] < sizes[i][1]) {
                {
                    // 비교 값 가로보다 크다면 check[0]에 담기
                    if (check[0] < sizes[i][1]) {
                        check[0] = sizes[i][1];
                    }
                    // 비교 값 세로보다 크다면 check[1]에 담기
                    if(check[1] < sizes[i][0]){
                        check[1] = sizes[i][0];
                    }

                }
            }
        }
        answer = check[0] * check[1];
        
        return answer;
    }
}

실행은 성공하는데 제출테스트에서 몇개씩 틀려서 다른 분들의 글을 보고 힌트를 얻어서 다시 풀이

 

 

class Solution {
    public int solution(int[][] sizes) {
        int answer = 0;
        
        // 큰 숫자 중에 큰 수
        int finalBigNum = 0;
        // 작은 숫자 중에 큰수
        int finalSmallBum = 0;

        for (int i = 0; i < sizes.length; i++) {
            // 임시로 비교하기 위한 변수들
            int bigNum = sizes[i][0];
            int smallNum = sizes[i][1];

            // 가로가 세로보다 작으면
            if (bigNum  < smallNum){
                // 값을 돌리기 위한 임시 변수
                int change = bigNum;
                // 가로에 세로 값을 넣어줌
                bigNum = smallNum;
                // 세로에 가로 값을 넣어줌
                smallNum = change;
            }

            // 임시 큰 값이 최종 큰 값보다 크다면
            if (bigNum > finalBigNum){
                finalBigNum = bigNum;
            }
            // 임시 작은 큰 값이 최종 작은 큰 값보다 크다면
            if (smallNum > finalSmallBum){
                finalSmallBum = smallNum;
            }

        }

        answer = finalBigNum * finalSmallBum;
        return answer;
    }
}

 

  • 다른 사람 풀이
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;
    }
}

Math를 왜 생각못했을까....엄청 허무하네

댓글