AtCoder

ABC340 B問題(Append)を解く

AtCoder_ABC340_B

AtCoder が提供しているABC(AtCoder Beginner Contest)340 のB問題をC++とPythonで解いてみました。ABC340は、2024年2月10日21:00に実施されました。

AtCoder の紹介はこちらに、プログラミングの方針はこちらに記事があります。

B問題 Append(Difficulty : 43)

問題はリンク先をご覧ください。

ABC340 B問題 Append

可変配列を使います。AtCoder Problems による Difficulty は 43 でした。

解答案

C++ プログラム例(ABC340B)

Vector コンテナを使います。

  • クエリ1では、末尾に要素を追加します(15行目)。
  • クエリ2では、後ろからK番目の値を出力します(19行目)。a[a.size() – k] を出力します。

以下が、C++プログラムとなります。

#include <bits/stdc++.h>
using namespace std;

int main()
{
	int q;
	cin >> q;
	vector<int> a;
	for (int i = 0; i < q; ++i) {
		int type;
		cin >> type;
		if (type == 1) {
			int x;
			cin >> x;
			a.push_back(x);
		} else if (type == 2) {
			int k;
			cin >> k;
			cout << a[a.size() - k] << endl;
		}
	}

	return 0;
}

AC(Accepted=正しいプログラム)と判定されました。

Python プログラム例(ABC340B)

Python 版も基本的な考え方は同じです。クエリ2はすっきりと書けています。以下となります。

"""AtCoder Beginner Contest 340 B"""
q = int(input())
a = []
for i in range(q):
    query = list(map(int, input().split()))
    if query[0] == 1:
        a.append(query[1])
    elif query[0] == 2:
        print(a[-query[1]])

こちらも「AC」と判定されました。

最後に

要素を追加できるコンテナの使い方が学べる問題でした。

引き続き ABC の問題を紹介していきます。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA