16
Help us understand the problem. What are the problem?

posted at

updated at

JavaScript標準入力まとめ【パターン別】

競技プログラミングのJavaScriptの標準入力がわかりにくかったのでまとめました。
大体以下のパターンかなと思います。

※随時追加していきます

標準入出力の基本形

プログラミング入門学習コンテンツのpaizaラーニングにはlinesで標準入力するやり方が説明されていますが、以下のやり方の方がわかりやすいと思います。

function main(input) {
  const a = input.split(" ");  // 入力

  // コードを入れる

  console.log(a); // 出力
}

main(require("fs").readFileSync("/dev/stdin", "utf8"));

inputの中に標準入力の値が入っています。
最後にconsole.log( )で出力するだけです。

1文字パターン

入力

a

入力例

17

入出力例

function main(input) {
  const args = input.split("\n");
  const n = parseInt(args, 10);
  console.log(args); // ["17"]
  console.log(n); // 17
}

main(require("fs").readFileSync("/dev/stdin", "utf8"));

連続文字パターン

入力

a b

入力例

3 4

入出力例

function main(input) {
  const args = input.split('\n');
  const nums = args[0].split(' ');
  const a = parseInt(nums[0], 10);
  const b = parseInt(nums[1], 10);

  console.log(args); // [ '3 4', '' ]
  console.log(nums); // [ '3', '4' ]
  console.log(a); // 3
  console.log(b); // 4
}

main(require('fs').readFileSync('/dev/stdin', 'utf8'));

連続文字パターン(〜n)

入力

n
A1 A2 ... An

入力例

4
2 1 4 8

入出力例

function main(input) {
  const args = input.split("\n");
  const n = parseInt(args[0], 10);
  const a = args[1].split(" ").map((n) => parseInt(n, 10));

  console.log(args); // [ '4', '2 1 4 8' ]
  console.log(n); // 4
  console.log(a); // [ 2, 1, 4, 8 ]
}

main(require("fs").readFileSync("/dev/stdin", "utf8"));

改行パターン

入力

A
B
C
X

入力例

5
1
0
20

入出力例

function main(input) {
  const args = input.split("\n");
  const A = parseInt(args[0], 10);
  const B = parseInt(args[1], 10);
  const C = parseInt(args[2], 10);
  const X = parseInt(args[3], 10);

  console.log(A); // 5
  console.log(B); // 1
  console.log(C); // 0
  console.log(X); // 20
}

main(require("fs").readFileSync("/dev/stdin", "utf8"));

改行パターン(〜n)

入力

n
A1
A2
:
An

入力例

4
10
8
8
6

入出力例

function main(input) {
  const args = input.split('\n');
  const N = args[0];
  const nums = args.slice(1, args.length - 1).map((n) => parseInt(n, 10));

  console.log(args); // ["4", "10", "8", "8", "6"]
  console.log(N); // 4
  console.log(nums); // [10, 8, 8, 6]
}

main(require('fs').readFileSync('/dev/stdin', 'utf8'));

行列パターン

入力

X1 Y1
X2 Y2
X3 Y3

入力例

3 1
6 1
7 2

入出力例

function main(input) {
  const args = input.split("\n");
  const nums = args.map((n) => n.split(" "));
  const x = nums.map((n) => parseInt(n[0], 10));
  const y = nums.map((n) => parseInt(n[1], 10));

  console.log(args); // [ '3 1', '6 1', '7 2' ]
  console.log(nums); // [ [ '3', '1' ], [ '6', '1' ], [ '7', '2' ] ]
  console.log(x); // [ 3, 6, 7 ]
  console.log(y); // [ 1, 1, 2 ]
}

main(require("fs").readFileSync("/dev/stdin", "utf8"));

行列パターン(〜n)

入力

n
T1 X1 Y1
T2 X2 Y2
:
Tn Xn Yn

入力例

2
3 1 2
6 1 1

入出力例

function main(input) {
  const args = input.split("\n");
  const N = parseInt(args[0], 10);
  const nums = args.slice(1, N + 1).map((n) => n.split(" "));
  const t = nums.map((n) => parseInt(n[0], 10));
  const x = nums.map((n) => parseInt(n[1], 10));
  const y = nums.map((n) => parseInt(n[2], 10));

  console.log(args); // [ '2', '3 1 2', '6 1 1' ]
  console.log(N); // 2
  console.log(nums); // [ [ '3', '1', '2' ], [ '6', '1', '1' ] ]
  console.log(t); // [ 3, 6 ]
  console.log(x); // [ 1, 1 ]
  console.log(y); // [ 2, 1 ]
}

main(require("fs").readFileSync("/dev/stdin", "utf8"));

行列パターン2(〜n)

入力

n x
V1 P1
:
Vn Pn

入力例

2 15
200 5
350 3

入出力例

function main(input) {
  const args = input.split("\n").map((n) => n.split(" "));
  const n = args[0][0];
  const x = args[0][1];
  const v = args.slice(1, n + 1).map((n) => parseInt(n[0], 10));
  const p = args.slice(1, n + 1).map((n) => parseInt(n[1], 10));

  console.log(args); // [ [ '2', '10' ], [ '200', '5' ], [ '350', '3' ] ]
  console.log(n); // 2
  console.log(x); // 15
  console.log(v); // [ 200, 350 ]
  console.log(p); // [ 5, 3 ]
}

main(require("fs").readFileSync("/dev/stdin", "utf8"));

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
16
Help us understand the problem. What are the problem?