본문 바로가기

Plo Algorithm

프로그래머스 Lv1 최소 직사각형

최소 직사각형

첫번째 오답

import java.util.*;

class Solution {
    public int solution(int[][] sizes) {
        //Arrays로 합치고 sort로 정렬 중간을 인덱스해서 두개의 배열로 짼다
            //큰 배열의 가장 큰 값 작은 배열의 가장 작은값
            int answer = 0;
            int[] arr = new int[sizes.length * sizes[0].length];
            //i는 4까지 증가
            for (int i = 0 ; i < sizes.length; i++){
            //j는 1까지 증가
                for (int j =0 ; j <sizes[i].length ; j++){
                arr[( i * sizes[i].length ) + j] = sizes[i][j];
                }
            }
            Arrays.sort(arr);
            int index = arr.length / 2;
            answer = arr[index -1] * arr[(index * 2)-1];

            return answer;
    }
}

static class Solution {
        public int solution(int[][] sizes) {
            int answer = 0;
            int[] width = new int[sizes.length];
            int[] height = new int[sizes.length];
            int tmp = 0;
            int max = 0;
            int max2 = 0;
			//for문을 통하여 가로행을 순환하며 탐색
            //가로행의 0번째 값이 1번째 값보다 작으면
            //둘의 위치를 바꿔주는 for문.
            for (int i = 0; i < sizes.length; i++) {
                if (sizes[i][0] < sizes[i][1]) {
                    tmp = sizes[i][0];
                    sizes[i][0] = sizes[i][1];
                    sizes[i][1] = tmp;
                }
                //미리 만들어둔 배열에 가로행과 세로행을 나눠서 할당한다.
          		width[i] = sizes[i][0];
                height[i] = sizes[i][1];
            }
            //나눠준 가로행과 세로열을 오름차순으로 정렬
            Arrays.sort(width);
            Arrays.sort(height);
            
            //정렬된 가로행 , 세로 행의 마지막 값을 인덱스해서 가져와 곱한 후
            //answer 객체에 할당한다.
            answer = width[width.length - 1] * height[height.length - 1];

            return answer;
        }
    }