[프로그래머스 level1] 최소 직사각형

김예지·2021년 10월 16일
0

문제

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


문제 풀이

코드

function solution(sizes) {
    const width=[];
    const height=[];
    sizes.map(([s1, s2])=>{
        if(s1>s2){
            width.push(s1);
            height.push(s2);
        } 
        else {
            width.push(s2);
            height.push(s1);
        }
    });
    
    return Math.max(...width) * Math.max(...height);
}

진짜 감도 안잡혀서 해설을 봤는데, 내가 실제로 명함 여러개를 가지고 있다고 생각했을 때를 생각해보니 쉬웠다.
가로나 세로의 값을 기준으로 명함을 모두 정리한다.
이때, 가로를 모두 길게 세로를 모두 짧게 정리해주면 가로 중 가장 긴 길이 * 세로 중 가장 긴 길이로 구할 수 있다.
따라서 위 문제에서도 가로가 세로보다 더 길게 만들어준 후, 각각의 max값을 곱하면 된다.

10/26 추가

map을 꼭 새로운 배열을 만드는데 사용하는 것은 아니다. 이문제처럼 배열의 요소를 하나씩 가져올 수도 있다.


참고

profile
내가 짱이다 😎 매일 조금씩 성장하기🌱

1개의 댓글

comment-user-thumbnail
2021년 10월 26일

10/26

  • Math.max(...arr)
  • map 사용법
답글 달기