62
44

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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"));
62
44
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
62
44

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?