😊
AtCoder Beginner Contest 351 B - Spot the Difference 覚書き
PHPで解答を作成しています。
問題のリンク
解のポイント
PHPにおいて、文字列は文字配列として扱うことができます。つまり、文字列に対して添字を用いることで、その位置の文字にアクセスすることが可能です。
$gridAの配列の一例
Array
(
[0] => abc
[1] => def
[2] => ghi
)
例えば、$gridA[0][1] であれば
indexの0番目、1なので前から2番目の文字列をさす。
出力するときは
座標が1からスタートするため、それに合わせて補正するためプラス1を行う。
そのため
echo (
となる。
使用する関数/演算子
特段なし
全体コード
<?php
// 標準入力からNを読み込む
$N = intval(trim(fgets(STDIN)));
// グリッドAを読み込む
$gridA = [];
for ($i = 0; $i < $N; $i++) {
$gridA[] = trim(fgets(STDIN));
}
// グリッドBを読み込む
$gridB = [];
for ($i = 0; $i < $N; $i++) {
$gridB[] = trim(fgets(STDIN));
}
// 2つのグリッドを比較して異なる文字がある座標を見つける
for ($i = 0; $i < $N; $i++) {
for ($j = 0; $j < $N; $j++) {
if ($gridA[$i][$j] != $gridB[$i][$j]) {
// 1-indexedの座標で出力
echo ($i + 1) . " " . ($j + 1) . PHP_EOL;
break 2; // 異なる座標を見つけたらループを抜ける
}
}
}
Discussion