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

ppyororong_0_0·2022년 1월 16일
0

프로그래머스

목록 보기
9/19

[프로그래머스 - 1단계] 최소직사각형 문제

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

📝 문제 설명

모든 명함의 가로 길이와 세로 길이를 나타내는 2차원 배열 sizes가 매개변수로 주어짐
모든 명함을 수납할 수 있는 가장 작은 지갑의 크기 return

💡 풀이

1. 가장 긴 가로길이 구하기

  • sizes배열에 있는 각각의 size들을 내림차순하여 가로와 세로 길이 중 더 긴 길이를 가로 길이라고 설정
    size[0] => 명함의 가로 길이, size[1] => 명함의 세로 길이가 된다.
  • size[0]은 w배열에, size[1]은 h배열에 넣기

2. 지갑 크기 : w배열과 h배열에서 가장 긴 길이 값 찾아서 곱하기

🖥️ 코드

function solution(sizes) {
    let answer;
    let w = [], h = [];
    for (let size of sizes) {
        size.sort((a, b) => b - a);
        w.push(size[0]);
        h.push(size[1]);
    }
    answer = Math.max(...w) * Math.max(...h);
    return answer;
}

프로그래머스에 있는 비슷한 풀이들 보니 다른 분들은 나처럼 w배열 h배열을 만들어준 게 아니라 그냥 반복문 안에서 if문을 통해서 가장 큰 가로, 세로 길이 값을 변수에 할당하여 계산하였다.


❗ 다른 사람 풀이

function solution(sizes) {
    const [hor, ver] = sizes.reduce(([h, v], [a, b]) => [Math.max(h, Math.max(a, b)), Math.max(v, Math.min(a, b))], [0, 0])
    return hor * ver;
}
profile
안녕하세요!

0개의 댓글