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

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

※随時追加していきます

## 標準入出力の基本形
プログラミング入門学習コンテンツの[paizaラーニング](https://paiza.jp/works/js/primer/beginner-js3/8104)にはlinesで標準入力するやり方が説明されていますが、以下のやり方の方がわかりやすいと思います。

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

  // コードを入れる

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

main(require("fs").readFileSync("/dev/stdin", "utf8"));
```
inputの中に標準入力の値が入っています。
最後にconsole.log( )で出力するだけです。

## １文字パターン

#### 入力

```
a
```

#### 入力例
```
17
```

#### 入出力例
```javascript
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
```

#### 入出力例
```javascript
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
```

#### 入出力例
```javascript
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
```

#### 入出力例
```javascript
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
```

#### 入出力例
```javascript
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
```

#### 入出力例
```javascript
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
```

#### 入出力例
```javascript
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
```

#### 入出力例
```javascript
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"));
```