[プログラマ]最小長方形の作成
14057 ワード
これはプログラマーの8週目の問題です.
質問する
質問する
パラメータは、すべての名刺の水平と垂直の長さを表す2 D配列サイズです.すべての名刺を収納できる最小財布を作成する場合は、財布の大きさを返すための解関数を完了します.
私の答え function solution(sizes) {
var answer = 0;
let arr = [];
let minW = [];
let minH = [];
for(let i = 0; i <sizes.length; i++){
sizes[i][0]>sizes[i][1] ? arr.push(sizes[i]) : arr.push([sizes[i][1],sizes[i][0]]);
minW.push(arr[i][0]);
minW.sort(function(a, b) { return b - a; });
minH.push(arr[i][1]);
minH.sort(function(a, b) { return b - a; });
}
return answer= minW[0]*minH[0];
}
今回も直観的にできました.もっと簡単な方法を探すよりも、理解の問題から解決すべきだと思います.
名刺入れは名刺の縦横方向を変えることが条件です.そこで、各名刺の縦横の中で一番大きいサイズを、もっと小さい値段にしました.
また、セットの横寸法では、最大値xセットの縦寸法で最大値を返します.
他の人の答え
やはり人の解答を見て、学ぶべきことがたくさんあります.中からいくつか抜き出した.
foreachの使用
このコードで多くのことを学びました.
arr.sort()は、円アレイをソートし、その値を返します.詳細については、「MDN」を参照してください.
for文の代わりにforEach文を使用するには、MDNを参照してください.
if(条件)を実行すると、このように使用できます!
そして答えまで削除し、return値に合えばいいので、勉強しましょう.function solution(sizes) {
let w = 0;
let h = 0;
sizes.forEach(s => {
const [a, b] = s.sort((a,b) => a-b); //오름차순 정리
if (a > h) h = a;
if (b > w) w = b;
});
return w * h;
}
mapの使用
これはweforeachとmapを使う部分とあまり差がありません.降順で並べ替えますMathmax()で最大数を引いた.
Math.max()は、入力した値の中で最大の値を返します.詳細については、「MDN」を参照してください.function solution(sizes) {
sizes.map((item) => item.sort((a, b) => b - a)) //내림차순으로 원배열 정렬
let hMax = Math.max(...sizes.map((item)=> item[0])) //Math.max()에 배열을 사용하기 위해서 ...으로 배열을 복사해줌!
let wMax = Math.max(...sizes.map((item) => item[1]));
return hMax * wMax;
}
reduceの使用
reduce再指摘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;
}
Reference
この問題について([プログラマ]最小長方形の作成), 我々は、より多くの情報をここで見つけました
https://velog.io/@dev_cecy/프로그래머스-최소직사각형-만들기
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
function solution(sizes) {
var answer = 0;
let arr = [];
let minW = [];
let minH = [];
for(let i = 0; i <sizes.length; i++){
sizes[i][0]>sizes[i][1] ? arr.push(sizes[i]) : arr.push([sizes[i][1],sizes[i][0]]);
minW.push(arr[i][0]);
minW.sort(function(a, b) { return b - a; });
minH.push(arr[i][1]);
minH.sort(function(a, b) { return b - a; });
}
return answer= minW[0]*minH[0];
}
今回も直観的にできました.もっと簡単な方法を探すよりも、理解の問題から解決すべきだと思います.名刺入れは名刺の縦横方向を変えることが条件です.そこで、各名刺の縦横の中で一番大きいサイズを、もっと小さい値段にしました.
また、セットの横寸法では、最大値xセットの縦寸法で最大値を返します.
他の人の答え
やはり人の解答を見て、学ぶべきことがたくさんあります.中からいくつか抜き出した.
foreachの使用
このコードで多くのことを学びました.
arr.sort()は、円アレイをソートし、その値を返します.詳細については、「MDN」を参照してください.
for文の代わりにforEach文を使用するには、MDNを参照してください.
if(条件)を実行すると、このように使用できます!
そして答えまで削除し、return値に合えばいいので、勉強しましょう.function solution(sizes) {
let w = 0;
let h = 0;
sizes.forEach(s => {
const [a, b] = s.sort((a,b) => a-b); //오름차순 정리
if (a > h) h = a;
if (b > w) w = b;
});
return w * h;
}
mapの使用
これはweforeachとmapを使う部分とあまり差がありません.降順で並べ替えますMathmax()で最大数を引いた.
Math.max()は、入力した値の中で最大の値を返します.詳細については、「MDN」を参照してください.function solution(sizes) {
sizes.map((item) => item.sort((a, b) => b - a)) //내림차순으로 원배열 정렬
let hMax = Math.max(...sizes.map((item)=> item[0])) //Math.max()에 배열을 사용하기 위해서 ...으로 배열을 복사해줌!
let wMax = Math.max(...sizes.map((item) => item[1]));
return hMax * wMax;
}
reduceの使用
reduce再指摘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;
}
Reference
この問題について([プログラマ]最小長方形の作成), 我々は、より多くの情報をここで見つけました
https://velog.io/@dev_cecy/프로그래머스-최소직사각형-만들기
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
function solution(sizes) {
let w = 0;
let h = 0;
sizes.forEach(s => {
const [a, b] = s.sort((a,b) => a-b); //오름차순 정리
if (a > h) h = a;
if (b > w) w = b;
});
return w * h;
}
function solution(sizes) {
sizes.map((item) => item.sort((a, b) => b - a)) //내림차순으로 원배열 정렬
let hMax = Math.max(...sizes.map((item)=> item[0])) //Math.max()에 배열을 사용하기 위해서 ...으로 배열을 복사해줌!
let wMax = Math.max(...sizes.map((item) => item[1]));
return hMax * wMax;
}
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;
}
Reference
この問題について([プログラマ]最小長方形の作成), 我々は、より多くの情報をここで見つけました https://velog.io/@dev_cecy/프로그래머스-최소직사각형-만들기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol