import java.util.*;
class Solution {
public int solution(int[][] sizes) {
//최종 지갑의 가로, 세로 크기
int maxWidth = 0;
int maxHeight = 0;
for(int i=0; i<sizes.length; i++){
int width = sizes[i][0];
int height = sizes[i][1];
if(width > height){
int temp = width;
width = height;
height = temp;
}
maxWidth = Math.max(maxWidth, width);
maxHeight = Math.max(maxHeight, height);
}
return maxWidth * maxHeight;
}
}
import java.util.*;
class Solution {
public int solution(int[][] sizes) {
int width = 0;
int height = 0;
//최종 지갑의 가로, 세로 크기
int maxWidth = 0;
int maxHeight = 0;
for(int i=0; i<sizes.length; i++){
for(int[] size : sizes){
width = Math.max(size[0], size[1]);
height = Math.min(size[0], size[1]);
maxWidth = Math.max(maxWidth, width);
maxHeight = Math.max(maxHeight, height);
}
}
return maxWidth * maxHeight;
}
}
다양한 모양과 크기의 명함들을 모두 수납할 수 있으면서,
작아서 들고 다니기 편한 지갑을 만들어야 한다.
👉 모든 명함은 방향 상관없이 회전 시켜서 지갑에 넣기만 하면 된다.
문제를 보자마자 오름차순 정렬을 통해
가로와 세로 중 가장 큰 값을 곱해서 출력해주면 될 것이라는 생각이 들었다!
하지만 이 문제는 1차원 배열이 아니라 2차원 배열이기 때문에 🤔
📢 명함의 가로,세로 길이를 지정할 때,
주저리 좀 해보자면,,
쉬워서 간단하고 재밌는 문제였다 (정말?ㅎ)…
그런데 어떤 방식으로 정렬을 해서 값을 비교할 건지 잘못 접근하게 되면
시간이 매우 오래 걸릴 것이라는 생각이 들었다.
예를 들어, (해결 후, 다른 접근 방식도 생각해봤는데 바로 철수한 생각^^)
가로와 세로에 각각 길이의 대소 를 구분 지어 저장하지 않고
그냥 주어진 배열 상태로 정렬 해서 가장 큰 숫자를 찾고
그 다음 큰 숫자를 비교 해서 큰 숫자를 바꿔주고.. 등등
이런 식으로 접근 하면 돌이킬 수 없는 시간을 보낼 것이라는 생각이 들었다 ^^