第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))

最後に

最後の問題は、模範解答では、一つずつ大小の判定を行っているようでしたが、タイトルが「配列による保持」なのに、おかしいなぁ、と思いました。というか、模範解答! これまで、模範解答がない手探り状態で解いてきたので、大変ありがたい!

まぁ、今のところあまり参考にはなってないんですけれど。この後の少し複雑な問題になったときが楽しみだなぁ。

引き続き、よろしくお願いいたします!

Python の第90回はこちら