문제풀이/프로그래머스
[프로그래머스] 최소직사각형
dev_kong
2022. 2. 14. 01:13
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