ABC415の感想戦
目次
日本レジストリサービス(JPRS)プログラミングコンテスト2025#2(AtCoder Beginner Contest 415)に参加しましたが、今回はAとB問題しか正解できませんでした。ここでは、正解できたAとB問題の考え方を振り返ります。
Unsupported Type
数列が与えられるので、指定の値がその数列に含まれるかを答える問題。
考え方
単純にin
演算子を使って指定の値が数列に含まれるか判定した。
問題文が数列となっていたので、数値型に変換したが、String型として処理しても問題ない。
N = int(input())
A = list(map(int, input().split()))
X = int(input())
# also can handle as strings
# A = input().split()
# X = input()
if X in A:
print("Yes")
else:
print("No")
Pick Two
問題:B - Pick Two
荷物がある場所を示した一次元の地図が与えられます。ここから荷物のある場所を2ヶ所ずつ組みにして出力する問題。ただし荷物の数が偶数であることが保証されている。
考え方
簡単にするために、荷物のある場所をまず抽出します。そのうえで\(L_i\)と\(L_{i+1}\)を組みにして位置を出力します。ただし\(i = 0, 2, 4, \cdots\)とします。
技術的工夫
\(i = 0, 2, 4, \cdots\)の作成方法は、
for j in range(len(location/2))
i = j * 2
とする方法もありますが、range()
は、step値を指定できるので、より単純なこちらを使用しました。ただしこの時は、引数に
- 開始の値
- 最後の値(この値を以上になったらループ終了)
- step値
の3つの引数を指定する必要があります。
S = input()
location = []
for i in range(len(S)):
if S[i] == "#":
location.append(i+1)
for i in range(0, len(location), 2):
print(f"{location[i]},{location[i+1]}")