けたの和
9673 ワード
N個のビット数を入力すると、自然数ごとのビット数の和を求め、プログラム出力最大の自然数を作成することができます.数字の和が同じなら、元の数字の大きい数字を答えにします.235と1234が同時に答えになる場合は、1234を答えとして出力する.
[128, 460, 603, 40, 521, 137, 123]
137
次の方法は数学を利用して問題を解くことです.直感的ですが、関数からこのように値を導出する解法は滑らかではないと思います.
配列された各要素を
次の値と最大値を比較し、配列内の他の数値をフィルタする論理を記述しますが、この値とは数値です.
入力例
[128, 460, 603, 40, 521, 137, 123]
出力例
137
各位置の和をエクスポートして問題を解決する方法。
次の方法は数学を利用して問題を解くことです.直感的ですが、関数からこのように値を導出する解法は滑らかではないと思います.
function solution(arr) {
let answer, max=Number.MIN_SAFE_INTEGER;//max는 가장 작은 숫자로 초기화
arr.forEach(item => {
let sum = 0;
let temp = item;
while(temp) {
sum+=(temp % 10); // 나머지를 sum에 합치기
temp=Math.floor(temp/10); // 나머지의 몫 구하기
}
if (sum > max) {
max=sum;
answer=item;
}
else if (sum === max) {
if (item > answer) {
answer = item;
}
}
});
return answer;
};
const arr = [128, 460, 603, 40, 521, 137, 123];
console.log(solution(arr));
組み込み関数を使用して配列内の要素と
配列された各要素を
spilt()
メソッドに変換し、計算機関数を用いて和を求める.ただしこのときtoString()
では2次元配列の内部値は文字列であるため,和を求めるためには数字に変換しなければならない.次の値と最大値を比較し、配列内の他の数値をフィルタする論理を記述しますが、この値とは数値です.
function solution(arr) {
let answer, max=Number.MIN_SAFE_INTEGER;//max는 가장 작은 숫자로 초기화
arr.forEach(item => {
let sum = item.toString().split('').reduce((a, b) => a+Number(b), 0); // reduce로 요소를 sum으로 바꿔주기, 반드시 기억해두자. string 타입은 그대로 옆으로 붙는다.
if (sum > max) {
max=sum;
answer=item;
}
else if (sum === max) {
if (item > answer) {
answer = item;
}
}
});
return answer;
};
const arr = [128, 460, 603, 40, 521, 137, 123];
console.log(solution(arr));
Reference
この問題について(けたの和), 我々は、より多くの情報をここで見つけました https://velog.io/@yunsungyang-omc/알고리즘-자릿수의-합テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol