코딩테스트
[JS] 완전탐색 > 최소직사각형
차차한
2022. 8. 23. 13:07
function solution(sizes) {
sizes.map(v => v.sort((a,b) => a-b));
var a = sizes.map((v,i) => sizes[i][0]).sort((a,b)=>b-a);
var b = sizes.map((v,i) => sizes[i][1]).sort((a,b)=>b-a);
return a[0] * b[0]
}
가로길이 중 가장 큰 수와 세로길이 중 가장 큰 수를 곱하면 되는 문제여서 먼저 sizes를 map으로 돌려 배열의 순서를 오름차순으로 정렬했다.
명함을 돌리면 가로길이가 세로길이가 되고 그 반대도 되기 때문에, 무엇이 가로이고 세로인지는 중요하지 않다
입력값이 저러한 배열일 때 오름차순으로 정렬하면 [ [ 50, 60 ], [ 30, 70 ], [ 30, 60 ], [ 40, 80 ] ] 가 된다.
그 후에 다시 map을 돌려서 0번/1번 인덱스에 있는 값 중 가장 큰 수를 찾기 위해 내림차순으로 배열을 정렬했다.
a배열, b배열의 0번 인덱스에 가장 큰 수가 오게 됐으니 이제 두 수를 곱해서 리턴해주면 끝!
