주어진 명함의 가로 길이와 세로 길이 중 더 긴 것이 가로 길이가 되도록 명함을 회전시킨다. 이렇게 하면 나중에 지갑의 가로 길이와 세로 길이를 구할 때, 다른 카드의 가로 길이보다 짧은데 세로 길이들 중에서는 제일 길어서 지갑의 세로 길이가 되는 경우를 없앨 수 있다. 즉, 지갑의 크기를 최소화 할 수 있다.
size[0]) > 세로(size[1]): swap 하지 않고 그대로 사용함.size[0]) < 세로(size[1]): swap 하여 세로가 가로가 되도록 함.if (size[0] < size[1]) {
int tmp = size[0];
size[0] = size[1];
size[1] = tmp;
}
아래의 다른 풀이를 보면 알겠지만, 불필요한 코드이다.
모든 카드의 가로가 세로보다 길도록 만들어 놓았으니, 가로의 최대 길이와 세로의 최대 길이를 구한다. 각각의 최대 길이가 지갑의 가로 길이와 세로 길이가 될 것이다.
maxWidth = Math.max(maxWidth, size[0]);
maxHeight = Math.max(maxHeight, size[1]);
굳이 swap을 할 필요 없이 가로와 세로 중에서 긴 것들끼리(Math.max(size[0], size[1])) 비교하여 최대 길이를 구하고, 짧은 것들끼리Math.min(size[0], size[1])) 비교하여 최대 길이를 구하면 된다. swap을 하는 것보다 효율적이다.
maxLength = Math.max(maxLength, Math.max(size[0], size[1]));
maxHeight = Math.max(maxHeight, Math.min(size[0], size[1]));