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

쿼카쿼카·2022년 9월 18일
0

알고리즘

목록 보기
20/67

문제

코드

function solution(sizes) {
    // 내가 푼 풀이
    let width = 0, height = 0;
    
    sizes.forEach(val => {
        const max = Math.max(...val);
        const min = Math.min(...val);
        
        if(max > width) width = max;
        if(min > height) height = min;
    })
    // reduce 활용한 풀이
    const [width, height] = sizes.reduce(([w, h], val) => [Math.max(w, Math.max(...val)), Math.max(h, Math.min(...val))], [0, 0]);
    
    return width*height;
}

내가 푼 풀이

  • forEach로 매번 비교해서 width와 height 값을 바꿔준다. 이 글을 쓰면서도 느끼지만 코드가 너무 진부해서 쓰다 졸아버릴 것 같다

reduce활용하여 비교

  • reduce는 맨날 더하기만 하는 줄 알았니? 아니아니 사실 비교도 한다구~ 이런 신박한 방법을 볼 때마다 뇌가 짜릿하면서 손상이 오는 것 같아요~ 글에서도 느껴지죠?ㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎ
  • 비구조 할당으로 width와 height를 받는다.
  • 최종 return 값인 acc 자리에 [w, h]라는 임의의 값을 둠
  • cur 자리에 현재 배열인 val을 둠
  • 두 수 중에서 최댓값을 비교하여 더하기 없이 최댓값으로 이루어진 배열을 return
profile
쿼카에요

0개의 댓글