문제 해석
•
과거에 잘못 풀었던 문제이다. 면적중에서 최소값을 구했지만 가로, 세로 길이의 최대값들을 구해내야 한다.
•
문제에서 가로 세로라는 명칭에 혼동되면 안된다.
•
배열로 묶인 요소들은 가로가 될 수도, 세로가 될 수도 있는 것을 생각하면된다.
•
따라서 요소(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
복사