0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

神経衰弱を解くために:part4

Posted at

今回は paizaの 「神経衰弱を解くために:part4」の問題に挑戦!


問題概要

  • 場に並んでいるカードの配置(H × W の表)と プレイヤー人数 N が与えられる。

  • 今の 手番のプレイヤー P と、
    そのプレイヤーがめくった 2枚のカードの位置 (a, b), (A, B) が入力される。

  • 判定することは2つ:

    • めくったカードの 数字が同じかどうか(YES/NO)。
    • 次に手番となるプレイヤーの番号。
      • 同じ → プレイヤーは変わらず P のまま。
      • 異なる → 次のプレイヤーに交代(プレイヤー番号は 1〜N で循環する)。

〇 出力

  • 1行目 → “YES” または “NO
  • 2行目 → 次の手番プレイヤー番号

〇 条件

  • 盤面のサイズは最大 13×13、カード総数は52以下。
  • 1〜13 の数字でカードが表され、同じ数字は必ずペア(2枚 or 4枚)。
  • プレイヤー番号は 1〜N の範囲で循環する。
  • (a, b) ≠ (A, B) (同じカードを2回めくることはない)。



入力例:

4 3 2  // H W N
6 6 13
13 5 13
6 3 13
3 6 5
1        // P
4 3 4 1

出力例:

NO
2






✅OK例:

const rl = require('readline').createInterface({ input:process.stdin });

const lines = [];

rl.on('line', (input) => lines.push(input));

rl.on('close', () => {
    const [H, W, N] = lines[0].split(' ').map(Number);
    const cardsGrid = lines.slice(1, H+1).map(line => line.split(' ').map(Number));
    const P = Number(lines[H+1])
    const [a, b, A, B] = lines[H+2].split(' ').map(Number);
    
    if (cardsGrid[a-1][b-1] === cardsGrid[A-1][B-1]) {
        console.log('YES');
        console.log(P);
    } else {
        console.log('NO');
        console.log((P % N) + 1);
    }
});

入力の受け取り準備

  • readline を使って標準入力からデータを lines 配列に格納。

入力データの分解

  • 1行目から H, W, N(縦、横、プレイヤー数)を取得。
  • 次の H 行からトランプの配置を2次元配列 cardsGrid に格納。
  • その次の行から手番のプレイヤー番号 P を取得。
  • さらに次の行から、めくられた2枚のカードの座標 (a, b), (A, B) を取得。

カードの比較

  • cardsGrid[a-1][b-1]cardsGrid[A-1][B-1] を比較。
  • 同じ数字なら → "YES" を出力し、プレイヤー番号 P をそのまま出力。
  • 異なる数字なら → "NO" を出力し、次のプレイヤー番号 (P % N) + 1 を出力。

次のプレイヤー計算

  • P % N + 1 にすることで、プレイヤー番号を 1〜N で循環させる。
  • 例: N=3, P=3 → 次は (3 % 3)+1 = 1 となり、1番のプレイヤーに戻る。






📝まとめ

  • 2次元配列の座標アクセスに注意(入力は1始まりなので、プログラム上では -1 して扱う)。

  • 条件分岐:

    • 数字一致 → YES, プレイヤー継続
    • 不一致 → NO, 次プレイヤー (P % N) + 1
  • 循環処理:「最後のプレイヤーの次は1番に戻す」という %(剰余)を活用。




僕の失敗談(´;ω;`)と解決法🐈

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?