사실상 문제를 보면 가로x세로 길이를 명시해서 더 헷갈리게 만들었다.
사실 어떤 모서리는 가로가 될 수도 있고 세로도 될 수가 있다.그치만 한 모서리를 가로라고 지정하면 다른 모서리는 세로가 되어야 옳다.
두 개의 모서리를 비교하여 큰 값을 전부 가로 작은 값을 전부 세로로 두면
각 모서리의 길이의 최댓값이 답이 되지않을까?
긴 면을 가로라고 생각하는 것 → 일단 다 카드를 눕혔다고 생각하는 것
function solution(sizes) {
let maxWidth = 0;
let maxHeight = 0;
sizes.map(([v1, v2]) => {
if(v1 >= v2){
if(maxWidth < v1) maxWidth = v1;
if(maxHeight < v2) maxHeight = v2;
} else if(v1 < v2) {
if (maxWidth < v2) maxWidth = v2;
if (maxHeight < v1) maxHeight = v1;
}})
return maxWidth*maxHeight
}
function solution(sizes) {
let w = 0;
let h = 0;
sizes.forEach(s => {
const [a, b] = s.sort((a,b) => a-b); // 이 부분!!!
if (a > h) h = a;
if (b > w) w = b;
});
return w * h;
문제 풀이 관련
가로, 세로를 예시에 나와있는대로 한정지어 생각해서 풀이를 생각하기 어려웠다.
생각해보면 가로, 세로는 딱 정해져있는게 아닌데..
각 카드의 긴 쪽을 가로로, 짧은 쪽을 세로로 정해버리면 어떤 경우에 카드를 눕혀야할지 고려하지 않아도 된다.
결론 - 편협적인 사고를 하지말자
코드 관련
map을 통해 들어오는 배열을 정렬해주면, 두 값을 서로 비교하는 if문을 줄일 수 있었다.