2
1

以下に、【問題】に対応するPythonソースコードを作成し、解説を行います。

# 入力の読み込み
import sys
input = sys.stdin.read

# 入力データを一括で読み込む
data = input().split()

# NとMを取得
N = int(data[0])
M = int(data[1])

# N個の文字列とその価格を格納するリスト
strings = []
prices = []

# N個の文字列と価格をリストに分割して格納
index = 2
for _ in range(N):
    strings.append(data[index])
    prices.append(int(data[index + 1]))
    index += 2

# M個のクエリを格納するリスト
queries = []
for _ in range(M):
    queries.append(data[index])
    index += 1

# クエリごとに合計金額を計算して出力
for query in queries:
    total_price = 0
    for i in range(N):
        # クエリ文字列が対象文字列の先頭に一致するかを確認
        if strings[i].startswith(query):
            total_price += prices[i]
    print(total_price)

解説

このプログラムは、与えられた文字列と価格のリストから、特定のクエリ文字列で始まる文字列の総価格を計算します。

  1. 入力の読み込み:

    • sys.stdin.read を使用して、すべての入力を一度に読み込みます。
    • input().split() で読み込んだデータを空白で分割し、リスト data に格納します。
  2. NとMの取得:

    • NMdata の最初の2つの要素から取得します。
  3. 文字列と価格の格納:

    • stringsprices というリストを作成し、data のインデックスを使って、文字列とその価格をそれぞれのリストに格納します。
  4. クエリの格納:

    • queries というリストを作成し、data のインデックスを使って、クエリ文字列を格納します。
  5. クエリごとに合計金額を計算:

    • 各クエリに対して、strings リストの各文字列がそのクエリ文字列で始まるかを確認します。
    • 一致する場合、その文字列の価格を合計金額に加算します。
    • クエリごとの合計金額を出力します。

実行例

以下は、入力例1の結果を示す実行例です:

# 入力例1
6 5
bcac 3
abcd 14
abccjg 92
bcaddgie 2
abcd 6
cb 200
b
a
abcd
gagioheo
cb

出力結果は以下の通りです:

5
112
20
0
200

このプログラムは、各クエリに対して、対応する文字列の総価格を計算し、出力します。入力のサイズが最大10,000であるため、パフォーマンスを考慮してシンプルなループを使用しています。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1