[アルゴリズム]JS-アレイ要素の最適値を求め、リストし、三角形を作成する
質問1:配列要素の最大値を求めます(デフォルトの最大値の問題はいくつかありますが、1つだけアップロードされます)メソッド1):Math.min()は最高価格を求める方法で解き,高速文法を用いる! メソッド2):arr.sort()昇順に配列内の要素をソートし、最小の最初の要素を出力します.
方法:三辺(三辺)三角形にならない条件と三角形になれる条件を考える
条件:3つのエッジの長さがある場合、最長エッジの長さは2つのエッジの長さの和より小さくなければなりません.
三角形の成立条件
プール) すべてのエッジの長さを昇順に並べます. に配列された小さな要素の最初の2つの要素の和が最後の要素より大きい場合?「OK」非「NO」の3つの演算子からなる
準備コードはほとんど異なる方法で解読された.
エッジ全体の長さ-最大エッジの長さの減算値を、エッジ全体の長さから2つのエッジの長さを減算した値と再比較します.
方法 (1打12把==学生12名時1打)!
13なら.12(1ダース)+1ダース、1ダース少なくても2ダース必要です.
プール)
宣言変数0個をの追加値で割り当てます. 反復文,初期値)はi=1を+1増加させ,nまでの数字を繰り返し増加させる.
与えられた値:9人の矮人身長:[20,7,23,19,10,15,25,8,13]
アプローチ方法)7人の矮人の身長は100なので、2人の矮人の身長を出すだけです.
プール)のすべてのジュニアの身長を求めるために、reduceですべての配列要素の累積値を求めます. 双砲口は2名の要素のジュニアのすべての情況の鍵を調べて、 の累積値のうち、この2人のジュニアの身長の減算値が100の場合、 この2つの要素=>arr.splice(i,1)、arr.splice(j-1,1)を配列から除去する. は、2つの要素が欠けている配列を出力します. パッチ(index,el):このメソッドは、作成時にindexの1番目の要素を削除します!->覚えておいて
function solution2(arr) {
// 배열을 인자로 넘겨줘야하므로, ...arr 로 배열의 요소를 풀어서 담아준다.
return Math.min(...arr);
}
console.log(solution2([5, 7, 1, 3, 2, 9, 11]); // 1
function solution2(arr) {
// [1, 2, 3, 5, 7, 9, 11][0] === arr[0] => 1
return arr.sort((a,b) => a - b)[0];
}
console.log(solution2([5, 7, 1, 3, 2, 9, 11])); //1
質問2:長さの異なるA、B、Cの長さが3本あり、3本の棒は三角形にして「OK」を出力し、できなければ「NO」を出力します.方法:三辺(三辺)三角形にならない条件と三角形になれる条件を考える
条件:3つのエッジの長さがある場合、最長エッジの長さは2つのエッジの長さの和より小さくなければなりません.
三角形の成立条件
プール)
準備コードはほとんど異なる方法で解読された.
エッジ全体の長さ-最大エッジの長さの減算値を、エッジ全体の長さから2つのエッジの長さを減算した値と再比較します.
// 내 코드
function solution(a, b, c) {
let arr = [a,b,c].sort((a,b) => a - b);
return arr[2] < arr[0] + arr[1] ? "OK" : "NO"
}
console.log(solution(33, 30, 50)); // OK
// if문으로 쓴다면? 이런 방식이다.
function solution(a, b, c) {
let arr = [a,b,c].sort((a,b) => a - b);
if (arr[2] < arr[0] + arr[1]) {
return "OK"
} else {
return "NO"
}
}
console.log(solution(33, 30, 50));
質問3:n人の学生に鉛筆を1本ずつ配るのにどれだけ打つ必要があるか.(1ダース=12袋/学生数<=1000名)方法
13なら.12(1ダース)+1ダース、1ダース少なくても2ダース必要です.
풀이)
1. 12자루가 1다스니깐, 학생수 n / 12로 나눠서 다스의 개수를 구한다.
2. 이때 소숫점( 자루 )가 나올경우를 생각하여 Math메소드를 사용하여 올림을 해준다.
(소숫점있을 시 다스 +1 한개 늘어남)
function solution(n) {
return Math.ceil(n / 12);
//(n / 12) => 178/12 => 14.833333333333334 // 소수점이 나올경우 !
// Math.ceil() => 15가 된다.
}
console.log(solution(178));
質問4:1から自然数Nまでの和プール)
宣言変数0個を
function solution(n){
let result=0;
for(let i = 1; i <= n; i++){
// result = result + i;
result += i;
}
return result;
}
console.log(solution(5)) // 15
質問5:9人が自分がジュニアだと言った.本物の7人の小人の身長の和は100だそうです.本物のジュニアを見つけて、7人のジュニアの身長をリストします**与えられた値:9人の矮人身長:[20,7,23,19,10,15,25,8,13]
アプローチ方法)7人の矮人の身長は100なので、2人の矮人の身長を出すだけです.
function solution(arr){
let sum = arr.reduce((acc,cur)=> acc + cur,0);;
for (let i = 0; i < arr.length; i++) {
for (let j = i + 1; j < arr.length; j++) {
if((sum - (arr[i] + arr[j])) === 100) {
console.log(arr); //[20, 7, 23, 19, 10, 15, 25, 8, 13] // 15, 25 가 제거되는 상황
arr.splice(i, 1); //인덱스(i)번째 요소 1개 제거
console.log(arr); // [20, 7, 23, 19, 10, 25, 8, 13]
arr.splice(j-1, 1); // 15가 제거되어 15의 인덱스가 6 -> 5로 바뀜
// 인덱스 i번째 요소가 제거되어서 전체적인 베열이 1 인덱스씩 당겨지므로 -1 을 해야 삭제되길 원하는 요소가 삭제된다.
}
}
}
return arr;
}
let arr=[20, 7, 23, 19, 10, 15, 25, 8, 13];
console.log(solution(arr)); // [20, 7, 23, 19, 10, 8, 13]
Reference
この問題について([アルゴリズム]JS-アレイ要素の最適値を求め、リストし、三角形を作成する), 我々は、より多くの情報をここで見つけました https://velog.io/@estell/algorithm-JS-배열요소-최솟값-구하기-나열하기-삼각형-성립조건テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol