ABC415の感想戦

目次

日本レジストリサービス(JPRS)プログラミングコンテスト2025#2(AtCoder Beginner Contest 415)に参加しましたが、今回はAとB問題しか正解できませんでした。ここでは、正解できたAとB問題の考え方を振り返ります。


Unsupported Type

問題:A - 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値を指定できるので、より単純なこちらを使用しました。ただしこの時は、引数に

  1. 開始の値
  2. 最後の値(この値を以上になったらループ終了)
  3. 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]}")