[アルゴリズム]2 Dナビゲーション-スコアリング
6086 ワード
スコア
OX問題とは、正しいか間違っているかの2つの状況の答えがある問題を指す.複数のOX問題からなる試験において、連続して正解した場合、加算点を与えるため、以下の点数計算を行うことにした.1番の問題が正しければ1点です前の質問に対して、答えが間違っていれば、答えが正しい最初の質問は1点に計算されます.また、連続して質問に答えたら、2番目の問題は2点、3番目の問題は3点...K番目の問題はK点で計算します.間違った問題は0点だ.
例えば、下図に示すように、10個のOX問題のうち、答えが正しい問題は1、間違った問題は0、スコア計算は下表のように1+1+2+3+1+2=10となる.
試験問題の採点結果を出すときは、総点を計算するプログラムを作成してください.
■説明の入力
第1行は、問題の個数N(1≦N≦100)を与える.2行目は0または1で、N個の問題の採点結果を表す.0は問題の答えが間違っていることを示し、1は問題の答えが正しいことを示す.
■出力説明
1行目では、入力で与えられたスコア結果について、加算点を考慮した合計スコアを出力します.
■入力例1
10
1 0 1 1 1 0 0 1 1 0
■出力例1
10
説明する
function solution(arr) {
let count = 0;
let sum = 0;
for (x of arr) {
if (x === 1) {
count += 1;
sum += count;
} else count = 0;
}
return sum;
}
for문
は使いたくなかったのですが、結局使いました.他に方法が思いつかない...いずれにしても,正解がなければcountを0に初期化する手法を用いて解く.そして,正解があればcount値を1上げsumに蓄積する.講師の説明
function solution(arr){
let answer=0, cnt=0;
for(let x of arr){
if(x===1){
cnt++;
answer+=cnt;
}
else cnt=0;
}
return answer;
}
解けたら同じ接着剤だったのに….別の解釈
function solution(n, scores) {
let extraPoint = 0;
let cnt = 0;
for (let score of scores) {
score === 1 ? (extraPoint++, (cnt += extraPoint)) : (extraPoint = 0);
}
return cnt;
}
最初は삼항연산자
解答法に近く、1つ目の結果式で2行書く方法が分からなかったのでif문
を使用しました.アルゴリズムで問題を解いた後、必ず他の人の問題を見なければならない.どんなに簡単でも、私が解決した問題でも.括弧で囲んで、中に括弧をもう一つ書けばいい!Reference
この問題について([アルゴリズム]2 Dナビゲーション-スコアリング), 我々は、より多くの情報をここで見つけました https://velog.io/@shinwonse/알고리즘-2차원-탐색-점수계산テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol