公式

A - Triple Four 解説 by sounansya


AtCoder をはじめたばかりで何をしたらよいか分からない方は、まずは practice contest の問題A「Welcome to AtCoder」を解いてみてください。基本的な入出力の方法が載っています。
また、プログラミングコンテストの問題に慣れていない方は、AtCoder Beginners Selection の問題をいくつか解いてみることをおすすめします。


まず、「より厳密は、」以降に書かれている「 \(1\) 以上 \(N-2\) 以下の整数 \(i\) であって、 \(A_i=A_{i+1}=A_{i+2}\) を満たすものが存在するか判定」することを考えます。

多くのプログラミング言語は 0-indexed 、つまり配列で \(A\) を持ったときの先頭の項が \(A[1]\) ではなく \(A[0]\) であるので、この条件はプログラムで書く際には「 \(0\) 以上 \(N-2\) 未満の整数 \(i\) であって、 \(A_i=A_{i+1}=A_{i+2}\) を満たすものが存在するか判定」することになります。

この判定は for 文を用いて行うことができます。

実際にプログラムを作成する方法についてはいくつか方法がありますが、例えば for 文で \(i\) を順に探索していく際に

  • 条件を満たす \(i\) が見つかった時点で Yes を出力し、プログラムを終了する。 for 文が終わった段階でプログラムが終了していないということは答えは No なので、 No を出力する。
  • 関数・メソッドとして判定部分を実装する。そのような \(i\) が見つかった時点で Yes (または True など Yes に相当するもの) を返す。for 文が終わった段階で関数内の処理が続いているということは答えは No なので、 No (または False など No に相当するもの) を返す。

などの方法が簡潔でプログラムも短くなります。

以下はそれぞれの方法でプログラムを書いた場合の C++・Python のサンプルコードです。

実装例(C++)

#include <bits/stdc++.h>
using namespace std;
int main() {
	int n;
	cin >> n;
	vector<int> a(n);
	for (int i = 0; i < n; i++) {
		cin >> a[i];
	}
	for (int i = 0; i < n - 2; i++) {
		if (a[i] == a[i + 1] && a[i + 1] == a[i + 2]) {
			cout << "Yes" << endl;
			return 0;
		}
	}
	cout << "No" << endl;
	return 0;
}

実装例(Python)

n = int(input())
a = list(map(int, input().split()))
for i in range(n - 2):
    if a[i] == a[i + 1] == a[i + 2]:
        print("Yes")
        exit()
print("No")

実装例(C++)

#include <bits/stdc++.h>
using namespace std;
bool judge(int n, vector<int> a) {
	for (int i = 0; i < n - 2; i++) {
		if (a[i] == a[i + 1] && a[i + 1] == a[i + 2]) {
			return true;
		}
	}
	return false;
}
int main() {
	int n;
	cin >> n;
	vector<int> a(n);
	for (int i = 0; i < n; i++) {
		cin >> a[i];
	}
	if (judge(n, a)) {
		cout << "Yes" << endl;
	} else {
		cout << "No" << endl;
	}
	return 0;
}

実装例(Python)

def judge(n, a):
    for i in range(n - 2):
        if a[i] == a[i + 1] == a[i + 2]:
            return True
    return False


n = int(input())
a = list(map(int, input().split()))
if judge(n, a):
    print("Yes")
else:
    print("No")

投稿日時:
最終更新: