LoginSignup
56
39

More than 1 year has passed since last update.

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

Last updated at Posted at 2021-01-12

競技プログラミングの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"));
56
39
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
56
39