第90回【JavaScript】単純な入出力、複数行にわたる出力、複数行にわたる入力、入力の配列による保持
現在取り組んでいるのは、paiza ラーニング問題集「Cランクレベルアップメニュー」になります。
はじめに
猫とキャンプと野球観戦と AWS が大好きな旦那、LeoSaki です。モフモフしたい。
JavaScript をゼロから勉強してみよう、のコーナー 90 回目です。
無性に、何か新しいコト(アーキテクチャ)に挑戦してみたい、と思うことがあります。それは、今までやってきたことについて調べ直しているときに、天啓のように降り注いでくるものです。このやり方知らんかった、こんなやり方があったんか、まぁ、無知を素敵に言い換えただけですけれど。
それでは、今日も頑張ってみようと思います。
単純な入出力 (paizaランク D 相当)
文字列 s が与えられるので s をそのまま出力してください。
入力される値
s
文字列 s が 1 行で与えられます。
入力値最終行の末尾に改行が1つ入ります。
期待する出力
入力された文字列をそのまま出力してください。
s
また、末尾に改行を入れ、余計な文字、空行を含んではいけません。
すべてのテストケースにおいて、以下の条件をみたします。
・s は数字または大文字・小文字のアルファベットからなる長さ 1 以上 10 以下の文字列
入力例
paiza
出力例
paiza
右から左へ受け流すだけ。
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 s = lines[0];
console.log(s);
});
Python
s = input()
print(s)
複数行にわたる出力 (paizaランク D 相当)
整数 n が与えられるので、 n 回、改行区切りで paiza と出力してください。
入力される値
n
整数 n が 1 行で与えられます。
入力値最終行の末尾に改行が1つ入ります。
期待する出力
n 回 paiza と改行区切りで出力してください。
paiza
...
paiza
また、末尾に改行を入れ、余計な文字、空行を含んではいけません。
すべてのテストケースにおいて、以下の条件をみたします。
・1 ≦ n ≦ 50
入力例
2
出力例
paiza
paiza
n の最大値は 50 らしい。その文字列を見ると、何かが崩壊しそうになるかもしれない。
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]);
for (let i = 0; i < n; i++) {
console.log('paiza');
}
});
Python
n = int(input())
for _ in range(n):
print('paiza')
複数行にわたる入力 (paizaランク D 相当)
整数 n と n 個の整数 a_1, …, a_n が改行区切りで与えられるので、 a_1, …, a_n を与えられた順に、改行区切りで出力してください。
入力される値
n
a_1
...
a_n
1 行目には整数 n が与えられ、2 行目から (n+1) 行目にかけては n 個の整数 a_1, …, a_n が改行区切りで与えられます。
入力値最終行の末尾に改行が1つ入ります。
期待する出力
a_1, …, a_n を入力された順に改行区切りで出力してください。
a_1
...
a_n
また、末尾に改行を入れ、余計な文字、空行を含んではいけません。
すべてのテストケースにおいて、以下の条件をみたします。
・1 ≦ n ≦ 50
・各 a_i(1 ≦ i ≦ n)について 1 ≦ a_i ≦ 50
入力例
2
1
2
出力例
1
2
配列に入れろとか言われてないし、そのまま出力でいいでしょうか。
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]);
for (let i = 1; i <= n; i++) {
console.log(lines[i]);
}
});
Python
n = int(input())
for _ in range(n):
a = input()
print(a)
入力の配列による保持 (paizaランク D 相当)
整数 n と n 個の数 a_1, …, a_n が改行区切りで与えられます。与えられた a_1, …, a_n の中で最も大きい数を出力してください。
入力される値
n
a_1
...
a_n
1 行目には整数 n が与えられ、 2 行目から (n + 1) 行目にかけては n 個の整数 a_1, …, a_n が改行区切りで与えられます。
入力値最終行の末尾に改行が1つ入ります。
期待する出力
a_1, …, a_n の中で最も大きい数を出力してください。末尾に改行を入れ、余計な文字、空行を含んではいけません。
また、末尾に改行を入れ、余計な文字、空行を含んではいけません。
すべてのテストケースにおいて、以下の条件をみたします。
・1 ≦ n ≦ 50
・各 a_i(1 ≦ i ≦ n)について 1 ≦ a_i ≦ 50
入力例
2
4
7
出力例
2
4
7
解き方はたくさんありそうな気がします。
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 A = [];
for (let i = 1; i <= n; i++) {
A.push(Number(lines[i]));
}
console.log(A.reduce((a,b) => Math.max(a,b)));
});
Python
N = int(input())
A = [int(input()) for _ in range(N)]
print(max(A))
最後に
最後の問題は、模範解答では、一つずつ大小の判定を行っているようでしたが、タイトルが「配列による保持」なのに、おかしいなぁ、と思いました。というか、模範解答! これまで、模範解答がない手探り状態で解いてきたので、大変ありがたい!
まぁ、今のところあまり参考にはなってないんですけれど。この後の少し複雑な問題になったときが楽しみだなぁ。
引き続き、よろしくお願いいたします!
ディスカッション
コメント一覧
まだ、コメントがありません