프론트엔드✏️/개인공부

[알고리즘] 최소직사각형

당근먹는하니 2022. 8. 20. 16:10
728x90
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/86491

 

프로그래머스

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

programmers.co.kr

 

 

// 내가 푼 풀이

function solution(sizes) {
console.log(sizes.map((el)=> {
  return el.sort((a,b)=> b-a)
}))
  let w = [];
  let h = [];
for(let i = 0 ; i<sizes.length; ++i) {
  w.push(sizes[i][0]);
  h.push(sizes[i][1]);
}
  return Math.max(...w)*Math.max(...h);
}

solution([[60, 50], [30, 70], [60, 30], [80, 40]]) // 4000

console.log를 안 지웠다. 저기 안에 있는 것만 빼고 console.log는 지워야 한다!

 

// 다른 사람 풀이

function solution(sizes) {
    const rotated = sizes.map(([w, h]) => w < h ? [h, w] : [w, h]);

    let maxSize = [0, 0];
    rotated.forEach(([w, h]) => {
        if (w > maxSize[0]) maxSize[0] = w;
        if (h > maxSize[1]) maxSize[1] = h;
    })
    return maxSize[0]*maxSize[1];
}

변수 선언을 maxSize = [0, 0]; 배열로 묶어서 쓴게 보기 좋은 것 같다.

나는 let w, let h라고 했음...!

 

그리고 정렬된 데이터에 forEach돌리기!!! 그럼 불필요하게 배열을 만들어서 push 할 필요가 없다. 

728x90
반응형