프로그래머스. 코딩테스트 고득점 Kit.
완전탐색. 1단계
function solution(sizes) {
let answer = 1;
// 가로의 길이를 제일 긴 변으로 설정 후 회전
for (let i = 0; i < sizes.length; i++) {
let w = sizes[i][0];
let h = sizes[i][1];
if (w < h) {
[sizes[i][0], sizes[i][1]] = [sizes[i][1], sizes[i][0]];
}
}
// 가로의 최대값 * 세로의 최대값 = 최소 지갑
let x = sizes.sort((a, b) => b[0] - a[0])[0][0];
let y = sizes.sort((a, b) => b[1] - a[1])[0][1];
answer = x * y;
return answer;
}
처음부터 접근을 이상하게 해서 결국 다른 분의 풀이를 참고했다.
아예 문제 처음부터 명함의 긴 부분을 가로로 만들고,
짧은 부분을 세로로 만들었다.
긴 부분은 긴 부분끼리 비교하고, 짧은 부분은 짧은 부분끼리 비교를 하는 간단한 생각이었다.
이러면 가로 길이 중 가장 큰 수와 세로 길이 중 가장 큰 수가 명함 케이스를 만드는 가장 작은 넓이가 된다.