第60回【JavaScript】傾斜配点
現在取り組んでいるのは、paiza ラーニング問題集「配列活用メニュー」になります。
はじめに
猫とキャンプと野球観戦と AWS が大好きな旦那、LeoSaki です。モフモフしたい。
JavaScript をゼロから勉強してみよう、のコーナー 60 回目です。
IT の業界に入ってから、どんなに忙しくても、毎日少しでも勉強する、という自分で決めたルールを頑なに守り続けて何年になりますか。面接のときに、勉強を続けないとついていけなくなりますよ、と伝えるようにしています。まぁ、ほとんどの人はやります、頑張ります、と答えますが、なかには勉強は嫌です、と答える人がいたりもします。
それでは、今日も頑張ってみようと思います。
傾斜配点 (paizaランク C 相当)
paiza の入社試験では 科目 1 〜 5 の 5 科目のテストが課せられており、それぞれの科目には重みが設定されています。受験者の得点は各科目の (とった点数) * (科目の重み) となります。 5 科目の得点の合計が最も高かった受験者の得点を求めてください。
入力される値
N
M_1 M_2 M_3 M_4 M_5
A_{1,1} A_{1,2} A_{1,3} A_{1,4} A_{1,5}
...
A_{N,1} A_{N,2} A_{N,3} A_{N,4} A_{N,5}
・1 行目では、受験者の人数を表す整数 N が与えられます。
・2 行目では、1 〜 5 の各科目の重みを表す整数 M_1 〜 M_5 が半角スペース区切りで与えられます。
・続く N 行のうち i 行目では i 番目の受験者が各科目でとった点数を表す整数 A_{i,1} 〜 A_{i,5} が半角スペース区切りで与えられます。
入力値最終行の末尾に改行が1つ入ります。
期待する出力
S
5 科目の得点の合計が最も高かった受験者の得点 S を 1 行で出力してください。
また、末尾に改行を入れ、余計な文字、空行を含んではいけません。
すべてのテストケースにおいて、以下の条件をみたします。
・1 ≦ N ≦ 100 (1 ≦ i ≦ N)
・0 ≦ A_{i,j}, M_j ≦ 100 (1 ≦ i ≦ N, 1 ≦ j ≦ 5)
入力例
5
1 2 3 4 5
1 2 3 4 5
6 7 8 9 0
10 11 12 13 14
10 10 10 10 10
100 2 4 6 48
出力例
380
急なレベルアップに戸惑っています。
JavaScript
process.stdin.resume();
process.stdin.setEncoding('utf8');
var lines = [];
var reader = require('readline').createInterface({
input: process.stdin,
output: process.stdout
});
reader.on('line', (line) => {
lines.push(line);
});
reader.on('close', () => {
const n = Number(lines[0]);
const M = lines[1].split(/\s/).map(Number);
let total = 0;
for (let i = 2; i < n+2; i++) {
const A = lines[i].split(/\s/).map(Number);
let temp = 0;
for (let j = 0; j < 5; j++) {
temp += A[j] * M[j];
}
if (temp > total) total = temp;
}
console.log(total);
});
Python
N = int(input())
M = [int(x) for x in input().split()]
total = 0
for _ in range(N):
A = [int(x) for x in input().split()]
temp = 0
for i in range(5):
temp += A[i] * M[i]
if temp > total:
total = temp
print(total)
最後に
map を利用して、もう少し簡潔に書くことが出来ないか試行錯誤していました。なんとか書くには書けたのですが、完全に理解出来ているわけではないので学習継続の方向です。
やってみて正解だった、でも、内容を理解していなければ意味がない気がしています。ちゃんと理解して納得するまでは、面倒でも学習を続ける必要があると考えている今日この頃。
引き続き、よろしくお願いいたします!
ディスカッション
コメント一覧
まだ、コメントがありません