どうもこんにちは、Megです。
今回はAtCoder Beginner Contest 217の解説をPythonで行っていきます。
A – Lexicographic Order
問題はこちら。
コードは以下です!自分の提出はこちら。
st_list = list(input().split())
arrange_list = sorted(st_list)
if arrange_list[0] == st_list[0]:
print('Yes')
else:
print('No')
コード解説
-
1行目
$S, T$2つの文字列を一つのリストで受け取ります。Ex) st_list = ['arc', 'agc']
-
3行目
でst_list内の語句を辞書順に並び替えたリストをarrange_listとします。sorted()
Ex) arrange_list = ['agc', 'arc']
sorted()
についての参考サイト
Pythonの並べ替えを使う
- 5~8行目
$S$が$T$よりも辞書順で小さい場合とは、すなわち、st_listとarrange_listの先頭の文字列が同一となるときです。
よってコードはarrange_list[0] == st_list[0]
を条件として書けます。
後は、Yes or Noをif else文で記述するだけです。
B – AtCoder Quiz
問題はこちら。
コードは以下です!自分の提出はこちら。
AtCoder_contest = ['ABC', 'ARC', 'AGC', 'AHC']
s_list = [input() for _ in range(3)]
ans = list(set(AtCoder_contest) - set(s_list))
print(ans[0])
コード解説
- 1行目
あらかじめ、$4$つのコンテストの文字列リストを用意しておきます。 -
3行目
$S_1, S_2, S_3$は3行で与えられているので内包表記でs_listに一つずつ格納していきます。 -
4行目
set()
を用いて集合演算を行います。今回はAtCoder_contestリストからs_listに含まれていないものを出力するので-演算子を使います。
後の出力のために、リストに答えを格納しておきます。

-
5行目
最後はprint文で出力します。
C – Inverse of Permutation
問題はこちら。
コードは以下です!自分の提出はこちら。
n =int(input())
q_list = [0]*n
p_list = list(map(int, input().split()))
for i in range(n):
q_list[p_list[i]-1] = i+1
print(*q_list)
コード解説
- 1行目
$N$を整数型で受け取ります。 - 2行目
順列$Q$を出力するため、全ての要素が$0$である長さ$N$のリストを用意します。
参考にしたサイト

Pythonのリスト(配列)を任意の値・要素数で初期化 | note.nkmk.me
Pythonのリスト(配列)を任意の値・要素数で初期化する方法を説明する。空リストを作成 任意の値・要素数で初期化 2次元配列(リストのリスト)を初期化する際の注意 タプル、配列(array型)の場合 NumPy配列numpy.ndarrayの初期化については以下の記事を参照。関連記事: NumPyで全要素を同じ値で初...
- 4行目
順列$P$の入力をリストで受け取ります。 - 6~7行目

p_listにより、q_list上で$i$の数字が入る場所を指定しているという構造です。これに気を付けて条件式に書き下すと7行目のようになります。
参考にしたサイト

Pythonで変数やリストの値を入れ替え(交換・並べ替え) | note.nkmk.me
Pythonでは値の入れ替え(交換、スワップ)が簡単にできる。変数の値を入れ替えたり、リストの要素の値を入れ替えて並べ替えたりすることが可能。以下のように書ける。tempみたいな一時的な変数を用意する必要がなく、非常にスマート。同様に複数の変数への値の代入を一行で書ける。関連記事: Pythonで複数の変数に複数の値....
- 9行目
q_listの要素を空白を開けながら全て出力するには、出力したい任意のリストの前に*をつけるだけで良いです。
参考にしたサイト

リストの中身を空白であけて並べて簡潔に出力したいです。
### 前提・実現したいこと
リストがあるとき、空白で文字の間を空けて
a b c ... n
というように出力したいのですが
以下の方法より
D – Cutting Woods
問題はこちら。
誠意記事作成中です。
E – Sorting Queries
問題はこちら。
誠意記事作成中です。
F – Make Pair
問題はこちら。
誠意記事作成中です。
G – Groups
問題はこちら。
誠意記事作成中です。
H – Snuketoon
問題はこちら。
誠意記事作成中です。