풀이 시간 : 25분
완전 탐색을 주제로 한 문제여서 금방 풀었습니다.
문제를 파악하는데 15분 정도 걸렸습니다.
느끼는 거지만 코테는 알고리즘 공부보단 먼저 지문 이해력이 높아야 하는 것같습니다.
풀이는 간단했습니다.
w h 배열 두개를 만듭니다.
가로와 세로를 배열 한번씩 비교해서 더 큰 값을 가로 배열, 작은 값은 세로 배열로 추가 시키고
반복문이 다 돌면 정렬을 진행해(굳이 정렬하지 않고 결국 다 탐색할테니 가장 큰값 가장 작은 값을 담는 변수를 두어도 될 것 같습니다.) 가장 큰 값이 있는 0번째 인덱스 끼리 곱하면 값이 나옵니다. 코드도 간단합니다.
package Question;
// 프로그래머스, 최소 직사각형
// https://school.programmers.co.kr/learn/courses/30/lessons/86491
import java.util.ArrayList;
import java.util.Collections;
/**
* 아이디어
* 1. 일단 무조건 w,h 중 가장 큰 숫자는 구해야함.
* 2. w,h 중 큰 수를 앞으로 변경 해줌. 배열을 두개로 하자
* 3. w 배열, h 배열 두개로 하며 w 와 h 중 더 큰걸 w , 작은걸 h 로 넣는다.
* 4. 두개의 배열을 정렬하여 가장 큰 값두개를 곱해주면 됩니다.
* */
public class MinRectagle {
public static void main(String[] args) {
}
public static int solution(int[][] sizes) {
int answer = 0;
ArrayList<Integer> widthList = new ArrayList<>();
ArrayList<Integer> heightList = new ArrayList<>();
for (int[] i : sizes){
if (i[0] < i[1]){
widthList.add(i[1]);
heightList.add(i[0]);
}else{
widthList.add(i[0]);
heightList.add(i[1]);
}
}
widthList.sort(Collections.reverseOrder());
heightList.sort(Collections.reverseOrder());
answer = widthList.get(0) * heightList.get(0);
return answer;
}
}