✏️오늘의 문제
public int solution(int[][] sizes) {
int a =0; int b =0;
// 1차웜 배열 0이 작은값 1인 큰값
for(int i=0; i<sizes.length; i++){
if(sizes[i][0] > sizes[i][1]){
int temp = sizes[i][0];
sizes[i][0] = sizes[i][1];
sizes[i][1] = temp;
}
}
for(int i=0; i<sizes.length; i++){
if(sizes[i][0]>a){
a = sizes[i][0];
} if(sizes[i][1]> b){
b = sizes[i][1];
}
}
System.out.println(a+","+b);
return a*b;
}
변수 초기화
int a = 0;
: 최대 가로 길이를 저장할 변수입니다.int b = 0;
: 최대 세로 길이를 저장할 변수입니다.각 카드 크기 정렬
최대 가로 및 세로 길이 찾기
a
)와 최대 세로 길이(b
)를 찾습니다.결과 출력 및 면적 반환:
sizes
배열을 직접 수정하기 때문에 원본 데이터가 변형됩니다. 이로 인해 원본 데이터를 보존할 필요가 있는 경우 불편할 수 있습니다.public int solution(int[][] sizes) {
int maxWidth = 0; // 최대 가로 길이
int maxHeight = 0; // 최대 세로 길이
// 최대 가로와 세로 길이 계산
for (int i = 0; i < sizes.length; i++) {
// 각 카드의 가로와 세로 길이를 비교하여 최대값 업데이트
int width = Math.max(sizes[i][0], sizes[i][1]);
int height = Math.min(sizes[i][0], sizes[i][1]);
maxWidth = Math.max(maxWidth, width);
maxHeight = Math.max(maxHeight, height);
}
// 최소 직사각형 면적 계산
return maxWidth * maxHeight;
}
변수 초기화
int maxWidth = 0; // 최대 가로 길이
int maxHeight = 0; // 최대 세로 길이
maxWidth
: 현재까지 발견된 카드 중 가장 큰 가로 길이를 저장하는 변수입니다. 초기값은 0입니다.maxHeight
: 현재까지 발견된 카드 중 가장 큰 세로 길이를 저장하는 변수입니다. 초기값은 0입니다.최대 가로 및 세로 길이 계산
for (int i = 0; i < sizes.length; i++) {
int width = Math.max(sizes[i][0], sizes[i][1]);
int height = Math.min(sizes[i][0], sizes[i][1]);
for
루프는 sizes
배열의 각 카드에 대해 반복합니다. 각 카드의 가로와 세로 길이를 가져와서 비교합니다.Math.max(sizes[i][0], sizes[i][1])
: 현재 카드의 가로와 세로 중 더 큰 값을 width
에 저장합니다. 이 값은 해당 카드의 최대 가로 길이가 됩니다.Math.min(sizes[i][0], sizes[i][1])
: 현재 카드의 가로와 세로 중 더 작은 값을 height
에 저장합니다. 이 값은 해당 카드의 최소 세로 길이가 됩니다.최대 가로 및 세로 업데이트
maxWidth = Math.max(maxWidth, width);
maxHeight = Math.max(maxHeight, height);
maxWidth
는 이전 최대 가로 길이와 현재 카드의 최대 가로 길이(width
) 중 더 큰 값을 저장합니다. 이를 통해 모든 카드에서 최대 가로 길이를 찾습니다.maxHeight
도 마찬가지로 이전 최대 세로 길이와 현재 카드의 최소 세로 길이(height
) 중 더 큰 값을 저장합니다. 이 과정을 통해 모든 카드에서 최대 세로 길이를 찾습니다.면적 계산 및 반환
return maxWidth * maxHeight;
예를 들어, sizes
가 다음과 같다고 가정해 보겠습니다:
int[][] sizes = {
{60, 50},
{30, 70},
{60, 30},
{80, 40}
};
{60, 50}
-> 최대 가로: 60, 최소 세로: 50{30, 70}
-> 최대 가로: 70, 최소 세로: 30{60, 30}
-> 최대 가로: 60, 최소 세로: 30{80, 40}
-> 최대 가로: 80, 최소 세로: 40이 값을 통해:
maxWidth
): Math.max(60, 70) -> 70
, Math.max(70, 60) -> 70
, Math.max(70, 80) -> 80
maxHeight
): Math.max(50, 30) -> 50
, Math.max(50, 30) -> 50
, Math.max(50, 40) -> 50
최종적으로 면적은 80 * 50 = 4000
이 됩니다.