【Python】Atcoder Beginner Contest 250 C問題 解答

この記事は約2分で読めます。

 

C – Adjacent Swaps

方針

実際の入れ替え操作を行うリスト①に加えて、位置を記録するためのリスト②を作成する。

リスト①(A)の各要素は入れ替え操作が実際に行われる数字が格納されている。

リスト②(index)のn番目の要素はリスト①(A)における数字nの位置が格納されている。

先にリスト①(A)の要素を入れ替え、その後にリスト②(index)の要素を入れ替えている。

リスト①とリスト②が各ループの中で並びが一致することに違和感があるが、これは初めにリスト①(A)が1~nまで順番に並んでいることが理由。

標準入力によって1~nまでがバラバラの順番で与えられていた方がわかりやすかったかもしれない?

もし、Aがバラバラで与えられていたら・・・↓

入れ替え対象の数字を保存したリスト→A=[2,4,1,5,3]

入れ替え対象の数字の位置を保存したリスト→index=[3,1,5,2,4]

indexのi番目はAの各数字、indexのi番目の要素はAの各数字の位置を示す。

※indexの1番目はAの3番目、indexの2番目はAの1番目、indexの3番目はAの5番目

 

解答

コード+コメント

コードのみ

 

その他

解答・解説記事一覧

 

コメント