본문 바로가기
문제풀이/프로그래머스

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

by dev_kong 2022. 2. 14.
728x90
728x90

 

잠이 안와서 간만에 하나 풀어봄

1.  문제설명

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

 

코딩테스트 연습 - 최소직사각형

[[10, 7], [12, 3], [8, 15], [14, 7], [5, 15]] 120 [[14, 4], [19, 6], [6, 16], [18, 7], [7, 11]] 133

programmers.co.kr

 

 

2.  접근방법

음 뭐 별 고민 없이 풀긴했다.

명함을 가로로 돌릴수 있다는 게 흥미로웠음

결국 그냥 배열안의 두수를 비교해서

큰거는 index: 0 에 다가

작은거는 index: 1 에다가 박아두고,

 

for문으로 index: 0 에있는 애들중에 제일 큰애

index: 1 에 있는 애들 중에 제일 큰애 두개 구해서

곱해주면 된다.

 

 

3.  코드

 

const sizes = [
  [60, 50],
  [30, 70],
  [60, 30],
  [80, 40],
];

function solution(sizes) {
  const x = [];
  const y = [];

  sizes
    .map((v) => v.sort((a, b) => b - a)) //
    .forEach((v) => {
      x.push(v[0]);
      y.push(v[1]);
    });

  return Math.max(...x) * Math.max(...y);
}

console.log(solution(sizes)); // 4000

 

x, y 로 변수 잡고 빈배열 할당해준 뒤에,

sizes에 map 으로 sort 돌려서 오름차순으로 정렬해주고,

forEach 로 loop 돌려서,

index : 0 인 애들은 x에

index: 1 인 애들은 y에 박아뒀다.

그리고 Math.max 랑 spread 연산자 써서,

제일 큰 숫자 두개 골라서 리턴해줌 

매우 간단.

728x90
728x90

'문제풀이 > 프로그래머스' 카테고리의 다른 글

[Javascript] 3진법 뒤집기  (0) 2022.01.04
[Javascript] 예산  (0) 2022.01.04
[Javascript]크레인 인형뽑기 게임  (0) 2022.01.04
[Javascript] 폰켓몬  (0) 2022.01.04
모의고사  (0) 2021.12.28

댓글