Blog

[Algorithm] 최소직사각형 (완전탐색-모든요소)

Category
Author
Tags
PinOnMain
1 more property
문제 해석
과거에 잘못 풀었던 문제이다. 면적중에서 최소값을 구했지만 가로, 세로 길이의 최대값들을 구해내야 한다.
문제에서 가로 세로라는 명칭에 혼동되면 안된다.
배열로 묶인 요소들은 가로가 될 수도, 세로가 될 수도 있는 것을 생각하면된다.
따라서 요소(2값중)에서 큰 값에서의 최대값
요소(2값중)에서 작은값 에서의 최대값
을 가로, 세로로 정하면 모든 카드들을 넣을 수 있다.
문제 풀이
public class Solution { int solution(int[][] sizes){ int answer = 0; int maxWidth = 0; int maxHeight = 0; for (int i = 0; i < sizes.length; i++) { maxWidth = Math.max(maxWidth, Math.max(sizes[i][0], sizes[i][1])); // [i][0]과 [0][i]를 모든 요소를 돌면서 가장 큰값을 큰값에 저장. maxHeight = Math.max(maxHeight, Math.min(sizes[i][0], sizes[i][1])); // [i][0]과 [0][i]를 모든 요소를 돌면서 배열중 작은값을 추출하고, 그중 가장 큰 값을 뽑아내게된다. } answer = maxWidth * maxHeight; return answer; } public static void main(String[] args){ Solution sol = new Solution(); int[][] sizes = {{60,50}, {30,70}, {60,30}, {80,40}}; System.out.print(sol.solution(sizes)); } }
Java
복사