본문 바로가기

항해99_10기/[2주차] 알고리즘 문제풀이

[14번][중급] 최소 직사각형

문제

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

나의 답

[pseudo code]
1. sizes의 루프를 돌면서 w > h를 비교해서 큰 값을 h로 몰아줌
2. w와 h의 가장 큰 값을 찾아서 곱하면 됨 

function solution(sizes) {
  let width = [],
    hight = [];

  for (let size of sizes) {
    if (size[0] > size[1]) {
      const temp = size[0];
      size[0] = size[1];
      size[1] = temp;
    }
    width.push(size[0]);
    hight.push(size[1]);
  }
  width = width.sort((a, b) => a - b);
  hight = hight.sort((a, b) => a - b);
  console.log(width, hight);

  return width[width.length - 1] * hight[hight.length - 1];
}

console.log(solution([[60, 50], [30, 70], [60, 30], [80, 40],]));



//메서드를 사용하여 코드 줄이기
function solution(sizes) {
  let w = 0,
    h = 0;
  sizes.forEach((e) => {
    const [a, b] = e.sort((a, b) => a - b);
    if (a > h) h = a;
    if (b > w) w = b;
  });
  return w * h;
}