이노베이션 캠프/3주차_알고리즘
[JS] 최소직사각형
hani:)
2023. 6. 17. 21:52
문제
https://school.programmers.co.kr/learn/courses/30/lessons/86491
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 풀이
해당 문제의 경우 첫 작성 코드를 바로 최종 제출함.
최종 제출
function solution(sizes) {
let longs = [];
let shorts = [];
for (let i=0; i<sizes.length; i++) {
let w = sizes[i][0]; // 가로
let h = sizes[i][1]; // 세로
if (w > h) { // 가로의 값이 더 클 때
longs.push(w);
shorts.push(h);
} else { // 세로의 값이 더 클 때
longs.push(h);
shorts.push(w);
}
}
let longMax = Math.max(...longs);
let shortMax = Math.max(...shorts);
return longMax * shortMax;
}
- 긴 길이와 짤은 길이를 저장한 변수 선언 (longs, shorts)
- for문 사용하여 sizes 배열 내 원송 접근하여 조건에 맞는 변수에 값을 넣어줌
- Math.max를 사용하여 각 변수 (longs, shorts)에서 가장 큰 값을 찾아와서 곱해준 값을 return
다른 풀이
같이 문제를 푼 조원의 코드의 가독성이 더 좋아서 기록으로 남김 (성능 차이 X)
function solution(sizes) {
// 큰길이가 뒤 작은게 앞으로 가는 배열로 변화
// 이때 각 열의 최대값의 곱이 최대 넓이
var answer = 0;
// 정렬
sizes.forEach((item)=>{
item.sort((a,b)=>a-b);
})
//각열의 최대값
let width = Math.max(...sizes.map((a)=>a[0]));
let heigh = Math.max(...sizes.map((a)=>a[1]));
}
728x90