指定の位置への要素の追加 PHP編(paizaランク D 相当)をやってみた。
array_push関数だと末尾のみへの追加しかできないので、array_splice関数というものを使って実現した。
<?php
// 自分の得意な言語で
// Let's チャレンジ!!
$a = explode(' ', trim(fgets(STDIN)));
$ax = [];
for($i = 0; $i < $a[0]; $i++){
$ax[] = trim(fgets(STDIN));
}
array_splice($ax, $a[1], 0, $a[2]);
// output
for($i = 0; $i < count($ax); $i++){
echo $ax[$i]."\n";
}
?>
特に語ることもないが、記事としてあまりに寂しいのでもしarray_splice関数を使わない場合(言語によってはそういった関数がない場合も考えなくてはいけない場合)は、自分で結果配列を新規作成する必要がある、ということでいいのだろうか?
つまり、
(1)まず新配列を定義する。
(2)元の配列の要素を挿入する位置までを「前」として新配列に入れる。
(3)挿入する要素を新配列の末尾に入れる。
(4)元の配列の要素を挿入した位置から末尾までの要素を新配列にいれる。
ただし、これはあまり効率がいいやり方ではないので、例えば双方向リストのようなデータ構造の値を置き換えるだけで解決できたらスマートかも?と思うのだが、そのへんの内部処理について気を回さないのかもしれない。


コメント