フルナビゲーション
あなたが方法を考え出せない時、最初からすべてをします!
本当の答えを推測できます.
三七二十一にかかわらず、問題を解きながら考えましょう.
N個の自然数を入力すると,自然数毎の桁数の和を求め,プログラム出力最大の自然数を記述する.数字の桁数の和が同じであれば、元の数字の大きい数字を答えます.235と1234が同時に答えになる場合は、1234を答えとして出力する.
■説明の入力
1行目は自然数の個数N(3<=N<=100)を与え、2行目はN個の自然数を与える.各自然数の大きさは1000000を超えない.
■出力説明
出力ビット数の和の最大自然数.
■入力例
[128, 460, 603, 40, 521, 137, 123]
■出力例
137
上の問題は、イキントリかその方法が通じないことです.
完全検索で答えを特定しなければなりません
各ビット数を加算する方法は、10で割った残りの部分を加算し続けることです.
あるいは
組み込み関数を使用して配列内の要素を配列に変換し、並べ替えます.!
組み込み関数の使用
N個の自然数を入力した場合は、プログラムを作成し、各自然数を反転した後、反転数が少数の場合は、その数値を出力します.たとえば、32を23に反転し、23を少数にします.では出力23.しかし、910をひっくり返すと19にデジタル化される.最初の位置から始まる連続ゼロを無視します.
■1行目に自然数の個数N(3<=N<=100)を与え、次の行にN個の自然数を与える.各自然数の大きさは100000を超えない.
■出力1行目の出力反転を示す小数点.出力順は入力順に出力されます.
■入力例
932 55 62 20 250 370 200 30 100
■出力例
123 2 73 2 3
なんとか数字をひっくり返す
10進数係数を10で割ると、作業位置は常に残ります.
もしそうなら、私たちは繰り返して前に送ることができます.
(または)内蔵関数を利用して配列を利用して反転する
反転した数字が少数であると判定し,結果配列に入れる.
少数か否かを判定する方法は、自分以外は少数である.
->判定方法は関数の作成です
組み込み関数の使用方法
ガイダンス
本当の答えを推測できます.
三七二十一にかかわらず、問題を解きながら考えましょう.
第一題
N個の自然数を入力すると,自然数毎の桁数の和を求め,プログラム出力最大の自然数を記述する.数字の桁数の和が同じであれば、元の数字の大きい数字を答えます.235と1234が同時に答えになる場合は、1234を答えとして出力する.
■説明の入力
1行目は自然数の個数N(3<=N<=100)を与え、2行目はN個の自然数を与える.各自然数の大きさは1000000を超えない.
■出力説明
出力ビット数の和の最大自然数.
■入力例
[128, 460, 603, 40, 521, 137, 123]
■出力例
137
上の問題は、イキントリかその方法が通じないことです.
完全検索で答えを特定しなければなりません
もんだいげんり
各ビット数を加算する方法は、10で割った残りの部分を加算し続けることです.
あるいは
組み込み関数を使用して配列内の要素を配列に変換し、並べ替えます.!
最初の正解コード
function solution(arr){
let answer
// 최대값을 비교 하기 위해 자바스크립트에서 가장 작은수를 지정한다.
let max=Number.MIN_SAFE_INTEGER;
for (let el of arr){
let sum = 0
let tmp = el;
// 각자리수 더하는 방법
// 나머지가 0이 되면 멈춘다.
while(tmp){
sum += (tmp % 10);
tmp = parseInt(tmp / 10);
}
// 더한 숫자를 비교하는 방법
if(sum > max){
max = sum;
// 진짜 원하는건 배열의 요소
answer = el;
// 값이 더한 값이 같을때는 요소의 숫자가 큰걸 리턴해라
} else if (sum === max){
if(el > answer) {
answer = el;
}
}
}
return answer;
}
2番目の正解コード
組み込み関数の使用
function solution(arr){
let answer
// 최대값을 비교 하기 위해 자바스크립트에서 가장 작은수를 지정한다.
let max=Number.MIN_SAFE_INTEGER;
for (let el of arr){
let sum = el.toString().split('').reduce((acc,cur) => acc + Number(cur),0);
// 더한 숫자를 비교하는 방법
if(sum > max){
max = sum;
// 진짜 원하는건 배열의 요소
answer = el;
// 값이 더한 값이 같을때는 요소의 숫자가 큰걸 리턴해라
} else if (sum === max){
if(el > answer) {
answer = el;
}
}
}
return answer;
}
第二題
N個の自然数を入力した場合は、プログラムを作成し、各自然数を反転した後、反転数が少数の場合は、その数値を出力します.たとえば、32を23に反転し、23を少数にします.では出力23.しかし、910をひっくり返すと19にデジタル化される.最初の位置から始まる連続ゼロを無視します.
■1行目に自然数の個数N(3<=N<=100)を与え、次の行にN個の自然数を与える.各自然数の大きさは100000を超えない.
■出力1行目の出力反転を示す小数点.出力順は入力順に出力されます.
■入力例
932 55 62 20 250 370 200 30 100
■出力例
123 2 73 2 3
考えてみましょう。
なんとか数字をひっくり返す
10進数係数を10で割ると、作業位置は常に残ります.
もしそうなら、私たちは繰り返して前に送ることができます.
(または)内蔵関数を利用して配列を利用して反転する
反転した数字が少数であると判定し,結果配列に入れる.
少数か否かを判定する方法は、自分以外は少数である.
->判定方法は関数の作成です
最初の正解コード
function isPrime(num){
if(num === 1) return false;
for(let i = 2; i <= parseInt(Math.sqrt(num)) ; i++) {
if(num % i === 0) return false;
}
return true;
}
function solution(arr){
let answer = [];
for(let el of arr){
let result = 0;
while(el){
let t = el % 10;
result = result * 10 + t
el = parseInt(el / 10)
}
if(isPrime(result)) answer.push(result);
}
return answer;
}
2番目の正解コード
組み込み関数の使用方法
function isPrime(num){
if(num === 1) return false;
for(let i = 2; i <= parseInt(Math.sqrt(num)) ; i++) {
if(num % i === 0) return false;
}
return true;
}
function solution(arr){
let answer = [];
for(let el of arr){
let result = Number(el.toString().split('').reverse().join(''));
if(isPrime(result)) answer.push(result);
}
return answer;
}
第三題
ガイダンス
Reference
この問題について(フルナビゲーション), 我々は、より多くの情報をここで見つけました https://velog.io/@sud665/완전탐색テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol